APP下载

ERCUnet:一种基于U-Net改进的道路裂缝检测模型

2022-07-29刘宇翔沈占峰

计算机与现代化 2022年7期
关键词:残差卷积神经网络

刘宇翔,佘 维,沈占峰,谭 帅

(1.郑州大学软件学院,河南 郑州 450001; 2.中国科学院空天信息创新研究院,北京 100101)

0 引 言

道路裂缝是最常见的一类路面病害,早期道路裂缝主要通过人工进行检测,然而道路裂缝在形状上不规则,且覆盖面积广,延伸距离长,导致人工检测的工作量大,难以兼顾效率与准确度。随着计算机技术的发展,产生了多种自动检测算法。传统的方法有基于阈值分割的算法Canny算法[1]和Otsu大津法[2],然而由于路面环境和道路表面特征的复杂性以及以上算法的普适性、鲁棒性不高,导致最终的效果不够好。随后产生了基于最小代价的路径搜索算法[3]、基于SVM支持向量机的检测算法[4]、CrackTree裂缝检测算法[5]等,这些算法一定程度上解决了裂缝检测的问题,但在应用中仍存在路径搜索算法非常耗时,SVM算法和CrackTree设计较为复杂的问题。后来的神经网络模型很好地平衡了速度、准确度和设计难度,越来越多的裂缝检测开始使用神经网络模型。

神经网络在分类和检测方面表现出独特的优势,检测的效果有了显著的提升[6-8]。文献[9-11]基于卷积神经网络实现了定量化信息提取。在目标检测领域,最初的经典卷积神经网络如AlexNet[12]和VGG[13]被用于图像识别,即一图单目标识别,后来又产生了多目标检测等诸多目标检测算法。文献[14-15]提出了基于卷积神经网络实现混凝土道路表面的裂缝病害识别的方法。裂缝检测结果有多种形式,李岩等人[16]使用YOLO v5目标检测算法框出裂缝,李良福等人[17]使用改进PSPNet图像分割算法检测桥梁裂缝得到图片掩码。图像分割分为语义分割和实例分割,裂缝检测应用场景通常使用语义分割模型,典型的分割模型结构包括Shelhamer等人[18]提出的全卷积网络Fully Convolutional Networks(FCN)和Ronneberger等人提出的兼顾特征提取和语义分割的U形网络U-Net[19-21]。

本文设计并实现一种基于U-Net模型改进得到的弹性残差裂缝检测U形网络模型(Elastic Residual Crack U-shaped Network, ERCUnet)。该模型综合了U-Net和ResNet等模型的优点,模型结构较为简单,使用了U形编码器解码器结构进行多尺度特征融合,提升模型的检测效果;使用残差结构,降低了训练中梯度消失的可能性,使模型训练更加容易。本文模型在结构上对U-Net进行了更加适合于裂缝检测分割任务的改进,传统的U-Net在U形结构中越靠近底层的Encoder和Decoder卷积层中卷积核数量越多,从顶层的卷积层含有64个卷积核到底层卷积层含有1024个卷积核。本文提出的ERCUnet得益于残差结构的特点,可以对已经训练完成的网络中的特定残差块直接进行短路,即输出直接返回输入结果而不进行卷积运算。最终实验发现,短路深层次的卷积层对结果的影响并不大,由此可以猜想深层次的卷积核存在冗余而在浅层添加更多的卷积核能提升最终效果。按照这个思路,最终设计出本文使用的弹性残差裂缝检测U形网络模型ERCUnet。该模型中几乎所有的残差层均采用相同的结构,即经过残差块运算后得到的特征图层数相同。由于更加均衡和格式化的模型设计(几乎所有卷积层都只含有128个卷积核,而不像U-Net的卷积层含有64~1024个卷积核不等),该模型还具有较好的伸缩性,可以根据需要通过统一修改残差块中卷积层的数量以及卷积层中卷积核的个数扩充或缩减模型的规模(参数量),经过均衡格式化设计的ERCUnet模型的参数量仅仅约为U-Net模型的十分之一。最终经过训练甚至达到了更好的效果。ERCUnet模型的训练及优化流程见图1。

图1 ERCUnet模型的训练及优化流程

1 数据预处理

本文实验基于公开的道路裂缝数据集CrackForestDataset[22]。CrackForestDataset有118张带有标注的图片,标注中背景部分被标为0,裂缝部分被标注为1,还有部分如被裂缝环绕所形成的孤岛等被标注为2及以上编号。本文的目的在于检测裂缝,故将标注为2及以上的部分重新编号为0(背景)。由于分割数据集需要对图片数据进行像素级别的标注,故制作此类数据集的工作量大、复杂度高,导致公开的路面裂缝数据集非常少,所以要对数据集进行增广。实验中先将数据集按照5∶1的比例划分为训练集和测试集,然后对训练集进行增广并用训练集训练神经网络模型,训练过程中隐藏测试集,最终用测试集数据评价神经网络模型的训练效果。

1.1 数据增广

