目标检测网络之 Mask R-CNN
Mask R-CNN
论文Mask R-CNN(ICCV 2017, Kaiming He,Georgia Gkioxari,Piotr Dollár,Ross Girshick, arXiv:1703.06870)
这篇论文提出了一个概念简单,灵活,通用的目标实例分割框架,能够同时检测目标并进行实例分割.在原Faster R-CNN基础上添加了object mask分支与原目标检测任务分支并列.速度大约5 fps.另外,Mask R-CNN也很容易扩展到其它的任务,比如人体姿态评估.
原Faster R-CNN输出两类值:class label和bounding-box offset.Mask R-CNN加入一路object mask分支输出.object mask要求比前两个具有更精细的空间布局特征.mask分支作用于Fast R-CNN,而RPN保持不变.
多任务损失定义为: L = Lcls+ Lbox+ Lmask.
Lcls+ Lbox保持不变,mask分支输出K个二值mask矩阵(每个像素经过sigmoid,限制到(0,1)区间,使用阈值0.5二值化),Lmask定义为平均交叉熵损失(average binary cross-entropy loss).这种Lmask定义方式与FCN等语义分割网络的损失定义有所不同.FCN使用per-pixel softmax 和 multinomial cross-entropy loss,会在类间产生竞争.
与FCN一样,采用转置卷积产生和原图中ROI大小相同的mask图.由于是像素到像素的映射,所以原来的fc层的特征向量的形式不能够被使用,并且RoIPool层缺失一些特征空间对应关系.因此作者提出了RoIPool层的改进版RoIAlign层.
RoIAlign
RoIPooling将大小不同的RoI对应的特征图划分为7×7的bins,每个bin采用max pooling,这样每个RoI都得到了相同尺度的特征.由于RoI对应到特征图上的区域时对坐标值做除法并取整([x/16]),并且划分7x7网格时也有除法操作.如果不能整除,带来不对齐的问题. 比如由于量化操作将2.4量化为2,那么这0.4的偏差放大到输入原图大小, 如放大32倍,那么偏差变为12.8像素. 偏差较大,对小目标的检测不利.
论文提出的RoIAlign避免了对RoI边界的处理,采用了双线性差值(采用Spatial transformer networks中的方法)计算每个RoI bin中若干个采样点(相比于RoIPooling,这里的采样点是浮点型)的特征值. 浮点型的采样点像素值的计算通过与该点最近邻的四个整数点的像素值差值得到.距离越近的值贡献越高,如下图所示:

线性差值与双线性差值
线性差值: 已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的 y 值:
\[
\begin{equation}
\frac{y - y_0}{x - x_0} = \frac{y_1 - y_0}{x_1 - x_0} \\
y = \frac{x_1 - x}{x_1 - x_0}y_0 +\frac{x - x_0}{x_1 - x_0}y_1
\end{equation}
\]
双线性插值: 相继在x和y两个方向上做线性差值. 如下图所示, 先在x方向上插值得到R1, R2, 再由R1, R2在y方向上插值得到点P的结果:

如果选择一个坐标系统使得 f 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为
\({\displaystyle f(x,y)\approx f(0,0)\,(1-x)(1-y)+f(1,0)\,x(1-y)+f(0,1)\,(1-x)y+f(1,1)xy}\)
实验结果也表明RoIAlign可以提高COCO数据集上的准确率,而在VOC上提升不明显,而COCO包含较多的小目标. 因此 RoIAlign 在COCO数据集上的提升比较明显,见下表:

作者与之前采用的RoIWarp方法(Instance-aware semantic segmen-
tation via multi-task network cascades. CVPR2016)做了对比.
RoIWarp是在RoIPool基础上用双线性差值,与RoIPool同样存在不对齐的问题,与RoIAlign的结果对比表明align在其中起到关键作用.

ROI Align 反向传播:
反向传播: ROI Pooling与max pooling类似,只在选择的点上进行梯度回传.
\[
\frac{\partial L}{\partial x_i}=\sum_r\sum_j [i=i^*(r,j)]\frac{\partial L}{\partial y_{rj}}
\]
\(x_i\) 代表池化前特征图上的像素点; \(y_{rj}\) 代表池化后的第r个候选区域的第j个点; \(i^*(r,j)\) 代表点 \(y_{rj}\) 像素值的来源.
ROI Align 中特征图上的像素点 \(i^*(r,j)\)被选择作为池化结果的计算时用到了相邻的若干个点(论文取4个点),因此梯度反向传播如下:
\[
{\partial L\over \partial x_i}=\sum_r\sum_j [d(i,i^*(r,j))<1](1-\Delta h)(1-\Delta w){\partial L\over \partial y_{rj}}
\]
Inference测试阶段
测试时只计算top-100的目标框对应的mask,每个目标框对应K个类别的mask.将目标框的分类类别(置信度最大的)对应的mask作为最终的结果. mask分支仅加重了原网络~20%的计算量.

