59

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

 4 years ago
source link: https://mp.weixin.qq.com/s/oZGGLMDJJt6DOjEQA9UPVQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

mem2quN.jpg!web

源码github链接:

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

01

问题描述

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

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

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

02

网络结构

6R36j2I.jpg!web

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

2.1

常规流(Regular Stream)

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

JfIr2az.jpg!web

2.2

形状流(Shape Stream)

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

nm6n2uE.png!web

形状流输入的数据全部来自常规流,上述的四个输入分别是常规流的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):

riIrUzR.png!web

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

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

numiM3v.png!web

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

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

2.3

融合模块(Fusion Module)

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

riuaAfR.png!web

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

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

03

学习过程

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

3.1

多任务学习

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

vayIZ3r.png!web

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

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

3.2

多任务正则化

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

q63iQrA.png!web

UZnYNjZ.png!web

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

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

3EVzmyM.png!web

3eEzeua.png!web

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

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

2Q3Izie.png!web

综上所述,整个网络的损失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%,而且特别是在小目标的检测上,如交通标志,交通信号灯和电线杆有很明显的提升,下图是在验证集和测试集上的结果。

j2uE3e7.jpg!web

IRJzE3V.jpg!web

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

I7nayyq.jpg!web

4.2

消融试验

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

Jjq2M3Y.jpg!web

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

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

eMfABvq.jpg!web

BJnm63u.jpg!web

05

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

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

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

byMV3uB.png!web

jQ32myz.png!web

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

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

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

如需转载,请后台留言。

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

参考资料:

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

MfA7ZjE.jpg!web

jI7RVvI.png!web

jI7RVvI.png!web

扫码关注我们

老黄陪你读paper

个人微信号 :hzw3839

github:https://github.com/JaryHuang


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK