YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps

YOLACT是首个实时实例分割算法,但是准确率较SOTA差得有点多,YOLACT++从主干网络、分支和anchor的3个角度出发对YOLACT进行优化,在保持实时性的前提下提升了5map,论文改进的角度值得参考

来源:晓飞的算法工程笔记 公众号

论文: YOLACT++ Better Real-time Instance Segmentation

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第1张图片

https://github.com/dbolya/yolact**

Introduction


YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第2张图片

  此前的YOLACT尽管能实时推理,但其精度相对于SOTA还是有一些差距,因此,论文提出YOLACT++,在保持实时性的同时大幅增加性能。论文的主要贡献如下:

  • 主干网络加入可变形卷积,提升主干网络对不同形状实例的特征采样能力。
  • 优化prediciton head,使用更好的anchor尺寸和长宽比以提高大目标的召回。
  • 加入fast mask re-scoring分支,优化结果的评估,仅消耗少量的计算量就能带来大幅的性能提升。

YOLACT


YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第3张图片

  YOLACT的主要想法是直接在one-stage目标检测算法中加入Mask分支,而不添加任何的RoI池化的操作,将实例分割分成两个并行的分支:

  • 使用FCN来生成分辨率较大的原型mask,原型mask不针对任何的实例。
  • 目标检测分支添加额外的head来预测mask因子向量,用于对原型mask进行特定实例的加权编码。

  最后取目标检测分支经过NMS后的实例,逐个将原型mask和mask因子向量相乘,再将相乘后的结果合并输出,具体细节可以看公众号之前发的YOLACT文章。

YOLACT++


Fast Mask Re-Scoring Network

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第4张图片

  参考Mask Scoring R-CNN,为了缩小分类预测和mask质量间的差距,加入re-scoring分支预测mask与GT间的IoU。以YOLACT截取的mask预测结果(二值化前)为输入,使用6层带ReLU激活的卷积层提取特征,最后进行全局池化输出预测的IoU,将预测的IoU和分类分数相乘作为最终的分数。与Mask Scoring R-CNN的不同点在于:

  • YOLACT++是基于整图的mask截取进行预测,大小不足的使用零填充,而Mask Scoring R-CNN则是使用RoI池化后的特征叠加mask分支的结果进行预测。
  • YOLACT++没有使用全连接层,这是速度保持的关键,仅增加1.2ms的计算耗时,而Mask Scoring R-CNN的模块需要28ms。

Deformable Convolution with Intervals

  可变形卷积由于其卷积的可变形性,对目标定位相关的任务均有提升,因此,YOLACT++将主干网络$C_3$到$C_5$的$3\times 3$卷积替换成$3\times 3$的可变形卷积,由于可调制变形卷积开销较大,这里只使用DCNv1,全替换能带来1.8的mask mAP提升,主要原因如下:

  • DCN能够通过偏移提升网络处理不同尺寸、角度和长宽比目标的能力。
  • YOLACT是one-stage网络,没有类似Mask R-CNN等two-stage网络的二次处理来进行结果的优化,所以更灵活的首次预测是极为重要的。

  由于ResNet-101有30个$3\times 3$卷积层,为了达到性能和准确率之间的trade-off,有以下几种实施的方案:

  • 替换最后10个ResNet blocks
  • 替换最后13个ResNet blocks
  • 替换最后3个ResNet stage,block的间隔为3(每3个block替换1个)
  • 替换最后3个ResNet stage,block的间隔为4(每4个block替换1个)

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第5张图片

  DCN (interval=3)的效果最好,耗时增加2.8ms,mAP提升1.6。

Optimized Prediction Head

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第6张图片

  YOLACT是anchor-based检测算法,选择合适的anchor十分重要,论文尝试了两种选择:

  • 保持尺寸不变,长宽比从$[1, 1/2, 2]$变为$[1, 1/2, 2, 1/3, 3]$
  • 保持长宽比不变,原本每个level一种尺寸,现在每层的尺寸改为原尺寸的三种比例$[1x, 2^{\frac{1}{3}}x, 2^{\frac{2}{3}}x]$

RESULTS


Mask Results

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第7张图片

YOLACT++ Improvements

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第8张图片

CONCLUSION


  YOLACT是首个实时实例分割算法,但是准确率较SOTA差得有点多,YOLACT++从主干网络、分支和anchor的3个角度出发对YOLACT进行优化,在保持实时性的前提下提升了5map,论文改进的角度值得参考。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps_第9张图片

你可能感兴趣的:(机器学习,人工智能,深度学习,神经网络,图像识别)