训练集数据的增广采用动态的数据增广方式,是由多种引入了随机数的图片处理方法组成的随机过程,主要从以下4个方面增强数据:1)数据个体的分布;2)数据总体的分布;3)特征(对象)的位置分布;4)特征在特征空间的分布。数据增广方法及流程见图2,数据增广后的效果见图3。修改数据个体分布是通过对整张图片添加随机高斯噪声,改变像素点在HSV色彩空间的分布,具体体现为修改了色彩空间中像素点与像素点之间的位置。修改数据总体的分布是对整张图片所有像素点进行的偏置操作。修改对象(特征)的位置分布是修改了对象(特征)在图片中的位置以及对象(特征)与对象(特征)的相对位置。修改特征在特征空间的分布是对图片进行随机裁剪并拉伸与仿射变换扭曲。

图2 训练集数据增广方法及流程

图3 同一张图片经过数据增广后效果图

1.2 数据规范化

输入数据在不同特征通道上因为量纲的不同有时会存在较大的差异,具体体现为部分特征通道的数据范围较小,部分特征通道的数据范围较大。本文考虑到数据集中样本数量较少,样本较为单一,用样本估计总体可能存在较大误差,而图片颜色通道取值范围均为0~255,各个通道的重要性几乎一致,故采用直接归一化的方式对数据进行规范化。直接归一化既压缩了数据的取值范围,又保留了图片整体像素在色彩空间上的分布情况。直接归一化见公式(1),其中xi为输入图像的第i个图层,x′i为输出图像的第i个图层。

x′i=xi/255

(1)

2 ERCUnet神经网络模型

FCN是最早的全卷积神经网络图像分割模型。FCN图像分割神经网络模型有3大特征:1)用卷积核代替全连接层形成全卷积神经网络,使模型可以适应多种不同尺寸的输入图片;2)通过反卷积增大特征图的尺寸,为特征融合做铺垫;3)神经网络的跨层连接可实现不同尺度的特征融合[18]。U-Net模型更是被应用于各种图像分割问题中,因为其独特的U形encoder-decoder结构在小数据集上具有良好的表现[19]。ResNet模型的残差结构可以有效地避免深度神经网络训练中梯度消失的问题[23]。ERCUnet实验模型是基于U-Net模型的U型特征提取融合结构和ResNet模型中的残差结构改进而来的,具体结构如图4所示。

图4 ERCUnet网络模型结构

本文采用的ERCUnet模型参考了U-Net模型的encoder-decoder和多尺度特征融合的U型结构,具体的结构采用了模块化设计,将绝大多数卷积层合并为数个Res残差块,大大降低了链式求导中梯度截断的可能性,考虑到裂缝识别任务中裂缝的语义信息不多,像素级别检测中的重要性不是特别高,故减少了特征提取网络中深层网络卷积核的数量,考虑到裂缝检测任务中裂缝的深层语义信息对于最后的检测不是特别重要,而浅层的纹理信息对于检测更加重要,故对U-Net深层卷积核的数量进行缩减。为了设计一个简单而又方便扩展修改的网络,将所有的Res块采用了相同的输入层结构和内部结构,使整个网络几乎所有块的连接部分的特征层数量相等,让网络的设计变得更加简单。在InputBlock中采用5个卷积核将特征层数量从输入的层数提升至Res块所需的输入数量。CatLayer中使用1个卷积核将Concat拼接得到的特征层数量规范为Res块所需的输入数量。最后通过Detector将维数压缩至二分类任务所需的二维。

ERCUnet模型采用了何凯明等人提出的ResNet模型[21]中的残差思想,有效避免了梯度消失,有利于更深的网络结构设计,如图5是ERCUnet模型设计的残差结构。

图5 ERCUnet的残差结构

ERCUnet模型在每次卷积后使用BatchNormal方法进行批规范化,批规范化能有效避免计算中数据过大导致溢出,并且批规范化能让数据分布中心位于0附近,提升网络的学习效率[24],LeakyReLU则避免了ReLU小于0时因没有梯度导致网络更新效率不高的问题,提高了网络的学习效率[25]。

3 模型评估与损失函数

3.1 模型评估指标

本文实验的评价标准采用查全率(Recall)、查准率(precision)、F1分数、噪声比(Noise)、准确率(Accuracy)。

查全率表示模型查出部分占应查出部分的百分比,查准率表示模型查出部分中的正确部分占模型查出部分的百分比,查全率与查准率公式如下:

(2)

(3)

F1分数是查全率与查准率的调和平均数,兼顾了查全率和查准率,F1分数公式见式(4)。

(4)

噪声比反应模型查出部分中错误的部分占模型查出部分的百分比,准确率表示模型识别正确的部分占总体的百分比,噪声比和准确率的公式如下:

(5)

(6)

其中,TP(True Positive)表示正样本被预测为正样本的数量,FP(False Positive)表示负样本被预测为正样本的数量,FN(False Negative)表示正样本被预测为负样本的数量,TN(True Negative)表示负样本被预测为负样本的数量。

3.2 损失函数

图像分割中常用均方误差与交叉熵损失函数,其中交叉熵损失函数(Cross Entropy Loss Function)相比均方误差(Mean Squared Error)可以用在分类任务让梯度下降优化过程较为平滑,交叉熵损失函数如公式(7)所示。其中x[j]表示输入x为j类的值,x[class]即输入x真值维度上的值。

