基于Double-D算法的舌像检测

2020-07-20 06:16刘佳丽孙自强
计算机工程与设计 2020年7期
关键词:剪枝残差卷积

刘佳丽,孙自强

(华东理工大学 化工过程先进控制和优化技术教育部重点实验室,上海 200237)

0 引 言

传统的舌像识别方法基于阈值分割、灰度差分和加权二值[1]等算法来分配图像分割子块的权重,以此提取局部图像特征信息,最终将处理过的所有子块连接成完整的纹理特征图,但这类方法破坏了图像数据的维度特征,计算量大且泛化性能弱,不利于模型迁移。之后随着卷积神经网络在图像处理上的优势越发明显,新的方法普遍利用卷积网络和全连接层结构来识别图像,以 R-CNN 和SPPnet为基础,提出了一种并行网络预测结构Fast R-CNN[2],进一步设计权值共享的特征网络RPN来预测锚框[3],这类算法直接对图像信息进行卷积处理,保留了维度之间的特征关系,模型的识别分类精度有了很大的提升,但缺点是检测时间较长;Redmon等提出了一个端到端的实时检测模型YOLO[4],并不断改进网络结构,优化坐标定位,使其不仅可以满足高精度的输入要求[5],而且多尺度预测的精度高,检测实时性也得到了明显提升。因此,本文选择YOLOv3的特征提取框架,并借鉴DenseNet在参数处理上的优势,改进得到Double-D网络,对其通道剪枝以降低模型复杂度,使其更有利于舌像检测,并讨论了输入图像尺度和微调网络层数等参数变化对目标检测的影响。

1 YOLOv3方法原理

Yolov3本质上就是利用深度残差网络作为特征提取框架,将目标检测和分类统一看作回归问题,网络训练时直接从完整图像上进行全局推理[6],实现端到端的实时检测。算法借鉴了多尺度锚框预测,使得网络容易学习,训练也更加高效;改进了细粒度特征融合算法,并加深了特征提取网络,充分利用底层特征的定位细节信息,同时高层特征得到加强,使得不同尺度下的特征都含有丰富的纹理信息,检测结果更加准确。Yolov3整体框架如图1所示,网络具体设计步骤如下:

步骤1 建立特征提取架构Darknet53。该部分由5个残差块组成,每个残差块分别包含1、2、8、8、4个残差结构[7],且每个残差块之间用3×3的卷积连接。对于输入维度为416×416×3的图像,经过5个残差块之后的维度分别降为{208×208×64,104×104×128,52×52×256,26×26×512,13×13×1024};

步骤2 细粒度特征融合。将13×13×1024的特征输出经过卷积、批量归一化和leakly ReLU激活操作得到13×13×256,对其上采样并与高分辨率、低语义信息的底层特征26×26×512进行通道融合[8],经过卷积激活操作得到26×26×256,同样对其上采样及通道融合,最终经卷积计算得到52×52×128;

步骤3 维度聚类和多尺度识别定位。利用Kmeans维度聚类对先验框大小进行初始化,聚类分析时以边界框与聚类中心边界框之间的IOU值作为距离指标,即

d(box,centroid)=1-IOU(box,centroid)

(1)

模型预测了9种不同大小的先验框尺度{10×13,16×30,33×23,30×61,62×54,59×119,116×90,156×198,373×326},较大的先验框对应预测低分辨率特征,较小的先验框对应预测高分辨率特征。最终得到N×N×(4+1+C) 的预测结果(N=13,26,52),其中4为预测坐标参数个数,1为预测置信度,C为预测类别。

步骤4 输入图像进行模型训练,经过特征提取、通道融合等操作得到训练权重,之后对实际图像进行预测。

图1 YOLOv3结构

2 改进Double-D算法模型

2.1 密集连接

随着网络的不断加深,训练过程中网络的卷积、池化操作对原始数据进行特征提取并向下传递的过程中,数据信息不可避免地流失,高层网络获得的特征信息可能缺失了一些重要线索,导致模型效果退化。同样的,深度卷积神经网络中的梯度消失仍是需要考虑的问题。因此,有效保留底层图像特征信息和高效的梯度信息传递成为训练深度网络的关键问题。

受到dense block结构的启发[9],在保证YOLOv3框架的残差块中各卷积层之间最大程度的特征信息传输的前提下,将所有残差结构的特征输出通过add直接映射连接,得到Double-D模型。图2显示了残差块深度为4时,部分Double-D网络的层级连接结构。

图2 部分Double-D网络结构(residual block=4)

可以看到,网络的连接由原来的L变为L(L+1)/2, 每一个残差结构的输入来自前面所有层的输出,即第l层的输出xl是前 {0,1,2,…,l-1} 层的卷积计算,可表示为

