文章目录

  • 一、背景
  • 二、相关工作
  • 三、重看 SOLOv1
  • 四、SOLOv2
    • 4.1 Dynamic Instance Segmentation
      • 4.1.1 Mask kernel branch
      • 4.1.2 Mask feature branch
      • 4.1.3 Forming Instance Mask
  • 五、Experiments
    • 5.1 Instance segmentation
      • 5.1.1 Main results
      • 5.1.2 SOLOv2 visualization
      • 5.1.3 Ablation Experiments


论文链接: https://arxiv.org/abs/2003.10152
代码链接: http://github.com/WXinlong/SOLO

一、背景

在 SOLOv1的基础上的两个提升:

  • 1、Mask Learning

    SOLOv2要进一步动态学习目标分割器的 mask head,mask head 被解耦成 mask kernel branch 和 mask feature branch,分别来学习卷积核和卷积特征。mask learning 可以分为两部分:

    • convolutional kernel learning:当把 pixel 分类到不同的网格中时,网络会自动预测要使用的分类器,并根据输入图像进行调整。
    • feature learning:很多的语义分割技术都可以用来提高性能,受FPN 启发, SOLOv2 为实例分割构建了一个统一,且有高分辨率 mask 特征表达。
  • 2、Mask NMS

    在 SOLOv1的基础上,SOLOv2提出了一个 Matrix NMS 来降低 inference 的时间。Matrix NMS 是并行矩阵乘法,能够一次性实现 NMS。

对于 mask NMS,NMS 的缺点被放大了,相比 bbox,mask NMS 需要更多的时间来为每个 mask 计算 IoU,导致更大的开销。通过引入矩阵 NMS,可以并行的第一性执行完成。

二、相关工作

Instance Segmentation:

本文的方法是从SOLO[33]发展而来的,直接将原始的 mask 预测解耦为 kernel 学习和特征学习。不需要anchor、归一化、边界框检测。直接将输入图像映射到所需的类别和 mask。训练和推理都简单得多。因此,该框架简单得多,但实现了显著的更好的性能(相同速度下提升了6%的AP);最佳模型实现了41.7 AP,而YOLACT的最佳31.2%AP。

Dynamic Convlutions:

传统的卷积层中学习的卷积核是固定的,且和输入无关,也就是说一幅图像共享一个相同的卷积核。
也有一些工作在探究能否给传统的卷积中引入更灵活的思想。

Spatial Transform Networks[15] 预测全局参数变换来 wrap 特征图,使得网络能够根据输入来自适应的变换特征图。

Dynamic filter[16] 用于预测卷积核的参数,以特定样本的方式将动态生成的卷积核应用于图像。

Deformable Convolutional Networks [8] 通过预测每个图像位置的偏移量来动态学习采样位置。将动态方案引入到实例分割中,实现了基于位置的实例分割学习。

三、重看 SOLOv1

SOLOv1框架的核心思想是按位置分割对象。
见博客:https://blog.csdn.net/jiaoyangwm/article/details/105491010

四、SOLOv2

4.1 Dynamic Instance Segmentation

将 SOLOv1 的原始 mask branch 解耦为 mask kernel branch + mask feature branch,如图2所示。

4.1.1 Mask kernel branch

mask kernel 分支和类别预测分支一起位于预测 head 中。

head 在 FPN 生成的特征图金字塔中作用,两个 head 中的 4x conv 用于特征抽取,最后一个 conv 用于预测。head 的权重是共享的。通过给第一个卷积机上归一化后的坐标,来给 kernel 分支加上空间功能。也就是给第一个卷积层输出那里增加两个额外的通道,一个输入i,一个输入j。

对于每个 grid,kernel branch 预测 D 维输出,表示预测的卷积核权重,D 是参数的个数。为了给输出为 E 个通道的1x1卷积产生权重,设定 D=E。对 3x3 卷积,D=9E。这种weights是根据位置生成的,也就是 grid cell。如果将图像分割成 S×SS \times SS×S 个格子,输出为 S×S×DS \times S \times DS×S×D

