YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps
YOLACT 是首个实时实例分割算法,但是准确率较 SOTA 差得有点多,YOLACT++ 从主干网络、分支和 anchor 的 3 个角度出发对 YOLACT 进行优化,在保持实时性的前提下提升了 5map,论文改进的角度值得参考
来源:晓飞的算法工程笔记 公众号
论文: YOLACT++ Better Real-time Instance Segmentation
Introduction
此前的 YOLACT 尽管能实时推理,但其精度相对于 SOTA 还是有一些差距,因此,论文提出 YOLACT++,在保持实时性的同时大幅增加性能。论文的主要贡献如下:
- 主干网络加入可变形卷积,提升主干网络对不同形状实例的特征采样能力。
- 优化 prediciton head,使用更好的 anchor 尺寸和长宽比以提高大目标的召回。
- 加入 fast mask re-scoring 分支,优化结果的评估,仅消耗少量的计算量就能带来大幅的性能提升。
YOLACT
YOLACT 的主要想法是直接在 one-stage 目标检测算法中加入 Mask 分支,而不添加任何的 RoI 池化的操作,将实例分割分成两个并行的分支:
- 使用 FCN 来生成分辨率较大的原型 mask,原型 mask 不针对任何的实例。
- 目标检测分支添加额外的 head 来预测 mask 因子向量,用于对原型 mask 进行特定实例的加权编码。
最后取目标检测分支经过 NMS 后的实例,逐个将原型 mask 和 mask 因子向量相乘,再将相乘后的结果合并输出,具体细节可以看公众号之前发的 YOLACT 文章。
YOLACT++
Fast Mask Re-Scoring Network
参考 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 个)
DCN (interval=3)的效果最好,耗时增加 2.8ms,mAP 提升 1.6。
Optimized Prediction Head
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++ Improvements
CONCLUSION
YOLACT 是首个实时实例分割算法,但是准确率较 SOTA 差得有点多,YOLACT++ 从主干网络、分支和 anchor 的 3 个角度出发对 YOLACT 进行优化,在保持实时性的前提下提升了 5map,论文改进的角度值得参考。
如果本文对你有帮助,麻烦点个赞或在看呗 ~
更多内容请关注 微信公众号【晓飞的算法工程笔记】