本文引入了橄榄型分布来衡量编码器中不同网络阶段卷积层数的测试精度和推理效率。此外,在解码器中提出了一个轻量级的上采样特征金字塔块(UFPB),以融合编码器最后3个阶段的特征。CarNet在推理效率和测试精度之间取得了较好的平衡,优于现有的最先进的方法。
Pixel-wise裂纹检测是一项具有挑战性的任务,因为裂纹的连续性差,对比度低。现有框架通常采用复杂的模型,精度较高,但推理效率较低。
在本文中提出了一个轻量级的编码器-解码器体系结构CarNet,其可以高效和高质量地进行裂缝检测。为此,首先提出理想的编码器在不同阶段卷积层数的橄榄型分布。具体来说,随着编码器中网络阶段的加深,在初始网络阶段对模型输入进行压缩后,卷积层数呈下降趋势。
同时,在解码器中引入了一个轻量级的上采样特征金字塔模块,学习丰富的层次特征用于裂纹检测。特别将最后三个网络阶段的特征图压缩到相同的通道,然后使用不同倍数的上采样将其调整为相同的分辨率进行信息融合。
最后,在Sun520、Rain365、BJN260和Crack360四个公共数据库上进行的大量实验表明,CarNet在推理效率和测试精度之间取得了较好的平衡,优于现有的最先进的方法。
由于整个编码器-解码器网络看起来像一辆小汽车,因此作者将其称之为CarNet。该文章的主要贡献如下:
在深度学习中,ResNet在防止梯度爆炸和梯度消失方面发挥了重要作用。由于ResNet最初是为ImageNet构建的,因此涉及到很高的模型复杂性。因此,如果直接使用ResNet作为裂纹检测模型的编码器,推理效率会不太友好,影响其在实际中的应用。
一般来说,模型复杂性包括空间复杂性和时间复杂性。通过模型参数可以粗略估计空间复杂度。时间复杂度可以通过浮点运算(FLOPs)反映出来。卷积运算是神经网络中常用的运算。以带偏置项的卷积运算为例,其参数和FLOPs分别为:
其中,
和
分别表示卷积核的宽度和高度。在VGG系列之后它们通常被设置为3。
和
分别表示输入通道和输出通道,
和
分别表示输出特征图的宽度和高度。
随着网络深度的加深,卷积通道数量会增加,特征图的分辨率会降低。由式(1)可知,为了降低模型空间复杂度,编码器中网络层次越深,卷积层越少。
另一方面,根据(2),为了降低模型的时间复杂度,理想的编码器在网络的不同阶段卷积层数应该呈橄榄型分布。换句话说,在中间网络阶段应该有更多的卷积层,在初始和尾部阶段应该有更少的卷积层。
该思想主要考虑了初始阶段的高分辨率和后阶段的大卷积通道。总之,提出卷积层的数量从网络的第2阶段开始减少。
具体来说,针对编码器,作者提出以下设计流程:
图(a)
如图(a)所示,在DB模块中,首先以并行方式将输入分别进入一个stride=2的3×3卷积和stride=2的最大池化层。然后,通过cat操作融合2分支的特征映射,再通过BN层和ReLU。
图(b)
例如,当使用ResNet34作为基准时,可以在编码器的靠后网络阶段使用2个残差块,对应4个卷积层。 注意,ResNet34在后部阶段有3个残差模块(RB),如图(b)所示,利用identity mapping作为一个shortcut,通过加法操作将2个叠置卷积层的输入和输出融合。 确定中间阶段的卷积层数。为了便于与ResNet34比较,设计的编码器也有34层。考虑到4个下采样块和尾网络阶段分别占用4个卷积层,编码器在第二和第三阶段可以分别使用7和6个残差块。注意,在ResNet34中,除了第一阶段的卷积层和最后的完全连接层外,其余阶段分别应用3个、4个、6个和3个残差模块。
图2
首先,受HED和Deeplab V3+的启发提出了一个轻量级的上采样特征金字塔块(UFPB)来捕获丰富的层次特征。
图(c)
具体来说,如图(c)所示:
图(d)
接下来,构造一个分解卷积块(DCB)进一步增强了解码器的表示性。由于裂缝大多是线性结构,作者采用了2个级联分解卷积(即一个3×1和1×3卷积),替换解码器中一个常用的3×3卷积,如图(d)。
然后,利用1×1卷积将特征映射压缩到N−1个通道,其中N表示类别的数量。然后,通过四倍上采样将压缩后的特征映射恢复到模型输入大小。
图e
最后,再次采用DCB模块开发丰富的卷积特征,然后将其提供给sigmoid分类器,如图(e)所示。
综上所述,所提出的编解码器网络构成了总体框架,如图2所示。因为它看起来像一辆车,所以我们叫它CarNet。此外,使用交叉熵损失来训练所提网络结构。
对于解码器网络,虽然模型是基于HED和Deeplab V3+,但在很多方面与他们不同。下面,简要说明它们在解码器上的差异。
Deeplab V3+依靠2次4倍上采样将编码器网络的输出逐渐恢复到模型输入的大小。除了2个4倍上采样外,所提模型还利用了一个额外的双重上采样来融合更多的特征信息,如UFPB模块所示。
同时,HED采用了更多不同倍数的上采样,将每个阶段的特征图直接还原到模型输入尺寸。因此HED在将低分辨率特征映射调整到模型输入尺寸时需要采用较大的反卷积核,因为其中的像素需要较大的接受域。同时,反卷积核在上采样过程中均为3个,减少了许多参数和计算量。
所提模型利用了最后3个阶段的特性,HED利用了所有网络阶段的特性,而Deeplab V3+利用了第2和最后2个阶段的特性。另外,在信息融合方面,其他2个模型采用通道连接,而所提网络采用加法操作,在相同条件下可以减少参数和计算量。
与HED和Deeplab不同V3+,在将特征映射恢复到模型输入大小后,使用卷积进一步细化。考虑到裂缝大多为线性结构,为了节省计算,采用2个堆叠的非对称卷积核来代替一个普通的方形卷积核。
所提模型和Deeplab V3+使用一个解码器,HED使用6个解码器分别对应一个融合输出和5个侧输出。因此HED需要对不同输出的损失函数进行权衡,这就造成了模型训练难度的加大。此外,更多的分支结构增加了内存访问成本,从而降低了模型的推理效率。
作者在4个公共数据库上评估网络,分别是Sun520、Rain365、bjn260和Crack360。
Sun520由520张在晴天拍摄的照片组成。它是目前最大的开源裂缝数据库。此外,裂缝图像的拍摄时间包括上午、下午和黄昏。换句话说,数据具有丰富的图像亮度。
Rain365包含了在雨后白天拍摄的365张图片。这些裂缝图像是指三种不同的背景,即完全湿润、部分湿润、部分干燥或完全干燥。其中全湿背景占多数。
BJN260包含260张北京夜景图片。夜晚的街道环境复杂多变,如光源、亮度强度等,造成裂缝检测困难。
为了节省计算资源,将上述三个数据库中图像的分辨率从3968×2240调整为480×320。在Sun520,Rain365,BJN260上分别随机选择400,300,200张图像进行训练,剩下的120,65,60张图像分别进行测试。
此外,为了验证模型对相对连续裂纹的影响,作者使用了cracktree260和CRKWH100分别用于训练和测试。前者包含260张图像,每个图像有800×600像素。这些图像在训练时被裁剪成512×512。后者包含100幅图像,每幅图像有512×512像素。为方便起见,将以上两个数据集统一为一个数据库,Crack360。
通过在SUN520数据的实验结果可以看出,CarNet有更好的结果以及鲁棒性,同时具有更快的推理速度。
通过在RAIN365数据的实验结果可以看出,CarNet有更好的结果以及鲁棒性,同时具有更快的推理速度。
通过在BJN260数据的实验结果可以看出,CarNet有更好的结果以及鲁棒性,同时具有更快的推理速度。可以看出即使是夜间依然可以有很好的效果。
[1].CarNet: A Lightweight and Efficient Encoder-Decoder Architecture for High-quality Road Crack Detection