4.1.2 Mask feature branch

mask feature branch 需要预测每个实例的特征图 F∈RH×W×EF \in R^{H\times W \times E}F∈RH×W×E,E 是 mask feature 的维度。F 是和 mask kernel branch 预测的 kernel 卷积的得到的。如果所有预测的权重都使用了,也就是 S2S^2S2 个分类器,则最后一层卷积后输出的实例 mask 是 H×W×S2H \times W \times S^2H×W×S2,和 SOLOv1相同。

由于 mask feature 和 mask kernel 是解耦开的且分别预测的,因此有两种方法来构造 mask feature 分支:

  • ① 直接和 kernel branch 一起放到 head处,这就意味着可以预测每个 FPN level 的 mask feature
  • ② 给所有的 FPN level 预测相同的 mask feature 表达。

对比两者,最后作者使用了第二种方法。

为了学习一个统一且高分辨率mask 特征表达,作者使用特征金字塔融合的方法。 经过重复的 3x3 卷积+group norm+relu+2x 双线性上采样,FPN 特征 P2 到 P5 被合并成一个相同的输出(1/4 scale)。

逐点相加之后,最后一层是由 1x1 卷积+group norm+ReLU 实现的,如图3所示。

作者将坐标加到了最深层的 FPN 输出(1/32)上,这种提供精确位置信息的做法能够引入位置敏感性并且预测得到与 instance-aware 特征。

4.1.3 Forming Instance Mask

对于每个网格 (i,j)(i,j)(i,j),首先获得 mask kernel Gi,j,:∈RDG_{i,j,:}\in R^DGi,j,:​∈RD,然后将 Gi,j,:∈RDG_{i,j,:}\in R^DGi,j,:​∈RD 和 FFF 卷积,来得到实例 mask。每个预测 level 总共有 S2S^2S2 个mask。最后,使用 Matrix NMS 来得到最终的实例分割结果。

五、Experiments

5.1 Instance segmentation

5.1.1 Main results

5.1.2 SOLOv2 visualization

作者从两个方面可视化了 SOLOv2 学习到的东西:

  • mask feature的输出
  • 经过动态学习后的最终输出

Mask feature branch 的输出: 使用最终输出 64 个通道的模型(mask prediction 前的最后一层特征图的通道 E=64)。图5展示了每个 channels 。

  • 首先,mask feature 是 position-aware 的
  • 其次,一些特征图对所有的前景目标响应(白色框)

最终输出: 如图8所示,不同的目标是不同的颜色,可以看出本文方法分割边界的细节很好,尤其是对大目标。


SOLOv2和 Mask R-CNN 的对比如图6,SOLOv2表现更好。

5.1.3 Ablation Experiments

Kernel shape: 最优的是 1x1x256,文章中所有试验都用的这个参数

Effectiveness of coordinates: 由于本文是使用位置,或更确切的说,是利用位置来学习目标分割器。如果 mask kernel branch 对位置不敏感,则外观相同的目标将会有相同的kernel,导致相同的输出 mask。如果 mask feature branch 对位置不敏感,则它将不知道如何按照 mask 匹配的顺序将像素分配给不同通道。如表4所示,如果没有 coordinates 输入,则只能达到 36.3% AP。

这个结果还比较理想,因为 CNN 可以从 zero-padding 操作中隐式的学习到绝对位置信息。但这种隐式的学习是不准确的,使用 coordconv 时,可以增加 1.5 AP。

Unified Mask Feature Representation: 对于 mask 特征的学习,有两种选择:

  • 分别学习 FPN 每个 level 的特征(solov1)
  • 统一学习一个表示(图3)

表5中对比了这两种不同的方法,后者取得了好的效果,这也很容易理解,在 solov1中,大尺寸对象被分配到高层特征中去分割,高层特征的分辨率较低,会导致边界估计比较粗略。

Dynamic and Decoupled: 动态学习 head 和 decoupled head 在表6中进行了对比,dynamic head 比 decoupled head 高 0.7% AP。这种提升,作者觉得来源于网络根据输入来动态的学习 kernel weights。

