语义分割:GSCNN 提高边缘和小目标的分割性能

栏目: IT技术 · 发布时间: 4年前

内容简介:本次介绍的文章发表在ICCV2019,由英伟达公司的学者提出的一种用于语义分割的双流CNN结构(GSCNN)。相比于传统的分割模型,GSCNN主要加入了一个单独的分支用来学习边缘信息,称之为形状流。这一结构改进使得分割模型能够更好的预测边缘信息,显著的提升了小物体和细物体的检测效果。语义分割在自动驾驶,3D重建,图像生成,医学检测等领域有很多的研究。从FCN的提出以来,语义分割主要利用分类的架构来进行像素级别的分类。主要遇到的问题是低分辨率和语义信息不足等。许多研究者也提出了融合不同层的语义信息,以及利用多

本次介绍的文章发表在ICCV2019,由英伟达公司的学者提出的一种用于语义分割的双流CNN结构(GSCNN)。相比于传统的分割模型,GSCNN主要加入了一个单独的分支用来学习边缘信息,称之为形状流。这一结构改进使得分割模型能够更好的预测边缘信息,显著的提升了小物体和细物体的检测效果。

语义分割:GSCNN 提高边缘和小目标的分割性能

源码github链接:

https://nv-tlabs.github.io/GSCNN/

01

问题描述

语义分割在自动驾驶,3D重建,图像生成,医学检测等领域有很多的研究。从FCN的提出以来,语义分割主要利用分类的架构来进行像素级别的分类。主要遇到的问题是低分辨率和语义信息不足等。许多研究者也提出了融合不同层的语义信息,以及利用多尺度分辨率的上采样模块等,来缓解这些问题。

但是语义分割在细小的目标分割上还存在一些问题。这个问题可以从网络结构的内在出发。 单一网络的结构融合了非常多的不同信息:颜色、形状以及纹理信息。 而这些信息被融合在一起处理,可能会导致对识别重要的信息没那么的突出。比如检测对象的时候,最理想的是根据边界和形状信息来进行识别,但是如果信息流中包含了很多的颜色和纹理等低级的特征,可能会导致识别问题。一个有力的佐证是,例如ResNet,DenseNet等识别效果较好,主要是不同层级的信息流在网络向前流通,缓解了到达最后一层的信息流丢失。

基于上述问题,本文提出了一个双流CNN结构,通过单独分支学习形状,并引入原分支信息,共同作用来提高语义分割的性能。

02

网络结构

语义分割:GSCNN 提高边缘和小目标的分割性能

如上图所示是GSCNN的网络结构,网络结构总共分为三部分:常规流(Regular Stream),形状流(Shape Stream)和融合模块(Fusion Module)。

2.1

常规流(Regular Stream)

输入是三通道图像,网络选择可以是ResNet,VGGNet等基础模型,网络输出是一个尺寸为[N,C,H/m,W/m]的特征图,m是网络尺寸的缩小率。

语义分割:GSCNN 提高边缘和小目标的分割性能

2.2

形状流(Shape Stream)

形状流是这篇文章的重点,其结构如下图所示:

语义分割:GSCNN 提高边缘和小目标的分割性能

形状流输入的数据全部来自常规流,上述的四个输入分别是常规流的r1,r2,r3和r4。由于形状流中进行边缘的二分类,细节很重要,因此数据在处理的时候,都插值为输入图片x.size的大小。

如上图所示,r1可能来自常规流中的某个特征图,首先将其双线性插值为x.size,经过Conv1x1卷积和res1层后,输出一个C通道的特征图。将此特征图再进行双线性插值为x.size作为门控卷积层(GCL)的输入。而r2经过一个1x1卷积变为1个通道之后,通过双线性插值也x.size。所以门控卷积层的两个输入的大小为[N,C,H,W]和[N,1,H,W]。

门控卷积层(GCL):

语义分割:GSCNN 提高边缘和小目标的分割性能

如上图所示,输入的数据经过Concat连接,经过一系列卷积,归一化等等操作,通过sigmoid产生一个权重值:

接下来权重alpha与形状流的输入点乘并加上Input Feature,最后经过一个卷积权重作用后输出[N,C,H,W]的特征图。

语义分割:GSCNN 提高边缘和小目标的分割性能

GCL层相当于作为一个门控开关一样,而常规流中的特征进来,共同作用产生一个权重,这个权重类似于开关的作用,将浅层的不相关边界信息滤除掉,重点关注边缘信息,增强边缘识别的能力。

通过GCL层之后的输出信息,同理经过后续的res2分支,再和r2共同作用到GCL层,知道最后通过卷积和sigmoid函数,输出一个[N,1,H,W]的边缘图。

2.3

融合模块(Fusion Module)

融合模块主要是采用ASPP模块进行采样。

语义分割:GSCNN 提高边缘和小目标的分割性能

文章中对这一部分介绍的比较简单,通过看源码来理解下具体融合的特征。源码中融合模块中的输入来自四部分, 主要是Canny和形状流输出的两个特征,称之为形状特征。还有常规流中的输出以及中间层M2的特征图一并作为输入 。四部分作为输入,经过卷积等等一系列操作,然后融合,最后输出分割图。

以上就是整体的网络结构,通过常规流和形状流数据的交错,再共同作为融合层的输入,保留了很多的边界信息,使得分割更有效。

03

学习过程

