YOLACT:史上最快的实例分割算法

YOLACT(you only look at coefficients)是一个端到端的全卷积实时实例分割模型,Yolact将实例分割分成了两个并行的子任务,即生成一组原型掩码(prototype masks)和每一个实例的掩码系数(mask coefficients)。之后将原型与掩码系数进行线性结合生成分割实例。
 
1、基本原理
YOLACT将实例分割的复杂任务分解为两个更简单的并行任务,可以将它们组合起来以形成最终的mask。第一个分支使用FCN生成一组不依赖于任何实例的图像大小的“原型mask”。第二种方法在对象检测分支上增加了一个额外的head,以预测每个anchor的“mask coefficients”向量,这些anchor编码原型空间中实例的表示形式。最后,对于在NMS中幸存的每个实例,通过线性组合这两个分支的工作为该实例构造一个mask。
YOLACT将问题分为两个平行的部分,即利用fc层和conv层,其中fc层善于产生语义向量,而conv层善于产生空间一致的mask,从而产生“mask系数”和“原型mask” 。然后,由于原型和mask系数可以独立计算,因此与backbone检测器相比,计算开销主要来自组装步骤,可以将其实现为单个矩阵乘法。通过这种方式,可以保持特征空间的空间连贯性,同时仍然是one-stage且快速。
 
 
2、网络结构
 
 
 
添加图片注释,不超过 140 字(可选)
 
Backbone:
预处理后的图片输入进 backbone 网络,YOLACT使用了 ResNet101。
 
FPN:
橙色的 P3-P7 是 FPN 网络。这个网络的生成是由 C5 经过一个卷积层得到 P5 开始的。接下来,对 P5 进行一次双线性插值将其放大,与经过卷积的 C4 相加得到 P4,同样的方法得到 P3。此外,还对 P5 进行了卷积得到 P6,对 P6 进行卷积得到 P7。
YOLACT注意到更深层的特征图能生成更鲁棒的 mask,而更大的 prototype mask 能确保最终的 mask 质量更高且更好地检测到小物体。又想特征深,又想特征图大,那就得使用 FPN 了。
接下来是并行的操作。P3 被送入 Protonet,P3-P7 也被同时送到 Prediction Head 中。
 
protonet:
Prototype 分支为整个图像预测k个原掩码。这里,该结构使用了FPN结构的P3层特征进行掩码提取。这是由于深层网络提取结果往往具有更鲁邦的特征,而高分辨率的特征图则包含的信息更多,可能会保留小目标。而P3层恰好满足这一需求。之后,直接使用FCN全卷积的结构提取对应的特征层.
事先存在K个原始掩膜,然后每一个掩膜都对应有一个权重系数c,最终的mask是他们的加权求和值。
 
 
 
添加图片注释,不超过 140 字(可选)
 
Prediction Head:
Prediction Head 在RetinaNet的基础上多回归了一个mask系数,输出预测框Bbox,类别信息conf以及掩码系数。利用此系数与Protonet中的mask线性组合。Yolact利用特征金字塔中的特征图(5个尺度)每个特征图的每个点都生成3个目标框.
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
该分割方法仍然是一种anchor-based的方法,在识别领域一个head通常只包含两个分支,分别是cls和reg即可完成对目标边界框的预测任务。而Yolact新增了一个Mask头,来对k层的原掩码分别计算其对应的权重。每个head共产生4+c+k个系数,即可完成对于各个实例掩码的处理。
FPN得到了5种不同尺度的特征图,分别预测'loc', 'conf', 'mask','proto'
  • 'box':每个anchorbox的预测偏移量,形状为(1,19248,4)
  • 'class':每个anchorbox的类别预测,形状为(1,19248,num_class)
  • 'mask':就是论文中指出的mask系数,形状为(1,9248,32)
  • 'proto': (1,138, 138,32)
  • 最终进行预测时,直接使用线性组合将掩码进行处理,并且最终使用sigmoid来生成最终的Mask。
 
 
添加图片注释,不超过 140 字(可选)
P 是prototypr mask, 维度是h*w*k. C是coefficient 维度是n*k.经过上面式子的计算就可以得到mask。
 
3、loss
loss 分三类:
类别置信度的 loss,使用 smooth L1;
位置偏移的 loss,使用 smooth L1;
mask loss,使用的是 pixel-wise 的二分类交叉熵。
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
4、fast nms
使用GPU加速来计算NMS.简单的说就是利用空间换时间。对C个类比生成C*n*n的矩阵,计算IoU,由于矩阵的特性,对角线两侧的IoU的值是完全对称的,因此可以直接设置成0.
然后判断IoU 大于thresh 的设置为0.进行下一轮的过滤。
 
 
5、YOLACT++
YOLACT++对于YOLACL的改进非常有限,改进三个地方:
1)在 Backbone 中引入可变形卷积。
2)添加新的 Mask Re-Scoring 分支。
3)借鉴mask scoreing RCNN, 引入MaskIou head。
 
 
6、总结
YOLACT是一个追求速度的实力分割算法,在准确率上还是比不过其他算法的,还有很大进步的空间。
 
 
 
添加图片注释,不超过 140 字(可选)
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
——————
浅谈则止,细致入微AI大道理
扫描下方“AI大道理”,选择“关注”公众号
—————————————————————
 
 
 
—————————————————————
 
公众号《AI大道理》征稿函​mp.weixin.qq.com/s?__biz=MzU5NTg2MzIxMw==&mid=2247489802&idx=1&sn=228c18ad3a11e731e8f325821c184a82&chksm=fe6a2ac8c91da3dec311bcde280ad7ee760c0c3e08795604e0f221ff23c89c43a86c6355390f&scene=21#wechat_redirect
|
YOLACT:史上最快的实例分割算法​mp.weixin.qq.com/s/at5tDsZf2LqT5jp2kihepA?token=252033425&lang=zh_CN
 

posted on   AI大道理  阅读(61)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示