Matrix NMS:

【实例分割_SOLOv2】SOLOv2:Dynamic,Faster and Stronger相关推荐

  1. 动态实例分割SOLOv2,更快更强更精准!

    今天跟大家分享下前天新出的论文 SOLOv2: Dynamic, Faster and Stronger,一看这名字就知道很霸气!SOLO 超越自己,在原有架构基础上引入动态卷积和发明了Matrix ...

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

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

  3. gan pytorch 实例_重新思考一阶段实例分割(Rethinking Single Shot Instance Segmentation)

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:谢恩泽 https://zhuanlan.zhihu.com/ ...

  4. 【每周CV论文】初学实例分割需要读哪些文章?

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 实例分割(Instance Segmenta ...

  5. 实例分割模型Mask R-CNN详解——从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

    转载自 jiongnima 原文链接 https://blog.csdn.net/jiongnima/article/details/79094159 Mask R-CNN是ICCV 2017的bes ...

  6. 实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

    Mask R-CNN是ICCV 2017的best paper,彰显了机器学习计算机视觉领域在2017年的最新成果.在机器学习2017年的最新发展中,单任务的网络结构已经逐渐不再引人瞩目,取而代之的是 ...

  7. SOLOv2训练自己数据集(实例分割,停车位/牛分割)

    SOLOv2训练自己数据集(实例分割,停车位分割) 1. 环境搭建 2. 修改配置文件 3. 下载权重 4. 自定义数据集转COCO格式 4. 训练&测试 5.实验结果 6. 遇到的Bug 论 ...

  8. 【camera】YOLOV7实现实例分割+目标检测任务(训练、测试、量化、部署)

    [camera]YOLOV7实现实例分割+目标检测任务 代码下载地址 训练.测试.量化.部署代码 训练 For training, quite simple, same as detectron2: ...

  9. 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路

    视学算法专栏 机器之心编辑部 实例分割(Instance Segmentation)任务有着广阔的应用和发展前景.来自腾讯 PCG 应用研究中心 (ARC)和华中科技大学的研究者们通过充分挖掘并利用Q ...

最新文章

  1. 《C++游戏编程入门(第4版)》——1.12 习题
  2. 为什么使用了索引,查询还是慢?
  3. Java——容器和泛型
  4. 阿里Q3财报:阿里云连续第7个季度翻番
  5. [Math] 常见的几种最优化方法
  6. 将AI中的对象复制到ppt编辑
  7. MyEclipse10破解过程
  8. java的 jre是什么_Java中JRE介绍,JRE是什么
  9. google之admob
  10. 请将文件MP_verify_N8no8dpNO9n7wuBZ.txt上传至XXX指向的web服务器(或虚拟主机)的目录
  11. maple化简_在线测试(Maple TA)使用须知yx - 课程中心.PDF
  12. 阿里云服务器永久性修改主机名方法
  13. BugReport 概述
  14. 2022茶艺师(中级)特种作业证考试题库及答案
  15. zabbix使用web界面监控本机
  16. “武汉疫情后,中国将发生这3种改变”,17年前的非典早预言了一切
  17. Linux学习:Linux基础命令集(1)
  18. 缓存一致性问题解决方案
  19. Linux ALSA 声卡驱动之一:ALSA架构简介
  20. 怎样免费翻译整篇英文Word文档

热门文章

  1. Bzoj1018 [SHOI2008]堵塞的交通traffic
  2. 项目中SQL语句文件保存及提取方法
  3. 判断.java文件中getConnection与cleanUp数量是否匹配
  4. Do not wait until the conditions are perfect to begin. Beginning makes the conditions perfect(转)...
  5. 深入Java核心 Java内存分配原理精讲(3)
  6. HttpServletRequest类用途
  7. TinyMCE 新增本地图片上传功能
  8. 人口普查系统_晋江市召开第七次人口普查区域划分及标绘系统操作培训会
  9. css好用吗,一些不好记却很好用的 CSS 属性
  10. c语言rtu crc16,Modbus-RTU-crc16校验方法C语言实现