xl=Hl(x0,x1,…,xl-1)

(2)

这样的直通映射结构加强了底层特征信息的传递,而且每层都可以直接访问底层输入信号的梯度,使得网络训练充分利用底层特征信息和梯度信息,从而得到隐含的深度监督。

2.2 通道剪枝

考虑到添加密集映射结构可能会导致模型过参数化,大量的冗余连接使得信息传递更加复杂,模型计算量大大增加;同时,由于原始的YOLOv3网络设计时针对COCO数据集80类的分类目标,模型通道数为{64,128,256,512,1024},而实际使用时模型的检测类别较少。考虑以上两点,提出通道剪枝[10]来简化Double-D模型通道,即根据LASSO回归来约束通道权重值,直接移除稀疏权重的冗余通道,使得模型更加精简,节省计算空间,降低对硬件的要求,并且不会降低模型的检测性能。Double-D网络模型通道剪枝结构如图3所示。

图3 通道剪枝结构

图3右侧虚线框中表示利用优化算法对通道剪枝并重建的过程,B表示通道剪枝前的特征图,通道数是c;W表示n个维度是c×kh×kw的卷积核;C表示通道剪枝后的特征图,通道数是c′。算法利用L0范数选择β值稀疏的待裁剪的权重通道,表示为W中较薄的立方体,相应需要裁剪掉输入特征B中的对应通道,即裁剪掉输入特征A与虚线卷积核的卷积结果,并利用最小二乘优化使得剪枝后的B和W的卷积结果能尽可能和C接近,其公式表达为

(3)

其中,Y指剪枝前图像的特征信息,求和部分是按β剪枝后的特征信息,同时需满足稀疏值个数少于c′。

求解时将式(3)中对β的约束加到式(4)中,同时用LASSO回归代替L0范数,参数λ用来控制权重稀疏程度,λ越大,权重越稀疏,算法的加速比也越大

(4)

最终通过式(5)迭代求解得到最优的β值,这个过程中λ不断增大,直到β值趋于稳定,并将β代入式(6)中计算得到唯一的裁剪权重W

(5)

(6)

2.3 Double-D算法损失函数

对于Double-D算法模型,定义其损失函数为式(7)中的均方差函数

(7)

其中,n指第n(n=1,2,3)张特征图,m指batch size,W和H代表特征图像的维度,A指的是anchor box数目,λobj是预测目标置信度,λborc是预测坐标权重值,iou_ignore是无检测目标时的权重参数,E表示求cross entropy,xy,wh,xyijk,whijk分别为实际坐标和预测坐标,truthobj和predijk分别代表真实目标和预测目标概率,classtr和classpred分别为真实类别与预测类别概率。

损失函数包括置信度误差、坐标误差和分类误差3部分:计算置信度误差分为有检测目标时和无检测目标时,当各个先验框与实际目标的最大IOU值小于一定阈值时即认为没有检测目标λobj=0,此时损失函数只有置信度误差;当某个检测目标与其中心对应的单元格中的先验框的最大IOU值满足阈值条件时,则用该先验框来预测目标对象,并计算其坐标损失和分类损失。对于那些没有与检测对象匹配的,以及小于最大IOU阈值的先验框就全部忽略,不计算任何损失。

3 实验研究

本节中通过实验验证改进模型的性能。所有实验均在CPU上使用Intel(R) Core (TM) i5-4200H四核处理器和双GPU GeForce GTX 1080Ti,通过使用基于Tensorflow模型的Keras深度学习框架中的Python 3.6编程语言进行实现。

3.1 实验数据

实验数据来自上海某合作医院和人工采集,包括各个年龄段和不同性别的采样群体,通过设计的舌诊取像仪器获得舌像样本,保存为JPG文件格式。样本图像如图4所示,图(a)是常规舌样本,图(b)、图(c)、图(d)、图(e)为几种不同舌裂纹形式的样本,包括纵深型、纵向密集、横向密集和不规则型。

图4 舌头样本图像

制作VOC格式的舌诊图像数据集:将获取到的图像数据进行筛选和增强,处理的方法包括缩放、上下左右翻转、平移、按比例裁剪、颜色抖动、归一化等,对处理后的数据进行标注,数据集分布见表1。

表1 舌像样本数据集分布

3.2 评价指标

实验结果选择召回率(recall)、精准率(precision)、特异度(specificity)和f1分数来检验模型性能

(8)

(9)

(10)

(11)

其中,tp是预测为正,实际为正的样本数;tn是预测为负,实际为负的样本数;fp是预测为正,实际为负的样本数;fn是预测为负,实际为正的样本数。

3.3 参数设置

