【实例分割_SOLOv2】SOLOv2:Dynamic,Faster and Stronger
文章目录
- 一、背景
- 二、相关工作
- 三、重看 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相关推荐
- 动态实例分割SOLOv2,更快更强更精准!
今天跟大家分享下前天新出的论文 SOLOv2: Dynamic, Faster and Stronger,一看这名字就知道很霸气!SOLO 超越自己,在原有架构基础上引入动态卷积和发明了Matrix ...
- SOLOv 2:实例分割(动态、更快、更强)
SOLOv 2:实例分割(动态.更快.更强) SOLOv2: Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152.p ...
- gan pytorch 实例_重新思考一阶段实例分割(Rethinking Single Shot Instance Segmentation)
点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:谢恩泽 https://zhuanlan.zhihu.com/ ...
- 【每周CV论文】初学实例分割需要读哪些文章?
欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 实例分割(Instance Segmenta ...
- 实例分割模型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 ...
- 实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN
Mask R-CNN是ICCV 2017的best paper,彰显了机器学习计算机视觉领域在2017年的最新成果.在机器学习2017年的最新发展中,单任务的网络结构已经逐渐不再引人瞩目,取而代之的是 ...
- SOLOv2训练自己数据集(实例分割,停车位/牛分割)
SOLOv2训练自己数据集(实例分割,停车位分割) 1. 环境搭建 2. 修改配置文件 3. 下载权重 4. 自定义数据集转COCO格式 4. 训练&测试 5.实验结果 6. 遇到的Bug 论 ...
- 【camera】YOLOV7实现实例分割+目标检测任务(训练、测试、量化、部署)
[camera]YOLOV7实现实例分割+目标检测任务 代码下载地址 训练.测试.量化.部署代码 训练 For training, quite simple, same as detectron2: ...
- 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路
视学算法专栏 机器之心编辑部 实例分割(Instance Segmentation)任务有着广阔的应用和发展前景.来自腾讯 PCG 应用研究中心 (ARC)和华中科技大学的研究者们通过充分挖掘并利用Q ...
最新文章
- 《C++游戏编程入门(第4版)》——1.12 习题
- 为什么使用了索引,查询还是慢?
- Java——容器和泛型
- 阿里Q3财报:阿里云连续第7个季度翻番
- [Math] 常见的几种最优化方法
- 将AI中的对象复制到ppt编辑
- MyEclipse10破解过程
- java的 jre是什么_Java中JRE介绍,JRE是什么
- google之admob
- 请将文件MP_verify_N8no8dpNO9n7wuBZ.txt上传至XXX指向的web服务器(或虚拟主机)的目录
- maple化简_在线测试(Maple TA)使用须知yx - 课程中心.PDF
- 阿里云服务器永久性修改主机名方法
- BugReport 概述
- 2022茶艺师(中级)特种作业证考试题库及答案
- zabbix使用web界面监控本机
- “武汉疫情后,中国将发生这3种改变”,17年前的非典早预言了一切
- Linux学习:Linux基础命令集(1)
- 缓存一致性问题解决方案
- Linux ALSA 声卡驱动之一:ALSA架构简介
- 怎样免费翻译整篇英文Word文档
热门文章
- Bzoj1018 [SHOI2008]堵塞的交通traffic
- 项目中SQL语句文件保存及提取方法
- 判断.java文件中getConnection与cleanUp数量是否匹配
- Do not wait until the conditions are perfect to begin. Beginning makes the conditions perfect(转)...
- 深入Java核心 Java内存分配原理精讲(3)
- HttpServletRequest类用途
- TinyMCE 新增本地图片上传功能
- 人口普查系统_晋江市召开第七次人口普查区域划分及标绘系统操作培训会
- css好用吗,一些不好记却很好用的 CSS 属性
- c语言rtu crc16,Modbus-RTU-crc16校验方法C语言实现