论文源址:https://arxiv.org/abs/1605.09410

tensorflow 代码:https://github.com/renmengye/rec-attend-public

摘要

卷积网络在像语义分割等结构预测任务中效果较好,但对于场景中不同实例个体分割仍存在一定的挑战性。实例分割有很多应用场景,比如,自动驾驶,图像捕捉,智能视频问答系统等。将大量的图形模型与低层次的可视化信息相结合用于实例分割。该文提出了一个端到端的带有注意力机制的RNN结构,来进行精细的实例分割。该网络顺序生成每个区域中的分割对象。

介绍

传统的语义分割无法指明图像中每个类别物体的个数。实例分割与之相比难度要大一些,因为实例分割需要区分相邻的,忽略的实例。在面向基于图像的机器理解的过程中进行实例分割也是十分重要的。实例分割的数据集有CityScapes。

对于实例分割,一种可行的方法是将其当作为一个结构输出问题。一个至关重要的问题是结构输出的维度。这个维度可以是目标物的个数乘以该物体的像素。标准的FCN网络很难将图像中的所有实例标记进行输出。进来有结合图形结构进行实例分割,但造成的结构过于复杂,同时需要消耗大量的时间,另外,这种方式无法进行端到端的训练。

像目标检测相似,重合也是实例分割中的一个主要挑战,为了自底向上的解决此问题,需要将两个互不相关的区域进行融合,对于小规模来说,这十分具有挑战性。使用NMS可以处理重合问题,但由于检测时会有大量的前景重叠,因此使用NMS可能会降低检测的效果。受此启发,本文使用一种递归方式来进行活动的NMS,对重合问题进行自上而下的分析。

一个相关问题是对一个图像中每个目标类别的实例个数进行统计。计数问题已经形成了一个特殊的任务设置,检测通过后接的回归进行实现,或者对一个计数误差标准进行区分度的学习。

为解决上述挑战,该文提出了一种基于RNN同时,利用注意力机制的新模型用于实例分割。该网络进行实例分割的同时,进行了计数操作。通过使用一个时间链,使一次只输出一个实例。执行动态的NMS,利用一个已经分割好的目标,用于辅助后续重合的目标物中。受人反复和专注的思想启发,使用基于RNN对一个实例进行分割。分割与计数进行联合训练可以使定义的循环网络的方程自动的进行停止操作。

 循环注意力机制

本文主要包含四个部分:(1)external memory:捕捉分割物体的状态(2)box proposal network:负责对感兴趣的目标物体进行定位。(3)segmentation network:对box中的物体进行像素级的分类(分割)。(4)scoring network :决定一个实例是否被找到,同时决定何时进行停止操作。网络结构如下

符号

输入的预处理:

预训练一个FCN网络,包含两部分,(1)由一系列带跳跃结构的翻卷积网络生成的1通道的像素级前景分割结果。(2)对每个目标物体生成一个角度的map。对于每一个前景像素,计算其相对于物体中心的相关角度,同时,将角度量化为8个不同的类别,生成8个通道,如下图。对角度的预测可以增强模型对目标物边界细节信息的编码。预训练模型的输入为三通道的彩色图像,输出为9通道(1通道的前景+8通道的角度)

  (1)External memory

为了在已分割的目标物决定下一个寻找的方向。该文结合external memory用于提供以前所有步骤得到的边界细节信息。该文假设完整的分割信息有助于网络分析目标物体重合的原因,同时,决定下一个感兴趣区域。feature map共计有10个通道,第一个通道用于添加基于先前操作产生的新的像素。其他通道用于保存输入图片。

  (2)Box network

该模块用于定位下一个感兴趣物体的位置。卷积网络输出一个大小为H'xW‘xL的feature map u_t,使用CNN对整副图像进行激活操作过于复杂,而且处理过程较为低效。简单的池化操作无法保存位置,该文选择动态池化操作来提取空间维度上的有用信息。通过增加一个权重,由于一次单向过程无法为上层网络提供足够的信息进而可以准确的将框画出,该文采用LSTM,每次输入一个维度为L的向量来观察不同位置的信息。所有位置的初始化为均匀分布。

将LSTM的隐层状态送入一个线性网络层中用于预测框的坐标。将框参数化为:

