Deep Snake : 基于轮廓调整的SOTA实例分割方法,速度32.3fps | CVPR 2020
论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以补,推荐大家阅读
来源:晓飞的算法工程笔记 公众号
论文: Deep Snake for Real-Time Instance Segmentation

Introduction

  实例分割是许多计算机视觉任务中的重要手段,目前大多数的算法都采用在给定的bbox中进行pixel-wise分割的方法。受snake算法和Curve-GCN的启发,论文采用基于轮廓的逐步调整策略,提出了Deep snake算法进行实时实例分割,该算法将初始轮廓逐渐优化为目标的边界,如图1所示,达到很好的性能且依然保持很高的实时性(32.3fps)。
  论文的主要贡献如下:
- 提出基于学习的snake算法用于实时实例分割,对初始轮廓调整至目标边界,并且引入循环卷积(circular convolution)进行轮廓特征的学习。
 - 提出two-stage流程进行实例分割,先初始化轮廓再调整轮廓,两个步骤均可以用于修正初始定位的误差。
 - Deep snake能在多个实例分割数据集上达到SOTA,对于512的图片输入能达到32.3fps。
 
Proposed approach
Deep snake方法将初始轮廓逐渐优化为目标的边界来进行目标分割,即将物体轮廓作为输入,基于CNN主干特征预测每个顶点的偏移量。为了充分利用轮廓拓扑结构,论文使用循环卷积(circular convolution)进行顶点特征的学习,有助于学习轮廓的优化,并基于deep snake提出了一套实时实例分割的流程。
Learning-based snake algorithm
  传统的snake算法将顶点的坐标作为变量来优化人工设计的能量函数(energy function),通过最小化能量函数来拟合目标边界。由于能量函数通常是非凸的,而且需要基于低维图像特征进行人工设计,通常会陷于局部最优解。
  而deep snake则是直接从数据学习如何微调轮廓,对于$N$个顶点${ x_i | i=1, ..., N}$,首先构造每个顶点的特征向量,顶点$x_i$的特征$f_i$为对应的网络特征和顶点坐标的concate$[F(x_i);x_i{'}]$,其中$F$为主干网络输出的特征图,$F(x_i)$为顶点$x_i$处的双线性差值输出,附加的$x_i{'}$用于描述顶点间的位置关系,$x_i^{'}$是平移不变的,由每个顶点坐标减去轮廓中所有顶点的最小$x$和$y$得到相对坐标。


在获得顶点特征后,需要对轮廓特征进一步学习,顶点的特征可以视作1-D离散信号$f:\mathbb{Z}\to \mathbb{R}^D$,然后使用标准卷积对顶点逐个进行处理,但这样会破坏轮廓的拓扑结构。因此,将顶点特征定义为公式1的周期信号,然后使用公式2的循环卷积进行特征学习,$k:[-r,r]\to \mathbb{R}^D$为可学习的卷积核,$*$为标准卷积操作。

循环卷积操作如图2所示,与标准的卷积操作类似,可以很简单地集成到目前的网络中。在特征学习后,对每个顶点使用3个$1\times 1$卷积层进行偏移的输出,实验中循环卷积的核大小固定为9。

图a展示了deep snake的细节结构,输入为初始轮廓,主干包含8个"CirConv-Bn-ReLU"层,每层都使用残差连接,Fusion block用于融合主干网络中的多尺度轮廓特征,Prediction head使用3个$1\times 1$卷积输出每个顶点的偏移。
Deep snake for instance segmentation

将deep snake加入到目标检测模型中进行实例分割,流程如图b所示。模型首先产生目标框,将其构建成菱形框,然后使用deep snake算法将菱形顶点调整为目标极点,构造八边形轮廓,最后进行迭代式deep snake轮廓调整得到目标形状
Initial contour proposal
论文采用ExtreNet的极点思想,能够很好地包围物体。在得到矩形框后,获取4条边的中心点${x_i^{bb} | i=1,2,3,4 }$连成菱形轮廓,使用deep snake对菱形轮廓调整成极点${x_i^{ex} | i=1,2,3,4 }$,然后每个极点放置一条边,连接边构造多边形,每个极点的边为其对应的bbox边的$1/4$,若边超过原bbox范围会被截断。在实际使用时,菱形轮廓输入deep snake前会平均上采样到40个点(有助于deep snake计算),但损失函数计算只考虑$x_i^{bb}$的对应偏移
Contour deformation
  对八边形平均采样$N$个点,将上极点$x_1{ex}$作为起点,同样地,GT轮廓对物体边缘平均采样$N$个点,将靠近$x_1{ex}$的点作为起点,$N$一般为128。如果顶点离GT很远,很难直接正确调整,于是采用迭代式地进行deep snake调整,实验采用的迭代次数为3次。
  轮廓是目标空间位置的一种扩展表示方法,通过调整轮廓到物体边缘能够帮助解决detector的定位误差
Handling multi-component objects

由于遮挡,一个实例可能包含多个组件,然而一个轮廓只能勾勒出bbox内的一个组件。为了解决这个问题,使用RoIAlign来提取初始bbox特征,然后配合detector来检测组件的box,再对每个box进行上述的轮廓调整,最后结合初始bbox内相同类别的组件输出最终的物体形状。
Implementation details
Training strategy

极点的损失函数如公式3,$\tilde{x}_i^{ex}$为预测的极点。

迭代轮廓调整的损失函数如公式4,$\tilde{x}_i$为调整后的顶点,$x_i^{gt}$为对应的GT边缘点。对于检测部分,则采用跟原检测函数一样的损失函数。
Detector
使用CenterNet作为检测器,对于物体检测,使用跟原来一样的设定输出类别相关的box,而对于组件检测,则使用类不可知的CenterNet,对于$H\times W\times C$的特征图,输出$H\times W\times 1$的中心点heatmap和$H\times W\times 2$的box大小特征图。
Experiments
Ablation studies

Baseline将轮廓视为图结构,然后使用GCN进行轮廓调整,初始轮廓为围绕bbox的椭圆,Arichitecture加入Fusion block,Initial proposal加入论文的轮廓初始化方法,最后是将GCN修改为循环卷积,可以看到每个步骤都对AP有提升。

论文也对比了卷积类型以及迭代次数对结构的影响,可以看到循环卷积的结果比GCN要好。

Comparison with the state-of-the-art methods





论文在不同的数据集上都取得了不错的效果,作者在每个数据集上的训练参数都有点不一样,具体参数可以看看原文
Running time

Conclusion
论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以补,推荐大家阅读
参考内容
- Snakes: Active Contour Models - http://www.cs.ait.ac.th/~mdailey/cvreadings/Kass-Snakes.pdf
 - Fast Interactive Object Annotation with Curve-GCN - https://arxiv.org/pdf/1903.06874.pdf
 
 
 
 
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

Deep Snake : 基于轮廓调整的SOTA实例分割方法,速度32.3fps | CVPR 2020的更多相关文章
- Linux下基于LVM调整分区容量大小的方法
		
Linux下调整分区容量大小的方法(适用于centos6-7) 说明:以下方法均使用centos6.9和centos7.4进行测试. Centos6分区容量调整方法 1.web分区空间不足,新添加一块 ...
 - 实时实例分割的Deep Snake:CVPR2020论文点评
		
实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...
 - CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
		
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...
 - SOLOv 2:实例分割(动态、更快、更强)
		
SOLOv 2:实例分割(动态.更快.更强) SOLOv2: Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152. ...
 - CVPR2021 | Transformer用于End-to-End视频实例分割
		
 论文:End-to-End Video Instance Segmentation with Transformers 获取:在CV技术指南后台回复关键字"0005"获取该论文 ...
 - 实例分割:MaskXRCnn 与Visual Genome数据集
		
一.VG数据集 机器学习领域的突破突然让计算机获得了以未曾有的高精度识别图像中物体的能力--几乎达到了让人惊恐的程度.现在的问题是机器是否还能更上层楼,学会理解这些图片中所发生的事件. Visual ...
 - YOLACT : 首个实时one-stage实例分割模型,29.8mAP/33.5fps | ICCV 2019
		
论文巧妙地基于one-stage目标检测算法提出实时实例分割算法YOLACT,整体的架构设计十分轻量,在速度和效果上面达到很好的trade-off. 来源:[晓飞的算法工程笔记] 公众号 论文: ...
 - CVPR2020论文解析:实例分割算法
		
CVPR2020论文解析:实例分割算法 BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation 论文链接:https://arxiv ...
 - 图像实例分割:CenterMask
		
图像实例分割:CenterMask CenterMask: single shot instance segmentation with point representation 论文链家: http ...
 
随机推荐
- 【WPF学习】第六十二章 构建更复杂的模板
			
在控件模板和为其提供支持的代码之间又一个隐含约定.如果使用自定义控件模板替代控件的标准模板,就需要确保新模板能够满足控件的实现代码的所有需要. 在简单控件中,这个过程比较容易,因为对模板几乎没有(或完 ...
 - springBoot集成zuul路由forward,设置setSendZuulResponse无效
			
正确书写方式如下: RequestContext ctx = RequestContext.getCurrentContext(); ctx.setSendZuulResponse(false); c ...
 - bootstrip CSS
			
什么是网格(Grid)? 摘自维基百科: 在平面设计中,网格是一种由一系列用于组织内容的相交的直线(垂直的.水平的)组成的结构(通常是二维的).它广泛应用于打印设计中的设计布局和内容结构.在网页设计中 ...
 - Ubuntu命令方式安装中文语言包
			
Ubuntu命令方式安装中文语言包 安装之前执行 $LANG 查看语言环境 中文语言包: language-pack-zh-hans 简体中文 language-pack-zh-hans-base l ...
 - H - 覆盖的面积(线段树-线段扫描 + 离散化(板题))
			
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1 ...
 - 掌握使用gitlab ci构建Android包的正确方式
			
最近公司在做移动端的项目,自然而然的需要搭建打包的环境.本来计划用Jenkins的,但是发现在gitlab上创建完项目后,提示去配置pipeline,于是决定用gitlab去尝试下,毕竟我觉得Jenk ...
 - 让 .NET 轻松构建中间件模式代码(二)
			
让 .NET 轻松构建中间件模式代码(二)--- 支持管道的中断和分支 Intro 上次实现了一个基本的构建中间件模式的中间件构建器,现在来丰富一下功能,让它支持中断和分支,分别对应 asp.net ...
 - Django 表单处理流程
			
Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文.使事情变得更复杂的是,服务器还需要能够处 ...
 - java 字符串截取  - 最后带上mysql字符串截取比较
			
Java中的substring()方法有两个方法的重载,一个带一个参数的,一个带两个参数的. 第一种写法: substring(n);//从索引是n的字符开始截取,条件(n>=0,n<字符 ...
 - [转] [知乎] Roguelite 和 Roguelike 的区别是什么?
			
编者按 本文译自 Ethan Hawkes 一篇介绍 rogue-lite 概念的文章,已获作者授权,英文原文见这里,译文首发于这里.注意本文写于 2013 年,正是 roguelite 类型的独立游 ...