内容简介:本次介绍的文章发表在ICCV2019,由英伟达公司的学者提出的一种用于语义分割的双流CNN结构(GSCNN)。相比于传统的分割模型,GSCNN主要加入了一个单独的分支用来学习边缘信息,称之为形状流。这一结构改进使得分割模型能够更好的预测边缘信息,显著的提升了小物体和细物体的检测效果。语义分割在自动驾驶,3D重建,图像生成,医学检测等领域有很多的研究。从FCN的提出以来,语义分割主要利用分类的架构来进行像素级别的分类。主要遇到的问题是低分辨率和语义信息不足等。许多研究者也提出了融合不同层的语义信息,以及利用多
本次介绍的文章发表在ICCV2019,由英伟达公司的学者提出的一种用于语义分割的双流CNN结构(GSCNN)。相比于传统的分割模型,GSCNN主要加入了一个单独的分支用来学习边缘信息,称之为形状流。这一结构改进使得分割模型能够更好的预测边缘信息,显著的提升了小物体和细物体的检测效果。
源码github链接:
https://nv-tlabs.github.io/GSCNN/
01
问题描述
语义分割在自动驾驶,3D重建,图像生成,医学检测等领域有很多的研究。从FCN的提出以来,语义分割主要利用分类的架构来进行像素级别的分类。主要遇到的问题是低分辨率和语义信息不足等。许多研究者也提出了融合不同层的语义信息,以及利用多尺度分辨率的上采样模块等,来缓解这些问题。
但是语义分割在细小的目标分割上还存在一些问题。这个问题可以从网络结构的内在出发。 单一网络的结构融合了非常多的不同信息:颜色、形状以及纹理信息。 而这些信息被融合在一起处理,可能会导致对识别重要的信息没那么的突出。比如检测对象的时候,最理想的是根据边界和形状信息来进行识别,但是如果信息流中包含了很多的颜色和纹理等低级的特征,可能会导致识别问题。一个有力的佐证是,例如ResNet,DenseNet等识别效果较好,主要是不同层级的信息流在网络向前流通,缓解了到达最后一层的信息流丢失。
基于上述问题,本文提出了一个双流CNN结构,通过单独分支学习形状,并引入原分支信息,共同作用来提高语义分割的性能。
02
网络结构
如上图所示是GSCNN的网络结构,网络结构总共分为三部分:常规流(Regular Stream),形状流(Shape Stream)和融合模块(Fusion Module)。
2.1
常规流(Regular Stream)
输入是三通道图像,网络选择可以是ResNet,VGGNet等基础模型,网络输出是一个尺寸为[N,C,H/m,W/m]的特征图,m是网络尺寸的缩小率。
2.2
形状流(Shape Stream)
形状流是这篇文章的重点,其结构如下图所示:
形状流输入的数据全部来自常规流,上述的四个输入分别是常规流的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):
如上图所示,输入的数据经过Concat连接,经过一系列卷积,归一化等等操作,通过sigmoid产生一个权重值:
接下来权重alpha与形状流的输入点乘并加上Input Feature,最后经过一个卷积权重作用后输出[N,C,H,W]的特征图。
GCL层相当于作为一个门控开关一样,而常规流中的特征进来,共同作用产生一个权重,这个权重类似于开关的作用,将浅层的不相关边界信息滤除掉,重点关注边缘信息,增强边缘识别的能力。
通过GCL层之后的输出信息,同理经过后续的res2分支,再和r2共同作用到GCL层,知道最后通过卷积和sigmoid函数,输出一个[N,1,H,W]的边缘图。
2.3
融合模块(Fusion Module)
融合模块主要是采用ASPP模块进行采样。
文章中对这一部分介绍的比较简单,通过看源码来理解下具体融合的特征。源码中融合模块中的输入来自四部分, 主要是Canny和形状流输出的两个特征,称之为形状特征。还有常规流中的输出以及中间层M2的特征图一并作为输入 。四部分作为输入,经过卷积等等一系列操作,然后融合,最后输出分割图。
以上就是整体的网络结构,通过常规流和形状流数据的交错,再共同作为融合层的输入,保留了很多的边界信息,使得分割更有效。
03
学习过程
了解了网络的组成结构,接下来了解下网络的学习过程。由于网络加入了边缘预测,因此是一个多任务学习过程。
3.1
多任务学习
两个任务,一个是进行多分类分割,生成语义分割图。一个是进行边缘学习,生成边缘信息图。所以损失由两部分组成:
其中二元信息熵(BCE)作用在形状流上,对形状流的输出进行计算损失。常规流和形状流通过门控卷积层相连,因此这个损失作用在两者上。同时, 由于边缘预测过程中边界和非边界的像素非常的不平衡,所以采用一个beta参数来进行平衡(这里没体现)。
对于多元信息熵,其预测C个类,为全局输出,损失作用作用整个网络,更新所有参数。
3.2
多任务正则化
网络最后输出的语义分割图可以计算获得边界信息,为了使得边界信息更准确,对最后的语义分割图进行正则化:
公式(4)中G是高斯滤波器。通过公式4计算输出的语义分割图的边缘信息。对于真实标注图,同样利用上述的公式进行边缘信息计算。为了保持两者的一致性,利用两者计算的结果差值的绝对值作为损失(公式5),目的使得模型输出的分割图边界与标注值更接近。
同样的,形状流输出的边界预测值应该与最后输出完整的分割图的边界相同,因此加入了这两者的正则化:
其中,Sp代表这形状流输出的预测值,因此公式6统计的是形状流输出概率大于给定阈值thrs的这些像素点的损失,对形状流输出边缘图和最终输出的分割图的边界信息进行统一。
总体的正则化损失为两者相加。语义分割图与真实标签图,语义分割图与预测边缘图都分别进行了正则化。
综上所述,整个网络的损失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%,而且特别是在小目标的检测上,如交通标志,交通信号灯和电线杆有很明显的提升,下图是在验证集和测试集上的结果。
在边界的预测上,和DeeplabV3+做对比,整体上优于基础模型。
4.2
消融试验
在试验中,加入了GCL层,正则化损失,Canny边缘图等,为了看上述各个子部分的效果,作者做了消融试验。
从消融试验的结果来看,加入GCL使得IoU提升了1.5%左右,而Canny的加入提升了0.3%。而最有效的是加入了正则化,性能提升3%,边缘图的统一非常的有必要。
最后,附上作者的预测结果,GCL层之后的边缘细节刻画确实比较美妙。
05
由于只有1个1080ti的GPU,本文的试验复现存在硬件上的困难,未来如果有条件了再进行实验。目前主要看看源码理解内容。当然这篇论文中还有很多思考的地方。 比如预测边缘图的形状流的每次都线性插值到原图,是否可以减少图尺寸? 既然分隔出了形状流,那么纹理和颜色空间能否分开呢?
总的来讲,本文提出的解决边界问题的思想有很大的启发,通过网络上改进,将形状,颜色和纹理的信息给分隔开来,独立进行边缘检测,提高边缘检测的性能。
对于边缘检测问题,U-Net中有一个简单的方式将边缘的权重给加大来提高边缘检测的 性能,当然这个只能作为个小trick。
实际上在很多实际项目上,预测的内部不完整可能影响不大,如果边界能够预测的很准,那么剩余的其他有些问题可以通过后处理来解决一些问题。希望这篇文章的介绍能给大家带来启发。
由于公众号申请的晚,留言功能微信团队已经收回了,不知道什么时候会开放,因此嵌入了小程序, 文末可以点击 留言请点击此处 按钮,进行留言。有问题可微信或者公众号后台提问。
整理编辑首发于微信公众号:老黄陪你读paper
如需转载,请后台留言。
分享给朋友或者朋友圈请随意
参考资料:
Takikawa T , Acuna D , Jampani V , et al. Gated-SCNN: Gated Shape CNNs for Semantic Segmentation[J]. 2019.
扫码关注我们
老黄陪你读paper
个人微信号 :hzw3839
github:https://github.com/JaryHuang
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 语义分割领域开山之作:Google提出用神经网络搜索实现语义分割
- 使用DeepLab进行语义分割
- 超强语义分割算法!基于语义流的快速而准确的场景解析
- MMSegmentation:标准统一的语义分割框架
- PyTorch语义分割开源库semseg
- 一文带你读懂 SegNet(语义分割)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
利用Python进行数据分析
Wes McKinney / 唐学韬 / 机械工业出版社 / 2013-11-18 / 89.00
【名人推荐】 “科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法。本书在未来几年里肯定会成为Python领域中技术计算的权威指南。” ——Fernando Pérez 加州大学伯克利分校 研究科学家, IPython的创始人之一 【内容简介】 还在苦苦寻觅用Python控制、处理、整理、分析结构化数据的完整课程?本书含有大量的实践案例,......一起来看看 《利用Python进行数据分析》 这本书的介绍吧!