YOLACT: Real-time Instance Segmentation

介绍YOLACT,一种实时实例分割模型,基于单阶段检测算法增加分割功能,实现约30fps的速度,精度接近MSRCNN。创新点包括两步分割方法(what和where)及Fast NMS算法,显著提升速度与精度平衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

paper
https://arxiv.org/abs/1904.02689
git
https://github.com/dbolya/yolact
目的:
像maskrcnn->fastrcnn,在单阶段检测算法上增加分割。

0 效果

在这里插入图片描述
在这里插入图片描述

19年最新的CVPR,目前达到实时级别,~30fps。训练时只是用了一个GPU titanxp.
精度跟MS RCNN差的比较多,10左右。
同样精度时,比maskrcnn快3.8倍左右。

1 创新点

1 解决分割的新的分两步方法。

在单阶段识别基础上,将分割任务划分为两个子任务:what 和where.
where:在一张图上(并不像maskrcnn使用ROIPOOING带来质量损失)产生一系列prototypes,
what:预测每个实例预测掩膜mask的线性结合系数。(该方法能够自主的定位实例位置,同时这些mask类别上独立,因此可以在类间共享)
在这里插入图片描述
2.提出了Fast NMS
带来12ms的提速,以非常小的精度损失。

在这里插入图片描述

同时做了很多speed vs performance对比实验

  • backbone (resnet50,101,darknet53 ) 图像分辨率(400 550 700)

在这里插入图片描述

  • prototype数量
    在这里插入图片描述
  • 速度
    在这里插入图片描述在这里插入图片描述
    其中,fc-mask是掩膜输出使用fc层的模型,为了证明使用FCN网络的protonet作为掩膜预测的有效性(FCN具有空间特性,而fc适合输出cls和bbox系数)。

2 相关工作

实例分割也分为单阶段(6,22,4)和两阶段(MASK MASKSCORING ),间接方式一般先语义分割随后边界检测、像素聚类或学习形成实例掩膜,是多阶段往往包含大量的聚类过程。
而能达到实时性的往往效果较差。
Box2pix在 KITTI 、Cityscape数据集上能够达到35fps,11fps,但是在多类目标上的迁移性较差。
综上,mask 仍然很牛掰。

对于prototype,是文本和可视词这类文本处理的方法,利用稀疏性和位置先验。现在扩展到视觉领域,表征特征。(prototype的稀疏性是指??)
本文prototype不是针对整个数据集学习,而是对每个实例图片。

3 YOLACT

增加两个分支
1.使用全卷积网络产生原图尺寸的prototype masks ,并不依赖于某个实例。FCN可以有更好的空间相关性。
2.在检测网络上增加head,利用fc层为每个锚点预测mask系数向量,该向量对prototype空间中的实例(个人理解更像是被检测网络中挑出来的)进行编码。fc层能更好产生语义向量。

最后,对经过NMS筛选出来的实例通过线性组合两个分支生成掩膜。

3.1 prototype生成(protonet)

protonet= FCN -->k channels prototype masks
在这里插入图片描述
P3出来尺寸69*69*256(FPN最大尺寸最底层的输出,可以有更好的鲁棒性),两个3*3卷积后,upsample一倍(到原图的1/4,高分辨率可以提高掩膜质量和小目标检测效果),最后是1*1×k卷积接RELU(响应值不设边界,更有利用表征特征,比如指出背景位置)。
中间用的什么激活函数需要看code,看过的可以解答:

3.2 mask coefficients

在这里插入图片描述
在这里插入图片描述
经过FPN第Pi层输出,除了两个预测类别c和边界框4的分支,增加了mask系数预测分支k个,对应k个prototpyes.所以对于每个锚点预测c+4+k个值。Pi层共a个锚点。
为了保证非线性,需要能够减掉prototype。否则不能生成掩膜。(跟非线性什么关系??)
kmask 系数分支使用tanh,在没有非线性下输出更加稳定。?(跟谁比较?)

3.3 mask assembly

为了产生最终的mask,将二者结合。

在这里插入图片描述
利用次公式计算输出。
其中P是prototypes尺度HWk,
C是mask coefficients尺度n*k,其中n是n个实例结果(经过NMS和score thresh后的)
最后sigmod非线性输出。

此处线性组合保证简洁快速。

loss

cls 和box是SSD的
mask是二值交叉熵损失BCE(M,Mgt)

小目标crop

为保存在prototype中的小目标
测试时候用bbox裁剪,
训练时候真值框代替裁剪,并通过真值框区域划分Lmask??
(有小目标判断?怎么划分loss mask)

backbone

因为两个分支网络都难train,速度特征丰富度都要考虑、检测器在Retinanet思路上强调速度。
并没有使用retinanet的focal loss,而是用的OHEM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值