本发明涉及一种基于two-stream架构的语义分割方法。
背景技术:
语义分割是计算机视觉的一项重要任务。其可以视为是一种特定的图像处理技术,可用于将图像分为两个或多个有意义的区域。具体来说就是为图像中各个像素分配人为定义的类别标签。
语义分割在如今运用场景十分广泛,如自动驾驶汽车、人机交互、虚拟现实、医学图像分割等等。语义分割分为传统的方法和深度学习的方法。
传统方法有如灰度分割、条件随机场等等。现在随着深度学习时代的来临,传统方法已渐渐被深度学习的方法所代替或作为深度学习方法的一个补充手段。
现如今的深度学习的方法基本上都是基于全卷积网络(fcn)的。在其上做出了各种改进。但总的来说都是一样的原理,即首先对原图进行特征提取,然后将提取到的特征图放大分类。在特征提取阶段会有一系列的卷积以及池化层,池化层用于减少特征图的尺寸(达到减少计算量的效果)以及增大感受野。在特征提取阶段,由于特征图尺寸变小,所以会丢失许多细节,那么在特征图恢复成原图后边缘会变得不那么准确。若是在特征提取阶段不缩小特征图的尺寸,那么计算量会很大并且提取不到具有较大感受野的特征,最后也不能对像素点做到很好的分类。
针对这个问题,有不少人提出了各种解决方案,如提出在上采样过程中融合低层的大分辨率特征图以获得更多的细节信息(fpn)、在能获得较大感受野和较多语义信息的同时还能保持图片较大的分辨率(空洞卷积、aspp)。另外针对特征图在进行双线性上采样和融合低层特征图的特征不对齐的问题也有人提出了使用语义流来指导图像进行上采样以达到特征对其的目的。
技术实现要素:
针对现有基于深度学习的语义分割都是在将原特征图慢慢缩小然后再放大为原尺寸会出现一些问题,本发明提出一种无需下采样和上采样即特征图一直保留原图尺寸并且需要的参数量少也能得到比较好预测结果的基于two-stream架构的语义分割方法。
本发明采用如下技术方案:
一种基于two-stream架构的语义分割方法,其包括如下步骤:
(1)收集语义分割需要的数据集并完成标注;
(2)将经步骤(1)处理后得到的数据集输入two-stream网络结构,得到预测结果;
所述two-stream网络结构包括第一stream结构和第二stream结构,所述第一stream结构和第二stream结构分别从步骤(1)处理后的数据集中获取原特征图。
其中,所述two-stream网络结构为3*3的卷积。
其中,所述第一stream结构包括依次连接的denseblock、transitionlayer、denseblock、transitionlayer和denseblock,所述transitionlayer由一个3*3的卷积层和一个池化层组成。
其中,所述第二stream结构包括依次连接的门控网络、改进的denseblock、门控网络和改进的denseblock,所述改进的denseblock为仅包含3个卷积块且其输入与输出的通道数相同的denseblock。
其中,第一stream结构的denseblock的输出首先经过一个1*1卷积降维,然后上采样到原图大小做为第二stream结构中门控网络的输入g;原特征图经3*3卷积后做为门控网络的输入xl,在门控网络之后是第二stream结构中改进的denseblock,之后再重复上述操作即再次经过一个门控网络和改进的denseblock后得到输出f。
其中,将输出f下采样后与第一stream结构的输出进行融合。
其中,所述融合的具体方法为,首先将输出f输入到通道注意力模块中,之后又接入空间注意力模块,然后将空间注意力模块的结果再次作为引导特征图与f再一次输入到门控网络中,得到的结果经过卷积降维,最后经过一个softmax函数得到最后的预测结果。
其中,所述通道注意力模块为channelattentionmodule。
其中,所述空间注意力模块采用两个criss-crossattentionmodule串联使用。
其中,在第二stream结构中每个门控网络都再分出一个分支接上一个卷积并通过softmax函数预测出结果side-output。
本发明的有益效果在于:本发明的方法能够使特征图在一直保留原图尺寸的情况下,使用参数量少也能得到比较好语义分割结果。
本发明将通道注意力与空间注意力模块串联使用,更好的融合来自两个分支的特征图。
本发明可应用于各种二维的语义分割场景。如可用于裂缝的检测,行人的检测,医学图像分割。对自动驾驶、人机交互、虚拟现实等都有着重要的意义。
附图说明
图1为本发明的网络结构示意图。
图2为本发明的门控网络示意图。
图3为本发明的通道注意力模块示意图。
图4为criss-crossattentionmodule的结构示意图。
图5为两个criss-crossattentionmodule串联的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述。
一种基于two-stream架构的语义分割方法,其包括如下步骤:
(1)收集语义分割需要的数据集并完成标注;
(2)将经步骤(1)处理后得到的数据集输入two-stream网络结构,得到预测结果。
如图1所示,所述two-stream网络结构为一个3*3的卷积,接着是一个two-stream结构。
第一stream结构用于进行常规的特征提取,其可以是普通的分类网络,用它们来提取丰富的语义信息,如vgg、resnet。但由于densenet提取特征的高效性以及较少的计算量,故选用的特征提取网路是densenet,一共用了3个denseblock。其提取到的特征图称为引导特征图,因为其主要作用并不是用于直接预测最后的结果,而是用于引导第二条分支的特征图除去噪声。前面的两个denseblock后面都接有一个transitionlayer,其是由一个3*3的卷积和一个池化层组成。
第二stream结构在整个过程中不对特征图进行池化操作,特征图都维持原尺寸,因此会保留有较为丰富的细节信息。第二个stream首先对前面来的特征图进行一次普通的3*3的卷积。接下来是一个门控网络(attentiongates),attentiongates源自attentionu-net,具体结构如上图2所示。
第一stream结构的denseblock的输出(即引导特征图)首先经过一个1*1的卷积降维,然后上采样到原图大小做为attentiongates的输入g,而第二个stream来的特征图将做为其输入xl。在attentiongates之后是一个改进的denseblock,只包含3个卷积块,并且其输入与输出的通道数是一样的。之后再重复上述操作即再次经过一个attentiongates和改进的denseblock得到输出f。
接着是将f下采样后与第一个stream的输出进行融合。首先将其通道连接后输入到一个通道注意力模块中,用于融合不同通道之间的相关信息,这里参考的是danet中的channelattentionmodule(cam),结构如图3。之后后面又接入一个空间注意力模块,为了有较少计算量,使用的是ccnet中的criss-crossattentionmodule(如图4所示)作为空间注意力模块,参考ccnet中的配置,使用了两个criss-crossattentionmodule串联使用,结构如图5。
然后将上面融合模块的结果再次作为引导特征图与f再一次输入到attentiongate中,之后得到的结果先经过一个3*3卷积和一个1*1卷积,最后在经过一个softmax函数就能得到最后的预测结果last-output。
在之前的第二stream结构中每个attentiongate再都分出一个分支接上一个1*1的卷积和softmax函数预测出结果side-output。
而关于损失函数,一般场景可直接选用crossentropy,而对于特殊的情况如在裂缝分割中会存在前后景像素个数失衡,此时一般可选用focalloss、diceloss、weightscrossentropyloss等。在本发明中,使用了深度监督学习,除最后的预测结果last-output外,各side-outputs也都使用了损失函数进行监督,最后总的损失函数就是各个损失函数的加权和。
本发明的整体构思可概括为:基于一种two-stream的架构,在其中一条用于预测的stream中的,特征图一直保有原图尺寸并且具有较少通道数,因此参数量较少。其重点在于通过使用另一条stream的高层特征图引导其去噪以并加强有用的特征表示,因此本身需要的通道数比较少。
本发明的two-stream网络结构数据训练过程和分割原理为:
数据首先会进入tow-stream结构中,在第一stream中,数据会经过一系列的卷积池化层提取到高层特征。而在第二stream中,不存在池化层,其要去噪的特征图会与第一stream提取到的引导特征图一同送入一个门控网络,在门控网络中会得到一个权重得分图,将其与要去噪的特征图相乘,由于噪声得到的权重很小,所以其在第二stream中经过下一个relu激活函数时不会被激活从而达到去噪的目的,并且重要的特征会因为被分配到较重的权重从而得到加强。就这样取第一个分支网络中多个不同block输出的引导特征图重复进行这样的去噪操作,第二个分支最后得到的特征图只会含有极少噪声和较为精确的边界。
接着将第二个分支最后得到的特征图下采样后与第一个分支的densenet最后得到的特征图进行融合。首先是进行通道连接,然后是进行一个通道注意力模块,目的是为了更好地让这两个stream的不同通道的特征图融合到一起。出来后再加上一个空间注意力模块,空间注意力模块用于捕捉空间长距离的像素点之间的关系并以该权重融合全局信息。
最后将这次得到的引导特征图再次用于引导第二个stream的特征图去除多余的信息,接着将得到的结果再经过一个卷积层和softmax函数后就能最后的结果。
另外,除了网络的最后会预测出结果(last-output),在第二stream中每次去噪后也会预测出一个结果,即side-outputs。除了last-output外,各side-outputs也都加上损失函数,即在网络中使用深度监督,其可让浅层网络能够得到更加充分的训练。
以上实施方式仅为本发明的优选实施例,而并非本发明可行实施的穷举。对于本领域一般技术人员而言,在不背离本发明原理和精神的前提下对其所做出的任何显而易见的改动,都应当被认为包含在本发明的权利要求保护范围之内。
1.一种基于two-stream架构的语义分割方法,其特征在于,其包括如下步骤:
(1)收集语义分割需要的数据集并完成标注;
(2)将经步骤(1)处理后得到的数据集输入two-stream结构,得到预测结果;
所述two-stream结构包括第一stream结构和第二stream结构,所述第一stream结构和第二stream结构分别从步骤(1)处理后的数据集中获取原特征图。
2.根据权利要求1所述的基于two-stream架构的语义分割方法,其特征在于,所述第一stream结构包括依次连接的denseblock、transitionlayer、denseblock、transitionlayer和denseblock,所述transitionlayer由一个卷积和一个池化层组成。
3.根据权利要求2所述的基于two-stream架构的语义分割方法,其特征在于,所述第二stream结构包括依次连接的门控网络、改进的denseblock、门控网络和改进的denseblock,所述改进的denseblock为仅包含3个卷积块且其输入与输出的通道数相同的denseblock。
4.根据权利要求3所述的基于two-stream架构的语义分割方法,其特征在于,第一stream结构的denseblock的输出首先经过一个卷积降维,然后上采样到原图大小做为第二stream结构中门控网络的输入g;原特征图经卷积后做为门控网络的输入xl,在门控网络之后是第二stream结构中改进的denseblock,之后再重复上述操作即再次经过一个门控网络和改进的denseblock后得到输出f。
5.根据权利要求4所述的基于two-stream架构的语义分割方法,其特征在于,将输出f下采样后与第一stream结构的输出进行融合。
6.根据权利要求5所述的基于two-stream架构的语义分割方法,其特征在于,所述融合的具体方法为,首先将输出f输入到通道注意力模块中,之后又接入空间注意力模块,然后将空间注意力模块的结果再次作为引导特征图与f再一次输入到门控网络中,得到的结果经过卷积降维,最后经过一个softmax函数得到最后的预测结果。
7.根据权利要求6所述的基于two-stream架构的语义分割方法,其特征在于,所述通道注意力模块为channelattentionmodule。
8.根据权利要求6所述的基于two-stream架构的语义分割方法,其特征在于,所述空间注意力模块采用两个criss-crossattentionmodule串联使用。
9.根据权利要求6所述的基于two-stream架构的语义分割方法,其特征在于,在第二stream结构中每个门控网络都再分出一个分支接上一个卷积并通过softmax函数预测出结果side-output。
技术总结