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,论文改进的角度值得参考。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps的更多相关文章

  1. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  2. YOLACT : 首个实时one-stage实例分割模型,29.8mAP/33.5fps | ICCV 2019

    论文巧妙地基于one-stage目标检测算法提出实时实例分割算法YOLACT,整体的架构设计十分轻量,在速度和效果上面达到很好的trade-off.   来源:[晓飞的算法工程笔记] 公众号 论文: ...

  3. 论文速递 | 实例分割算法BlendMask,实时又state-of-the-art

    BlendMask通过更合理的blender模块融合top-level和low-level的语义信息来提取更准确的实例分割特征,该模型效果达到state-of-the-art,但结构十分精简,推理速度 ...

  4. Deep Snake : 基于轮廓调整的SOTA实例分割方法,速度32.3fps | CVPR 2020

    论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以 ...

  5. SOLOv 2:实例分割(动态、更快、更强)

    SOLOv 2:实例分割(动态.更快.更强) SOLOv2:  Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152. ...

  6. CVPR2020:三维实例分割与目标检测

    CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...

  7. 手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

    前言 前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割. 一.什么是图像实例分割? 图像实例分割(Instan ...

  8. Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)

    Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)   导语:Mask R-CNN是Faster R-CNN的扩展形式,能够有效地检测图像中的目标,同时还能为每个实例生成一个 ...

  9. CVPR2020论文解析:实例分割算法

    CVPR2020论文解析:实例分割算法 BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation 论文链接:https://arxiv ...

  10. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...

随机推荐

  1. 服务器网卡,10GE设备相关笔记

    连接线 铜线 六类线基本可以满足万兆, 万兆网络一般只在短程使用铜线, 或者完全不用铜线 光纤 根据带宽和距离, 分为OM2, OM3, OM4等, OM2一般用于千兆或者短距离万兆, 长距离万兆使用 ...

  2. Swoole从入门到入土(4)——TCP服务器[正确重启]

    在上一篇中,我们提到了一个配置项max_wait_time.这个配置项决定了在服务端在进程经束的时候,在max_wait_time时间内onWorkerStop事件会完成扫尾工作. 那什么时候work ...

  3. Uniapp+Nodejs实现外卖App项目1-项目介绍

    项目介绍 本项目采用uniapp和nodejs(数据接口).mongodb等技术实现了一个类似美团外卖的简易APP.项目主要目的是为了快速上手,如何快速使用uniapp开发一个app项目,同时掌握一些 ...

  4. 【Android逆向】脱壳项目frida_dump 原理分析

    脱dex核心文件dump_dex.js 核心函数 function dump_dex() { var libart = Process.findModuleByName("libart.so ...

  5. Programming Abstractions in C阅读笔记:p293-p302

    <Programming Abstractions in C>学习第73天,p293-p302总结,总计10页. 一.技术总结 1.时间复杂度 (1)quadratic time(二次时间 ...

  6. [超实用插件]在Visual Studio中查看EF Core查询计划

    前言 EF Core是我们.NET开发中比较常用的一款ORM框架,今天我们分享一款可以直接在Visual Studio中查看EF Core查询计划调试器可视化工具(帮助开发者分析和优化数据库查询性能) ...

  7. .NET高级调试之sos命令输出看不懂怎么办

    一:背景 1. 讲故事 很多.NET开发者在学习高级调试的时候,使用sos的命令输出会发现这里也看不懂那里也看不懂,比如截图中的这位朋友. .NET高级调试属于一个偏冷门的领域,国内可观测的资料比较少 ...

  8. Ubuntu 安装 Python3.6.7

    注意: 不要卸载ubuntu自带的python版本: ubuntu下不同版本的python可以共存,可直接安装python3.6. 1.升级包索引和软件 sudo apt update sudo ap ...

  9. js之以面向对象的形式书写贪吃蛇

    此代码存在一定的小bug,当蛇出边界之后存在一定的小问题 分析贪吃蛇功能需求: 1.食物 (1)每次生成一个,位置随意但不可超出规定范围 (2)每次蛇吃到食物之后,前一个食物消失同时新的食物又生成 ( ...

  10. 【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?

    问题描述 App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢? 问题解答 答案是可以的,Azure App Service .NE ...