对于实验选定的网络框架,图片输入大小为416×416,设定具有1e-3初始学习率的Adam优化器时模型迅速收敛,随机选择16个样本训练更新网络权重。网络设置了100个epoch,同时为了防止过拟合及监测模型的泛化能力,在回调函数中调用early stopping函数,监测值为验证集损失,设置函数激活后的10个epoch时提前终止训练;设置reduce learning rate函数,监测值为验证集损失,如果在3个epoch后看不到模型性能提升,则减小10倍学习率。

3.4 模型比较和分析

将BP神经网络、径向基神经网络、卷积神经网络[11]以及Faster RCNN、YOLOv3算法作为对照实验,与本文改进的Double-D模型方法进行比较分析,具体结果见表2。实验1、2、3所提出的方法网络结构简单,检测速度比较快,但也因此造成模型检测精度较低,泛化能力差。相比之下,Double-D算法模型更深,并加入了金字塔结构和密集直通映射,结构更加复杂,却仍保持了较快的检测速度,模型精准率提升了近11%,特异度提升了近14%,召回率提升了近10%,能够正确识别出异常舌的能力显著增强。

表2 网络模型对比

实验1、2、3中的方法只对舌像做分类,而实验4、5、6在分类的同时回归得到舌头位置。实验4的方法在经过特征提取之后将网络分为两个全连接输出,包括分类网络和回归网络,导致检测速度变慢,而实验5的方法只对整个分类检测问题做一次特征提取,虽然两者的检测精度差异不大,但YOLOv3端到端的网络结构极大地提高了模型的检测速度。

与YOLOv3相比,Double-D算法的检测性能得到了普遍提升,精准率由95.81%增加到了97.56%,特异度由97.05%增加到了98.75%,特别是模型的召回率由原来的87.47%增长到了92.93%,准确识别出病变样本的能力进一步提高。这说明对YOLOv3框架添加的直通映射结构有效避免了退化问题和梯度消失,充分利用了底层图像的特征信息,可以更加准确快速地检测出目标图像的微小病变并识别分类。同时利用通道剪枝,降低模型和参数复杂度,有效节省计算空间。分析结果表明改进后的Double-D算法的检测效果是几种方法中最优的。

通常医疗图像数据较大,精度要求也比一般图像要高,进一步研究不同输入尺寸是否会影响舌像的检测效果。由于原始的舌像尺寸为600×600,同时考虑到舌像细微复杂的特点,因此,根据网络下采样步长32的倍数设置4种输入尺寸{320,416,512,576}进行实验。对比表3,结果发现不同尺度下模型的精准率和特异度的波动范围在1%左右,从召回率来看,图像尺度为416×416时得到的检测效果明显是最好的,与320×320图像尺寸的召回率相比增加了2%,总体来看仍然是图像大小为416×416时模型的检测性能最好。分析出现这样的结果是因为舌像纹理十分微小复杂,当缩小或放大图片时,舌头上的纹理可能会缩小至难以检测,或放大至将其误识别为病变,因此,输入图片的尺度要根据具体的实验数据进行调整,并不一定存在越大越好。

表3 图像尺寸对模型检测性能影响

设计3种不同的网络冻结条件,以此来探索迁移学习微调的网络层对模型检测性能的影响。条件一冻结了最后3层输出层之前的网络;条件二冻结了特征提取网络;条件三则对整个网络逐层进行微调,同实验6。从表4中可以看出,条件一到条件三的情况下模型的检测性能稳步提升,并且条件三的表现性能是所有条件下最好的,精准率为97.56%,特异度为98.75%,召回率为92.93%。研究结果表明,微调网络层数对模型的性能确实有一定的影响,应用迁移学习训练Double-D模型时,冻结的网络层数越多模型的检测性能越差,说明对于样本数据不平衡的情况,底层网络提取的基本特征不一定适合所有的图像,这就需要尽可能多地微调网络层以得到更好的检测效果。

表4 微调网络对模型性能的影响

4 结束语

本文重点研究了改进的Double-D算法网络性能,分析加入稠密直通映射连接和通道剪枝对特征信息的利用效果,将其应用于舌像的识别检测,讨论了输入图像大小和微调层数量对模型的影响,并且自行设计标注了一个舌像数据集。设计实验结果表明,改进的Double-D算法充分利用了网络的特征信息,简化模型通道降低了计算资源,使得模型的检测效果进一步提升。利用迁移学习训练网络时微调更多的卷积层可以获得更高的性能。同时,输入图像的大小对深度卷积神经网络性能的影响需要结合具体的数据分析,不能保证输入图像数据维度越大检测效果越好。

猜你喜欢
剪枝残差卷积
人到晚年宜“剪枝”
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于YOLOv4-Tiny模型剪枝算法
基于残差学习的自适应无人机目标跟踪算法
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
卷积神经网络的分析与设计
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法