在COCO数据集上的检测结果对比:

可以看出,仅替换RoIPool就在FPN的结果上提高了1%,使用Mask分支后又提高了约1%,加入Mask分支使检测任务的结果得以提升的原因可能是因为分割任务的训练使特征提取更好,毕竟数据集标签中多了mask这种更加详细的像素类别信息.
应用分析
制作mask标记可能比较费时费力,如果不需要实例分割功能的话,我们可以不使用mask分支,仅使用其提出的RoIAlign方法对原网络进行提升.
参考:
- PSROI-Pooling 源码
- 详解 ROI Align 的基本原理和实现细节: http://blog.leanote.com/post/afanti/b5f4f526490b
- 双线性插值: https://zh.wikipedia.org/wiki/%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC
目标检测网络之 Mask R-CNN的更多相关文章
- 目标检测网络之 R-FCN
R-FCN 原理 R-FCN作者指出在图片分类网络中具有平移不变性(translation invariance),而目标在图片中的位置也并不影响分类结果;但是检测网络对目标的位置比较敏感.因此Fas ...
- 目标检测网络之 YOLOv2
YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体. 每个格子预测B个bounding b ...
- 目标检测网络之 YOLOv3
本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...
- 使用Caffe完成图像目标检测 和 caffe 全卷积网络
一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报 ...
- CVPR2020:三维实例分割与目标检测
CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...
- 目标检测之R-CNN系列
Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...
- AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 目标检测-Faster R-CNN
[目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...
- 深度学习笔记之目标检测算法系列(包括RCNN、Fast RCNN、Faster RCNN和SSD)
不多说,直接上干货! 本文一系列目标检测算法:RCNN, Fast RCNN, Faster RCNN代表当下目标检测的前沿水平,在github都给出了基于Caffe的源码. • RCNN RCN ...
随机推荐
- [朴智妍][Lullaby]
歌词来源:http://music.163.com/#/song?id=484056971 作曲 : Bum/Sophiya/김용신 [作曲 : Bum/Sophiya/k/gi-myong-xin] ...
- DRBD详细解说及配置过程记录
一.DRBD介绍 DRBD(Distributed ReplicatedBlock Device)是一种基于软件的,无共享,分布式块设备复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等 ...
- sql 语句的先后执行顺序
例:查询语句中select from where group by having order by的执行顺序 一般以为会按照逻辑思维执行,为: 查询中用到的关键词主要包含六个,并且他们的顺序依次为 ...
- Leetcode——171.宝石与石头
水题: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符 ...
- Sprint会议计划
经过饭后的宿舍激烈会议之后...... 1.我们的MASTER是组员董大为 2.这次sprint的目标是四则运算系统 3.每天例会时间地点:每天晚饭后在宿舍 4.实现四则运算的基本功能前期已经完成得差 ...
- PAT 甲级 1130 Infix Expression
https://pintia.cn/problem-sets/994805342720868352/problems/994805347921805312 Given a syntax tree (b ...
- Install alipay支付宝安全控件 on firefox in linux
[root@rgqancy 下载]# ./aliedit.sh建议以非root账号安装支付宝安全控件请重启 firefox 使插件生效成功安装 支付宝安全控件请按任意键退出... what i ...
- jmeter(psot) 表单提交 注意项
Form表单提交:直接使用表单方式提交即可,此方式采取页面直接跳转的形式.用jmeter请求的时候,日志打印传的参数是空的.考虑到form提交和http的提交请求头可能是不一样的,所以优化了请求头: ...
- Vue的router使用
<div id="app"> <router-link to="/home">home</router-link> < ...
- ESXi去掉 SSH已经启用的警告信息
1. 在vCenter管理的机器里面 总是有几台服务器 提示 SSH启动连接 并且有黄色的警告信息 有时内存或者CPU报警的信息就看不到了.. 所以想着解决他,经过百度发现解决办法为: 选中host主 ...