同时,尺度因子也会被线性层进行预测,用于将patch恢复至原图大小。

  子区域的提取

该文参考DRAW采用高斯插值核从输入x中提取一个HxW的patch。同时,用d_t与原图进行拼接。该模型输出一个矩形框定位不同形状的目标物体。索引i,j代表HxW维度的patch。a,b代表原始图像的位置。Fx,Fy为维度的矩阵,代表原图 (a,b)位置对提取的patch中(i,j)的作用大小。

为由box network预测得到的高斯插值核的均值与方差。

  (3)Segmentation network

分割网络首先利用卷积网络生成一个feature map v_t,然后应用一个基于跳跃结构的翻卷积网络来进行上采样将低分辨率恢复至全部尺寸的分割结果。经过一个全卷积层,得到一个patch-level的分割预测热图接着,利用计算得到的高斯核将预测的patch重新映射为原图,学习好的放大预测的框,常量抑制框外的像素,用sigmoid函数产生0至1的分割值。

  (4)Scoring network

为了得到图像中目标物体的个数,同时为了完成序列化处理过程,该文增加了一个scoring network。该文中的score 模型提取box network 和segmentation network中隐层状态的信息,来产生一个0至1的分数。

终止条件:该文整个模型的训练的序列长度为目标物体最大数量加1。进行inference时,当输出的score 降到0.5时就结束迭代过程。同时,损失函数有利于scores的降低。

 损失函数

总的损失为三个损失分支的和:(1)分割IoU loss Ly(2)box IoU loss Lb(3)分数交叉熵损失Ls 在实验中将损失相关系数固定为1。

(a)匹配IoU损失(mIoU)实例分割的一个主要挑战,是模型的预测输出与实例ground truth的匹配。该文通过最大化权重进行预测与ground truth的二分图匹配。通过匹配方法,可以使损失函数对ground-truth的实例不敏感。不同于直接惩罚假正与假反的分割方法,本文的匹配权重为一对分割结果IoU的分数。通过Hungarian算法进行计算得到matching。通过此算法并不需要反向传播来优化此网络。

(b)Soft box IoU loss:虽然可以根据生成的框的四个坐标中推出准确的IoU的值。但若两个框不重复,则其梯度就会消失。不利于基于梯度下降法的学习。该文提出了一个较宽松的box IoU。同样利用高斯核将一个patch重新映射原始的大小。对框的ground truth 进行padding,通过匹配预测得到的框与padding 后的ground truth进行匹配得到mIoU。匹配到的ground truth 在宽和高上进行缩放操作。

(c)monotonic score loss:为了满足可以自行停止迭代操作。网络首先应该输出更多确信的目标物。该文设计一个损失函数促进score的降低。score为1的迭代与先前的下界进行比较,而0的会与接下来score的上界进行比较。

训练过程

Booststrap training:box与segmentation网络以来彼此的输出来决定下一时间段的动作。针对这两个网络的本质的特点:该文提出了一个bootstrap 训练方法:先使用分割与box的ground truth对网络分开进行预训练。后期,将ground truth替换为模型预测的数值。

Scheduled sampling:为了平滑各个阶段之间输出的变化,提出了scheduled sampling。在网络的输入阶段,渐渐的将ground truth移除。在训练时,外部存储结构中的输入有一个随即开关,利用与ground truth 或者前阶段网络的输出中匹配最大的部分进行实例分割。在训练的结束阶段,整个模型完全依赖于来自前几步的输出。与预测过程相同。

实验

Reference

[1] S. Antol, A. Agrawal, J. Lu, M. Mitchell, D. Batra, C. L.Zitnick, and D. Parikh. VQA: Visual question answering. In ICCV, 2015. 1
      [2] M. Bai and R. Urtasun. Deep watershed transform for instance segmentation. CoRR, abs/1611.08303, 2016. 5
      [3] D. Banica and C. Sminchisescu. Second-order constrained parametric proposals and sequential search-based structured prediction for semantic segmentation in RGB-D images. In
CVPR, 2015. 5

