(论文阅读)实例分割之YOLACT


与目标检测类似,实例分割也可分为两类:
①、two-stage:
即“先检测后分割”的方法,首先定位到目标物体的边框,然后在边框内分割目标物体,典型的代表是Mask R-CNN;
②、one-stage:
也就是检测分割同时做,一步到位,不墨迹,one-stage又可细分为两个流派,一个是anchor-based,另一个是anchor-free,也就是基于锚点和无锚点两流派,YOLACT是anchor-base方向的。

一、介绍

YOLACT:https://arxiv.org/abs/1904.02689

1.1、YOLACT介绍
YOLACT是2019年发表在ICCV上面的一个实时实例分割的模型,它主要是通过两个并行的子网络来实现实例分割的。
(1)Prediction Head分支生成各个anchor的类别置信度、位置回归参数以及mask的掩码系数;(2)Protonet分支生成一组原型mask。然后将原型mask和mask的掩码系数相乘,从而得到图片中每一个目标物体的mask。论文中还提出了一个新的NMS算法叫Fast-NMS,和传统的NMS算法相比只有轻微的精度损失,但是却大大提升了分割的速度。下面是它的网络结构。
在这里插入图片描述

二、详细内容

2.1、摘要

我们提出了一个简单的、全卷积的实时实例分割模型,在MS COCO上以33.5帧/秒的速度实现29.8 mAP,在单个Titan Xp上进行评估,这比以往任何竞争方法都快得多。而且,我们只在一个GPU上训练就得到了这个结果。我们通过将实例分割分成两个并行的子任务来实现这一点:
(1)生成一组原型掩码
(2)预测每个实例的掩码系数。
然后,我们通过线性组合原型和掩码系数来生成instancemaskswithlinelylycombine。我们发现,因为这个过程不依赖于重新池,这种方法生产非常高质量的口罩,并免费展示了时间稳定性。此外,我们分析了我们的原型的突发行为,并表明它们学会了以一种翻译变体的方式自己本地化实例,尽管是完全卷积的。最后,我们还提出了Fast NMS,它比标准NMS快12毫秒,但性能损失很小。

①、Backbone:
YOLACT模型输入的图像大小为550550,采用的Backbone为ResNet101,源代码中作者还使用了ResNet50和DarkNet53,ResNet的网络结构如图2所示。从图中可以看出,ResNet的卷积模块一共有5个从conv1,conv2_x到conv5_x,分别对应图1 YOLACT模型中的C1,C2到C5。YOLACT和SSD一样采用了多尺度的特征图, 从而可以检测到不同尺寸的物体,也就是在大的特征图上检测小的物体,在小的特征图上检测大的物体。
②、FPN:
图1中的P3-P7是FPN网络,它是由C5经过1个卷积层得到P5,然后对P5采用双线性插值使特征图扩大一倍,与经过卷积的C4相加得到P4,再采用同样的方法即可得到P3。再然后,对P5进行卷积和下采样得到P6,对P6进行同样的卷积和下采样得到P7,从而建立FPN网络。接下来是并行的操作。P3 被送入 Protonet,P3-P7 也被同时送到 Prediction Head 中。(采用FPN的好处就是模型学习到特征更丰富,更有利于分割不同大小的目标物体。)
③、Protonet 分支:
Protonet分支的网络结构如下图3所示,它是由由若干卷积层组成。其输入是 P3,其输出的mask维度是 138 * 138 * k (k=32),即 32 个 prototype mask,每个大小是 138 * 138。
在这里插入图片描述
④、Prediction Head分支:
Prediction Head分支的网络结构如图4所示,它是在RetinaNet的基础上改进得到的,采用共享卷积网络,从而可以提高速度,达到实时分割的目的。它的输入是 P3-P7 共五个特征图,每个特征图先生成anchor,每个像素点生成3个anchor,比例是 1:1、1:2和2:1。五个特征图的anchor基本边长分别是24、48、96、192和384。基本边长根据不同比例进行调整,确保 anchor 的面积相等。
为了便于理解,接下来以 P3 为例进行解释说明。假设P3的维度是 W3 * H3 * 256,那么它的anchor个数就是 a3 = W3 * H3 * 3。接下来 Prediction Head 为其生成三类输出:
类别置信度,由于 COCO 中共有 81 类(包括背景),所以其维度为 a3 * 81;
位置偏移,维度为 a3 * 4;
mask 置信度,维度为 a3 * 32。
对 P4-P7 进行的操作是相同的,最后将这些结果拼接起来,标记 a = a3 + a4 + a5 + a6 + a7,得到:
全部类别置信度,由于 COCO 中共有 81 类(包括背景),所以其维度为 a * 81;
全部位置偏移,维度为 a * 4;
全部 mask 置信度,维度为 a * 32。
⑤、Fast NMS:
通过Prediction Head分支网络后会得到很多anchor,可以在anchor的位置加上位置偏移得到RoI位置。由于RoI存在重叠,NMS 是常用的筛选算法,而本文提出了一种新的筛选算法叫Fast-NMS,在保证精度的前提下,减少了筛选的时间。
接下来,通过举例详细介绍Fast NMS算法。假设我们有5个RoI,对于 person这一类,按分类置信度由高到低排序得到b1、b2、b3、b4和 b5。接下来通过矩阵运算得到5个ROI相互之间的IoU,
可以看出这是一个对称矩阵,接下来将这个对称阵的对角线和下三角元素删掉,得到结果如下图6所示:
接下来对每一列取最大值,得到结果[-, 0.8, 0.6, 0.6, 0.4]。假设阈值为0.5,那么IoU超过0.5的RoI需要舍弃掉。根据刚才得到的结果,b2、b3和b4对应的列都超出了阈值,所以这三个RoI会舍去。这样做的原因是,由于每一个元素都是行号小于列号,而序号又是按分类置信度从高到低降序排列的,因此任一元素大于阈值,代表着这一列对应的 RoI 与一个比它置信度高的 RoI 过于重叠了,需要将它舍去。
⑥、Crop & Threshold
将通过Prediction Head分支得到的mask coefficient和Protonet分支得到的 prototype mask 做矩阵乘法,就可以得到图像中每一个目标物体的mask。Crop指的是将边界外的mask清零,训练阶段的边界是ground truth bounding box,评估阶段的边界是预测的bounding box。Threshold指的是以0.5为阈值对生成的 mask进行图像二值化处理。
⑦、Loss
YOLACT模型使用的loss是由边框的分类loss、边框的位置回归loss和mask的二分类交叉熵loss构成。
其中mask loss在计算时,因为mask的大小是138
138,需要先将原图的mask数据通过双线性插值缩小到这一尺寸。

三、总结

其精度低于MaskRcnn,但速度上有明显提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

血狼傲骨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值