了解了网络的组成结构,接下来了解下网络的学习过程。由于网络加入了边缘预测,因此是一个多任务学习过程。

3.1

多任务学习

两个任务,一个是进行多分类分割,生成语义分割图。一个是进行边缘学习,生成边缘信息图。所以损失由两部分组成:

语义分割:GSCNN 提高边缘和小目标的分割性能

其中二元信息熵(BCE)作用在形状流上,对形状流的输出进行计算损失。常规流和形状流通过门控卷积层相连,因此这个损失作用在两者上。同时, 由于边缘预测过程中边界和非边界的像素非常的不平衡,所以采用一个beta参数来进行平衡(这里没体现)。

对于多元信息熵,其预测C个类,为全局输出,损失作用作用整个网络,更新所有参数。

3.2

多任务正则化

网络最后输出的语义分割图可以计算获得边界信息,为了使得边界信息更准确,对最后的语义分割图进行正则化:

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

公式(4)中G是高斯滤波器。通过公式4计算输出的语义分割图的边缘信息。对于真实标注图,同样利用上述的公式进行边缘信息计算。为了保持两者的一致性,利用两者计算的结果差值的绝对值作为损失(公式5),目的使得模型输出的分割图边界与标注值更接近。

同样的,形状流输出的边界预测值应该与最后输出完整的分割图的边界相同,因此加入了这两者的正则化:

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

其中,Sp代表这形状流输出的预测值,因此公式6统计的是形状流输出概率大于给定阈值thrs的这些像素点的损失,对形状流输出边缘图和最终输出的分割图的边界信息进行统一。

总体的正则化损失为两者相加。语义分割图与真实标签图,语义分割图与预测边缘图都分别进行了正则化。

语义分割:GSCNN 提高边缘和小目标的分割性能

综上所述,整个网络的损失4个部分,2个分类交叉熵损失和2个正则化损失。

04

试验分析

  • 数据集:CityScapes数据,包含27个城市。总共2975训练集,500验证集和1525测试集。

  • 评估指标:

    • IoU:用于评估是否精确的预测区域

    • F-score:用于评价边界的预测

    • Distance-base:通过对预测结果crop来评价小目标上的性能

  • 试验细节:

    • batch_size=16,

    • lr=0.01多项式衰减

    • 损失参数:20,1,1,1

    • resolution:800x800

4.1

评估

在整体的IoU对比上,相较于之前的方法都有提升,总体平均提升2%,而且特别是在小目标的检测上,如交通标志,交通信号灯和电线杆有很明显的提升,下图是在验证集和测试集上的结果。

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

在边界的预测上,和DeeplabV3+做对比,整体上优于基础模型。

语义分割:GSCNN 提高边缘和小目标的分割性能

4.2

消融试验

在试验中,加入了GCL层,正则化损失,Canny边缘图等,为了看上述各个子部分的效果,作者做了消融试验。

语义分割:GSCNN 提高边缘和小目标的分割性能

从消融试验的结果来看,加入GCL使得IoU提升了1.5%左右,而Canny的加入提升了0.3%。而最有效的是加入了正则化,性能提升3%,边缘图的统一非常的有必要。

最后,附上作者的预测结果,GCL层之后的边缘细节刻画确实比较美妙。

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

05

由于只有1个1080ti的GPU,本文的试验复现存在硬件上的困难,未来如果有条件了再进行实验。目前主要看看源码理解内容。当然这篇论文中还有很多思考的地方。 比如预测边缘图的形状流的每次都线性插值到原图,是否可以减少图尺寸? 既然分隔出了形状流,那么纹理和颜色空间能否分开呢?

总的来讲,本文提出的解决边界问题的思想有很大的启发,通过网络上改进,将形状,颜色和纹理的信息给分隔开来,独立进行边缘检测,提高边缘检测的性能。

对于边缘检测问题,U-Net中有一个简单的方式将边缘的权重给加大来提高边缘检测的 性能,当然这个只能作为个小trick。

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

实际上在很多实际项目上,预测的内部不完整可能影响不大,如果边界能够预测的很准,那么剩余的其他有些问题可以通过后处理来解决一些问题。希望这篇文章的介绍能给大家带来启发。

由于公众号申请的晚,留言功能微信团队已经收回了,不知道什么时候会开放,因此嵌入了小程序, 文末可以点击 留言请点击此处 按钮,进行留言。有问题可微信或者公众号后台提问。

整理编辑首发于微信公众号:老黄陪你读paper

如需转载,请后台留言。

分享给朋友或者朋友圈请随意

参考资料:

Takikawa T , Acuna D , Jampani V , et al. Gated-SCNN: Gated Shape CNNs for Semantic Segmentation[J]. 2019.

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

语义分割:GSCNN 提高边缘和小目标的分割性能

扫码关注我们

老黄陪你读paper

个人微信号 :hzw3839

github:https://github.com/JaryHuang


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

利用Python进行数据分析

利用Python进行数据分析

Wes McKinney / 唐学韬 / 机械工业出版社 / 2013-11-18 / 89.00

【名人推荐】 “科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法。本书在未来几年里肯定会成为Python领域中技术计算的权威指南。” ——Fernando Pérez 加州大学伯克利分校 研究科学家, IPython的创始人之一 【内容简介】 还在苦苦寻觅用Python控制、处理、整理、分析结构化数据的完整课程?本书含有大量的实践案例,......一起来看看 《利用Python进行数据分析》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码