论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)的更多相关文章

  1. 论文阅读笔记(十二)【CVPR2018】:Exploit the Unknown Gradually: One-Shot Video-Based Person Re-Identification by Stepwise Learning

    Introduction (1)Motivation: 大量标记数据成本过高,采用半监督的方式只标注一部分的行人,且采用单样本学习,每个行人只标注一个数据. (2)Method: 对没有标记的数据生成 ...

  2. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

  3. 论文阅读笔记四十二:Going deeper with convolutions (Inception V1 CVPR2014 )

    论文原址:https://arxiv.org/pdf/1409.4842.pdf 代码连接:https://github.com/titu1994/Inception-v4(包含v1,v2,v4)   ...

  4. 论文阅读笔记三十二:YOLOv3: An Incremental Improvement

    论文源址:https://pjreddie.com/media/files/papers/YOLOv3.pdf 代码:https://github.com/qqwweee/keras-yolo3 摘要 ...

  5. 论文阅读笔记六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

    论文原址:https://arxiv.org/abs/1811.07275 摘要 一个训练好的网络模型由于其模型捕捉的特征中存在大量的重叠,可以在不过多的降低其性能的条件下进行压缩剪枝.一些skip/ ...

  6. 论文阅读笔记六十五:Enhanced Deep Residual Networks for Single Image Super-Resolution(CVPR2017)

    论文原址:https://arxiv.org/abs/1707.02921 代码: https://github.com/LimBee/NTIRE2017 摘要 以DNN进行超分辨的研究比较流行,其中 ...

  7. 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)

    论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...

  8. 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification

    论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...

  9. 论文阅读笔记三十六:Mask R-CNN(CVPR2017)

    论文源址:https://arxiv.org/pdf/1703.06870.pdf 开源代码:https://github.com/matterport/Mask_RCNN 摘要 Mask R-CNN ...

随机推荐

  1. 51nod 1232 完美数

    题目思路:数位dp,若这个数能被每位的非0数整除,那么这个数一定可以被每一位数的lcm整除,lcm(1,2,3,4,5,6,7,8,9) = 2520,所以可以通过将这个数对2520取模来压缩空间,取 ...

  2. POJ 3253 Fence Repair (贪心)

    题意:将一块木板切成N块,长度分别为:a1,a2,……an,每次切割木板的开销为当前木板的长度.求出按照要求将木板切割完毕后的最小开销. 思路:比较奇特的贪心 每次切割都会将当前木板一分为二,可以按切 ...

  3. C/C++ assert()函数用法总结

    1. 简介 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行. 原型定义: #include <assert.h>void ass ...

  4. Jenkins远程构建

    首先在Jenkins上配置Job: 按照图片形式,仅需往对应的url发送请求即可 Shell如下: import json import urllib.parse,http.client def po ...

  5. mongoDB Liunx下安装及配置

    以下以ubuntu 16.04(64位)操作系统为例: 一.下载和安装 在ubuntu下安装mongodb可以使用 apt-get进行安装,也可以直接下载编译好的二进制文件进行安装.下面主要介绍使用二 ...

  6. Wireshark技巧-过滤规则和显示规则【转】

    转自:https://www.cnblogs.com/icez/p/3973873.html Wireshark是一个强大的网络协议分析软件,最重要的它是免费软件. 过滤规则 只抓取符合条件的包,在W ...

  7. LaTeX Error: Something's wrong--perhaps a missing \item

    使用Latex 引用参考文献,.bib文件是个很好的助手,创建后 1.第一步点击Latex编译,可以获得*.aux文件.*.dvi文件.*.log文件以及*.gz文件: 2.第二步点击Bibtex编译 ...

  8. C#编写COM组件

    1.新建一个类库项目 2.将Class1.cs改为我们想要的名字 问是否同时给类改名,确定 3.修改Properties目录下面的AssemblyInfo.cs ComVisible属性设置为True ...

  9. 缓存系列之三:redis安装及基本数据类型命令使用

    一:Redis是一个开源的key-value存储系统.与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串.哈希表.链表.集合.有序集合以及基于这些数据类型的相关操 ...

  10. spark-streaming集成Kafka处理实时数据

    在这篇文章里,我们模拟了一个场景,实时分析订单数据,统计实时收益. 场景模拟 我试图覆盖工程上最为常用的一个场景: 1)首先,向Kafka里实时的写入订单数据,JSON格式,包含订单ID-订单类型-订 ...