基于YOLOv3改进的肺炎检测算法 下载: 980次
1 引言
肺炎是一种由多种病因引发的呼吸道疾病,具有病情进展快的特点。全世界每年患肺炎的人数逐年增加,严重威胁着人类的健康。基于X射线影像的诊断方法是当前诊断肺炎的主要方法之一。但X射线图像本身缺少色彩、纹理信息,且病灶组织的成像质量受环境因素干扰大,导致病灶组织与正常组织在X射线影像中难以区分。
Girshick等[1]提出用卷积神经网络(CNN)[2]代替尺度不变特征变换(SIFT)[3]、方向梯度直方图(HOG)[4]等提取特征的方法,以支持向量机(SVM)作为分类器构建区域卷积网络(RCNN)目标检测算法,在Pascal VOC2012数据集上的平均精度均值(mAP)为0.759。RCNN可通过堆叠CNN、多层池化、多层激活函数保证算法的稳定性和准确率。但需要用选择性搜索(SS)算法[5]通过颜色相似度和纹理相似度预先在图像中找到可能存在的目标,并将CNN提取的特征存储至磁盘,检测效率较低。Girshick等[6-7]对RCNN进行改进,提出了Fast-RCNN和Faster-RCNN。Fast-RCNN采用共享中间特征的方式提升算法的检测效率,将区域提议网络(RPN)与Fast-RCNN相结合,避免了SS与存储中间特征的步骤,使算法的检测速度接近实时检测速度。Redmon等[8]提出YOLO(You only look once)检测算法,仅使用一个CNN就能完成对目标的识别与定位,与Faster-RCNN相比,该算法没有RPN,可进行实时检测。Redmon等[9]提出使用特征金字塔网络(FPN)[10]和K-means[11]聚类增加YOLO检测小目标的能力。Liu等[12]提出的单步多框检测(SSD)使用CNN与回归先验框的思想可实时检测目标。
Setio等[13]采用多个CNN识别肺结节,并将最终识别结果进行融合处理。Dou等[14]使用三维CNN对脑波进行检测,在提取三维图像特征方面具有更大的优势。Rajpurkar等[15]公开了大规模的肺部X射线图像数据集,并提供了该数据集的预训练模型。Ghesu等[16]提出使用深度强化学习算法检测三维CT影像,姚红兵等[17]提出基于局部稀疏形状表示的医学图像分割模型,张薇等[18]阐述了CNN在医学图像领域的应用与研究。
针对当前肺炎检测算法容易发生误诊、漏诊的问题,本文提出了一种基于YOLOv3[9]改进的肺炎检测算法——Multi branch YOLO算法,以减少误诊、漏诊现象,从而辅助医生进行快速、准确的诊断。X射线影像本身缺少色彩信息,且肺炎病灶区域与非病灶区域在X射线影像中的特征差异较小,导致算法对肺炎的识别难度较大。针对该问题,提出了的用具有不同膨胀率(dilate rate)的多分枝膨胀卷积[19],使算法对病灶区域具有多个感受野,同时使用最大化熵优化Multi branch YOLO算法。与YOLOv3算法不同,Multi branch YOLO算法在检测阶段使用具有多感受野信息的特征,而YOLOv3算法使用不同层级的特征;Multi branch YOLO算法用最大化熵使不同卷积分枝学习到相近的检测能力,原因是该算法在训练阶段使用的特征来自同一层级,而同一层级特征经不同卷积分枝输出的特征信息相近。在北美放射学会提供的肺部X射线图像数据集上的实验结果表明,相比其他目标检测算法,Multi branch YOLO算法的mAP有不同程度的提高。
2 基本原理
Multi branch YOLO算法的训练过程包括特征提取、目标定位、计算损失三个阶段。其中,特征提取网络为Darknet53和膨胀卷积网络,目标定位分为对特征的分类和坐标框回归两个步骤,计算损失包括分类损失、定位损失和融合后的特征计算分类损失、定位损失,损失函数为YOLOv3中的损失函数和熵。
2.1 Multi branch YOLO算法的检测流程
Multi branch YOLO算法定位目标的方式与YOLOv3算法类似,先将图像划分为多个网格,每个网格与特征图中的特征点一一对应。每个特征点包含算法预测的目标置信度、目标类别、目标框信息。Multi branch YOLO算法对目标框的定位采用多锚点回归方式,其中,对目标框的中心点采用线性回归,对目标框的长和宽采用指数函数缩放方式。回归目标框可表示为
式中,Ax、Ay为锚点的中心坐标,Aw、Ah为锚点的宽和高,tx、ty、tw、th 分别为目标框中心点的横、纵坐标以及宽、高的预测值,XSigmoid函数可将预测的坐标值压缩至(0,1)区间,指数函数可将预测的宽和高在(0,+∞)区间内缩放,bx、by、bw、bh 为Multi branch YOLO算法最终输出的目标框参量。
Multi branch YOLO算法的损失函数由定位损失、类别损失、正负样本损失和熵求和得到,可表示为
式中,Lloc为定位损失,Lcls为类别损失,Lbinary为正负样本损失,Lentropy为熵,B为目标框,C为类别,Y为正样本,X为负样本,
2.2 膨胀卷积
Multi branch YOLO算法的特征提取方式与YOLOv3算法不同。在特征提取阶段,Multi branch YOLO算法用膨胀卷积扩大卷积核的感受野,增强算法对病灶的识别能力。感受野是卷积核感受到原图区域的大小,如一个尺寸为3×3的卷积核对32倍下采样后的图像进行卷积运算,则该卷积核的感受野为96×96。卷积核越大,每次卷积运算利用的信息就越多,对难以识别的目标特征提取的优势也越大。若将卷积核的尺寸扩大为7×7,其参数量会增加5.4倍,导致算法的参数急剧增加。文献[ 20]提出的膨胀卷积可在不增加参数量的前提下扩大卷积核的感受野,文献[ 19]提出的空洞金字塔池化,用不同膨胀率的卷积核构建多个卷积分枝,捕捉不同感受野信息,增强了算法对像素的分类能力。在膨胀卷积中引入扩张率,扩张率越大,采样距离越大,卷积核的感受野就越大。一维输入数据和一维卷积核的膨胀卷积运算可表示为
式中,I为一维输入数据,O为一维输出数据,r、k、W分别为一维卷积核的扩张率、采样步长、膨胀卷积参数, j为输入数据中的第j个属性。为了更直观地理解膨胀卷积,将膨胀卷积与普通卷积进行图像化,如
Multi branch YOLO算法中的多分枝膨胀卷积在每个分支内部,膨胀率相同,且执行串行膨胀卷积运算、批归一化运算、激活运算;在不同分支之间,对同一特征执行并行运算。用多分枝膨胀卷积提取特征,可使算法在保留特征空间信息的同时提取到不同感受野信息特征,进而提升算法对难识别目标的检测能力。
图 2. 普通卷积和膨胀卷积。(a)膨胀率为1;(b)膨胀率为2
Fig. 2. Ordinary convolution and dilated convolution. (a) Dilation rate of 1; (b) dilation rate of 2
2.3 最大化熵
通常对每个卷积分枝的损失设置超参数,以训练多分枝CNN,但该方法需要多次调参才能选出最优模型,增加了网络的训练时间。且不同的超参数会严重影响卷积分枝的预测能力,在极端情况下,多分枝CNN可能会退化成单分枝CNN。因此实验用最大化熵优化多分枝CNN,避免多分枝退化。
最大化熵的原理是一种选择随机变量统计特性最符合客观情况的准则,也称为最大信息原理。在最大化熵系统内,所有事件都是等概率发生,即系统具有均衡性、复杂性。可通过拉格朗日乘数法求解满足最大化熵的事件概率,可将最大化熵表示为
式中,Pi为满足最大熵的事件概率,n为事件的个数。
Multi branch YOLO算法继承了Boosting的思想,对不同卷积分枝输出的预测结果进行加权融合。Boosting由多个弱分类器集成,且每个弱分类器的预测能力相近。在Multi branch YOLO算法中,将每个膨胀卷积分枝视为一个弱分类器,并采用最大化熵优化所有分枝。最大化熵与最小化损失值并不矛盾,原因是Softmax函数将所有分枝的损失值归一化生成概率值,概率值增大不表示损失值增大。当所有分枝的损失值相等时,既达到了熵最大化,所有分枝的检测能力也相近,即每个弱分类器具有相近的预测能力。而最小化损失值可以提升算法的整体检测能力。Multi branch YOLO算法计算熵的流程如
图 3. Multi branch YOLO算法计算熵的流程
Fig. 3. Flow chart for calculating entropy of Multi branch YOLO algorithm
3 分析与讨论
3.1 实验设置
实验采用YOLOv3算法提供的Darknet53在COCO数据集[21]上的预训练模型作为特征提取网络。用随机梯度下降法(SGD)[22]优化损失函数,避免模型在迭代过程中陷入极小值。采用批归一化[23]加快收敛速度,激活函数为带泄露修正线性单元(Leaky ReLU)[24]。初始学习率为0.005,权重衰减用L2范数正则化。实验环境:深度学习框架为PyTorch0.4+CUDA8.0,显存为6 GB的GTX1060显卡。批归一化训练每次在GPU上并行训练6张图像,为克服正负样本不均衡问题,在训练过程中,将(7)式中的负样本损失函数超参数λ设置为200,以增大负样本的重要性。
3.2 实验数据
实验数据集来自北美放射学会提供的肺部X射线图像,包含6012张灰度图像,图像尺寸为1024 pixel×1024 pixel,所有图像中的肺炎病灶组织全部由专业医师进行标注。标注方式为(bx、by、bw、bh,Tagget),其中,Target为二元标签,表示目标区域是否为肺炎病灶组织。数据集经上下翻转、水平翻转扩充至18036张图像。随机选取2000张图像作为测试集,16036张图像作为训练集。由于神经网络结构的限制,在预处理阶段所有输入图像的尺寸均被缩小为416 pixel×416 pixel,并用Python编程语言将单通道图像转为RGB(Red, Green, Blue)图像。
3.3 实验分析
不同算法的检测准确率如
表 1. 不同算法的检测准确率
Table 1. Detection accuracy of different algorithms
|
膨胀率与最大化熵对检测准确率的影响如
表 2. 膨胀率与最大化熵对检测准确率的影响
Table 2. Influence of dilation rate and maximum entropy on detection accuracy
|
图 4. 不同算法的检测效果。(a) SSD算法;(b) YOLOv3算法;(c) Faster-RCNN算法; (d) Multi branch YOLO算法
Fig. 4. Detection effect of different algorithms. (a) SSD algorithm; (b) YOLOv3 algorithm; (c) Faster-RCNN algorithm; (d) Multi branch YOLO algorithm
Multi branch YOLO算法对多张图像的检测效果如
4 结论
针对肺炎病灶组织在X射线影像中存在特征不明显的问题,提出了Multi branch YOLO检测算法。该算法使用多分枝膨胀卷积捕捉不同感受野信息,并引入Boosting思想以及最大化熵优化网络。在相同数据集上的实验结果表明,多分枝膨胀卷积与最大化熵优化网络均可提高算法的准确率,且本算法的检测准确率高于其他主流目标检测算法。但从可视化结果来看,还需进一步改善算法的误检、漏检、定位偏差大的问题。Multi branch YOLO算法的定位精度与预先选取的锚点尺度有关,因此,未来工作中还需针对不同尺寸的输入图像,得到不同尺度的锚点,以增加算法的定位精度。
[1] GirshickR, DonahueJ, DarrellT, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]∥2014 IEEE Conference on Computer Vision and Pattern Recognition, June 23-28, 2014, Columbus, OH, USA. New York: IEEE, 2014: 580- 587.
[2] LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
[4] DalalN, TriggsB. Histograms of oriented gradients for human detection[C]∥2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), June 20-25, 2005, San Diego, CA, USA. New York: IEEE, 2005: 886- 893.
[6] GirshickR. Fast R-CNN[C]∥2015 IEEE International Conference on Computer Vision (ICCV), December 7-13, 2015, Santiago, Chile. New York: IEEE, 2015: 1440- 1448.
[7] Ren S Q, He K M, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149.
[8] RedmonJ, DivvalaS, GirshickR, et al. You only look once: unified, real-time object detection[EB/OL]. [2019-11-04].https:∥arxiv.org/abs/1506. 02640.
[9] RedmonJ, FarhadiA. YOLOv3: an incremental improvement[EB/OL]. [2019-11-02].https:∥arxiv.org/abs/1804. 02767.
[10] Lin TY, DollárP, GirshickR, et al. Feature pyramid networks for object detection[C]∥2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 21-26, 2017, Honolulu, HI, USA. New York: IEEE, 2017: 936- 944.
[11] Kanungo T, Mount D M, Netanyahu N S, et al. An efficient K-means clustering algorithm: analysis and implementation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(7): 881-892.
[12] LiuW, AnguelovD, ErhanD, et al. SSD: single shot MultiBox detector[EB/OL]. [2019-10-30].https:∥arxiv.org/abs/1512. 02325.
[13] Setio A A A, Ciompi F, Litjens G, et al. Pulmonary nodule detection in CT images: false positive reduction using multi-view convolutional networks[J]. IEEE Transactions on Medical Imaging, 2016, 35(5): 1160-1169.
[14] Dou Q, Chen H, Yu L Q, et al. Automatic detection of cerebral microbleeds from MR images via 3D convolutional neural networks[J]. IEEE Transactions on Medical Imaging, 2016, 35(5): 1182-1195.
[15] RajpurkarP, IrvinJ, ZhuK, et al. CheXNet: radiologist-level pneumonia detection on chest X-rays with deep learning[EB/OL]. [2019-11-02].https:∥arxiv.org/abs/1711. 05225.
[16] Ghesu F C, Georgescu B, Zheng Y F, et al. Multi-scale deep reinforcement learning for real-time 3D-landmark detection in CT scans[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019, 41(1): 176-189.
[17] 姚红兵, 卞锦文, 丛嘉伟, 等. 基于局部稀疏形状表示的医学图像分割模型[J]. 激光与光电子学进展, 2018, 55(5): 051011.
[18] 张薇, 吕晓琪, 吴凉, 等. 基于典型医学图像的分类技术研究进展[J]. 激光与光电子学进展, 2018, 55(12): 120007.
[19] Chen L C, Papandreou G, Kokkinos I, et al. DeepLab: semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(4): 834-848.
[20] HolschneiderM, Kronland-MartinetR, MorletJ, et al. A real-time algorithm for signal analysis with the help of the wavelet transform[M] ∥Combes J M, Grossmann A, Tchamitchian P, et al. Wavelets. Inverse Problems and Theoretical Imaging. Berlin, Heidelberg: Springer, 1990: 286- 297.
[21] Lin TY, MaireM, BelongieS, et al. Microsoft COCO: common objects in context[EB/OL]. [2019-10-30].https:∥arxiv.org/abs/1405. 0312.
[22] Wang B B, Wang Y X. Some properties relating to stochastic gradient descent methods[J]. Journal of Mathematics, 2011, 31(6): 1041-1044.
[23] SergeyL, ChristianS. Batch normalization: accelerating deep network training by reducing internal covariate shift[EB/OL]. [2019-10-30].https:∥arxiv.org/abs/1502. 03167.
[24] He KM, Zhang XY, Ren SQ, et al. Delving deep into rectifiers: surpassing human-level performance on ImageNet classification[C]∥2015 IEEE International Conference on Computer Vision (ICCV), December 7-13, 2015, Santiago, Chile. New York: IEEE, 2015: 1026- 1034.
Article Outline
马书浩, 安居白. 基于YOLOv3改进的肺炎检测算法[J]. 激光与光电子学进展, 2020, 57(18): 181505. Shuhao Ma, Jubai An. Improved Pneumonia Detection Algorithm Based on YOLOv3[J]. Laser & Optoelectronics Progress, 2020, 57(18): 181505.