Mask R-CNN:实例分割与检测算法 - Go语言中文社区

Mask R-CNN:实例分割与检测算法


论文摘自IEEE2017,由Kaiming HeGeorgia GkioxariPiotr DollarRoss Girshick(rbg)撰写。

摘要

目的:对象实例分割(区别出不同的对象)

提出:Mask R-CNN(扩展的FasterR-CNN)----通过在每个RoI处添加用于预测分割的mask(小的FCN),与用于分类和边界框回归的Faster R-CNN并行。

优点:很容易训练,易于实现,计算量小,运行速度为5 fps。

1 算法对比

(1)Faster R-CNN:使用RoIPool,并进行了量化操作,未进行像素分类

mask R-CNN:提出RoIAlign,无量化层,保留了精确的空间位置;作者为在类内预测二进制mask,并依赖于网络的RoI分类来预测类。

(2)与其他对象分割算法(先分割后识别)相比,作者采用分割与识别同时进行的思想。

(3)虽然FCIS算法也是通过一个全卷积网输出位置敏感的信息后,同时处理对象分类、回归框与mask,但相比mask R-CNN,它在overlapping方面错误率较多。

2 Mask R-CNN

(1)Faster R-CNN

a.用RPN得到候选的bbox;b.对每个bbox用RoIPool提取特征(Fast R-CNN),得到类别标签和bbox回归

(2)Mask R-CNN

a.用RPN得到候选的bbox;b.得到类别标签和bbox回归(Fast R-CNN),同时对每个RoI,得到二分类mask

定义损失函数:,其中,与Fast R-CNN中定义相同,为K个类别标签(二分类)的像素的mask(单像素sigmoid)(平均二分类交叉熵损失),每个mask为独立的。

(3)引入RoIAlign的原因:

a.mask的空间结构可通过FCN卷积后对应的像素级来解释,要求RoI特征(它们本身就是小特征映射)要很好地对齐,从而提出RoIAlign层;

b.RoIPool(用于从每个RoI提取小特征映射)首先,将浮点数RoI量化为特征图的离散粒度,然后,将该量化后的RoI细分为空间区间,最后,聚合特征(通常通过最大池化)。对于量化步骤:在连续坐标x上,计算[x / 16],其中16是stride,[·]为舍入计算;同样地,当区间为7×7时,在RoI和提取特征时引入角误差。但对精确像素的mask预测较差。

(4)RoIAlign:

目的:消除RoIPool的严格量化(避免对RoI边界或区间进行量化),将特征与输入对齐。

提出:使用x / 16替代[x / 16],使用双线性插值计算每个RoI中四个输入特征的精确值,并汇总结果(用最大值或平均值)

RoIWarp:忽略了对齐问题,采用双线性重采样。

(5)网络结构:

多种体系Mask R-CNN包括:(i)整个图像上特征提取的卷积架构(网络深度特征:ResNet-FPN),(ii)每个RoI的分类回归和mask预测。

对于整体卷积架构:

C4:Faster R-CNN+ResNets中第四个stage最后一个卷积层提取的特征(当其为ResNet-50时,命名为ResNet-50-C4);

FPN:Faster R-CNN+FPN(横向连接的自上而下架构);

对于mask预测(全卷积mask预测:用ResNet和FPN扩展Faster R-CNN):

ResNet-C4包括ResNet的第5个stage,计算复杂度较高。

FPN已包含res5,因此计算量较低。

3  评估与配置

3.1  评估详情看论文

3.2  实施细节

定义:与Fast R-CNN的RoI定义相同,若IOU与GT的交集大于0.5,则RoI为正,否则为负。:RoI与GT mask的交集,仅在RoI为正时定义。

输入:COCO trainval 35k,800像素,

型号:Nvidia Tesla M40 GPU,8个GPU(每个GPU处理2个图像)

训练:

(1)ResNet-101-FPN共44小时,速度 195 ms/image + 15 ms CPU调整为原始分辨率

与Fast R-CNN相同,采用以图像为中心进行训练,每个图像有N(N_{C4}=64N_{FPN}=512)个RoI,正负样本比为1:3。进行160k次迭代训练,学习率为0.02,在120k迭代时减少10,权重衰减0.0001,动量为0.9。其中RPN选用5个尺度和3种纵横比,和Mask R-CNN具有相同的主干,因此特征共享

(2)ResNet-50-FPN共32小时,速度 720/16 ms/image

(3)ResNet-101-C4,速度 ~400 ms/image

测试:在检测出的proposal(C4上=300,FPN=1000)上运行box预测分支,然后进行非最大抑制,从其中提取出最优的100个box进行mask预测。在class分支中已经预测出每个RoI的类别(共K种类别),然后mask分支将m×m浮点数mask输出,进而调整RoI大小,并进行二分类。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39467358/article/details/87856521
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-14 22:12:58
  • 阅读 ( 1399 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