(7)

为了提升模型的检测效果,ERCUnet模型将F1引入损失函数,F1与交叉熵共同组成损失函数。ERCUnet使用的损失函数如式(8)所示。

Loss=CrossEntropyLoss+(1-F1)

(8)

4 实验及结果分析

4.1 实验环境及参数设计

本文的实验及测试是基于Python语言深度学习Pytorch框架[26]。实验环境为:Windows10操作系统;NVIDIA GeForce RTX 3090 GPU,专用内存为24 GB;Intel(R) Core(TM) i9-10900K CPU @3.70 GHz。U-Net与本文ERCUnet均在经过本文动态数据加强的数据集上进行训练,每个模型分别在训练集上各迭代50次。为了加快网络的训练,防止局部抖动,使用mini-batch训练方法,每4个数据为一个mini-batch进行一次学习。采用误差反向传播的链式求导求整个网络的梯度。采用Adam优化方法进行梯度下降优化网络,实验表明Adam效果总是优于SGD随机梯度下降。

4.2 结果分析

为了检验本文所提出的模型的效果,使用PSPNet[27]、SegNet[28]、U-Net、U-Net(BN)与本文模型ERCUnet和ERCUnet-tiny进行对比实验。实验中的U-Net在原始的U-Net基础上对要进行卷积操作的特征图进行0填充,卷积运算前后特征图的尺寸相同。本文实验中的U-Net(BN)在此基础上又在卷积核后与激活函数前添加了BatchNormal层。实验中具体学习率、各个模型学习过程中的Loss如图6所示,由于ERCUnet与ERCUnet-tiny损失函数中添加了F1成分,导致训练过程没有单纯的交叉熵损失函数的U-Net(BN)平滑,最终所有模型在训练50批时都基本收敛。训练过程中的测试效果如图7所示,从中可以看出训练50批数据时,网络均基本收敛,继续训练的意义不大,可以停止训练。

(a) 训练所用学习率

(a) 查全率统计图

本次实验的评价标准有查全率、查准率、F1、噪声比、准确率。将PSPNet、SegNet、U-Net、U-Net(BN)模型与本文提出的ERCUnet算法,以及通过调整ERCUnet的参数,减少残差块中卷积层的数量和卷积层中卷积核的数量,获得的更小的模型ERCUnet-tiny进行对比实验。实验结果如表1所示,显然ERCUnet模型有良好的伸展性,可以容易地对网络结构进行调整,以满足不同应用平台的需要,同时在采用相同训练方法时还不会导致结果的大幅下降。ERCUnet在Recall、F1和Accuracy方面均超过PSPNet、SegNet、U-Net、U-Net(BN)模型,同时还拥有更小的参数规模,参数量仅约为U-Net(BN)的1/10。ERCUnet与ERCUnet-tiny模型具体结构如表2所示,其中CBL代表卷积层、批规范化层和激活函数的组合。最终在测试集图片上的识别效果如图7所示。由图8可以看出,ERCUnet的检测结果在细节上要好于U-Net(BN)等模型,检测结果更加接近于真实结果,ERCUnet-tiny在参数量远远小于U-Net(BN)等模型的情况下,检测结果在细节上也取得了优于U-Net(BN)等模型的效果。

图8 6种模型的测试效果

表1 训练后的模型在测试集上的比较

表2 ERCUnet和ERCUnet-tiny的结构对比

5 结束语

ERCUnet模型通过特征图拼接与残差结构实现了特征融合,残差结构也有效避免了深层卷积神经网络梯度消失的现象。ERCUnet模型由于其高结构化和可塑性,可以根据需求调整参数,调节网络深度与残差块中CBL的个数进而灵活地控制网络的整体大小。ERCUnet模型调节了不同深度卷积核(特征图)的数量,使所有深度的Res残差块输出特征图尺寸相同,相当于增加了浅层特征图的使用,减少了深层特征图的使用。实验结果表明,这样的改进一方面可以减小模型参数量,使模型更高效、结果更稳定,另一方面使模型在边缘细节上精度更高。ERCUnet训练所用的损失函数在原本的交叉熵损失函数中添加了F1部分,使模型在查全率和查准率上更加均衡。实验使用了更加全面的数据增广算法,使得模型在小数据集上也能取得较好的效果。实验显示,ERCUnet在测试集上比U-Net(BN)的Recall和F1分别提升了6.71个百分点和2.18个百分点,而参数量仅为U-Net(BN)的13.30%,ERCUnet在Recall和Precision上更为均衡。实验中采用的ERCUnet-tiny就是通过调整残差块的输入输出和内部结构等参数进一步缩小了模型的参数量,在参数量仅为U-Net(BN)模型的2.39%的前提下取得了与U-Net(BN)相近的效果。

猜你喜欢

残差卷积神经网络
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于递归模糊神经网络的风电平滑控制策略
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
基于深度卷积的残差三生网络研究与应用
从滤波器理解卷积
基于神经网络的中小学生情感分析