激光与光电子学进展, 2020, 57 (18): 181505, 网络出版: 2020-09-02  

基于YOLOv3改进的肺炎检测算法 下载: 980次

Improved Pneumonia Detection Algorithm Based on YOLOv3
作者单位
大连海事大学信息科学技术学院, 辽宁 大连 116026
摘要
肺炎是一种严重威胁人类健康的疾病,及时、准确地检测出肺炎可以尽早帮助患者接受治疗。因此,提出了一种基于YOLOv3改进的Multi branch YOLO检测算法。用多分枝膨胀卷积输出的特征代替YOLOv3中不同层级的特征进行检测,在多分枝卷积神经网络中引入Boosting思想,并使用最大化熵方法优化网络。将每个卷积分枝视为一个弱分类器,通过最大化熵方法使每个分枝学习到相近的检测能力,避免多分枝卷积模型退化成单分枝卷积模型。基于北美放射学会提供的肺部X射线影像进行实验,结果表明,该算法在实验数据集上的检测准确率高于其他目标检测算法。
Abstract
Pneumonia is a disease that serious threat to human health, timely and accurate detection of pneumonia can help patients receive treatment as soon as possible. Therefore, in this paper, an improved Multi branch YOLO detection algorithm based on YOLOv3 is proposed. The output features of multi branch dilation convolution are used to replace the features of different levels in YOLOv3 for detection. Boosting thought is introduced into multi branch convolutional neural network, and the network is optimized with maximum entropy approach. Each convolution branch is regarded as a weak classifier, and the maximum entropy approach is adopted to promote each branch to learn the similar detection ability, so as to avoid the degeneration of multi branch convolution model into single-branch convolution model. Experimental data are provided by the radiological society of North America with lung X-ray images. The results show that algorithm's detection accuracy on experimental data sets is higher than other target detection algorithms.

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算法的检测流程

图1为Multi branch YOLO算法提取特征的神经网络架构 ,其中,gt box为人工标记的真实目标框,pred box为模型预测的目标框。该算法将输入图像尺寸固定为416 pixel×416 pixel×3 pixel,图像经过Darknet53特征提取网络后生成特征图F1、F2、F3,对三张特征图用2次FPN进行上采样、融合得到特征图F4。用3个不同膨胀率(dilation rate)的膨胀卷积分枝对F4进行卷积运算,生成特征图A1、A2、A3。由于膨胀率不同,每个分枝捕捉到的信息也不同。对于膨胀率较大的分支,感受野较大,更容易捕捉到全局信息,有利于对大目标进行检测;对于膨胀率较小的分支,感受野较小,更容易捕捉到局部信息,有利于对小目标进行检测。将特征图A1、A2、A3进行融合得到特征图A4。在测试阶段,Multi branch YOLO算法仅对特征图A4进行检测并输出结果;在训练阶段,计算特征图A1、A2、A3、A4的损失loss1、loss2、loss3、loss4,并计算loss1、loss2、loss3的熵,在误差反向传播时将熵与loss4同时回传。

图 1. Multi branch YOLO算法流程图

Fig. 1. Flow chart of Multi branch YOLO algorithm

下载图片 查看所有图片

Multi branch YOLO算法定位目标的方式与YOLOv3算法类似,先将图像划分为多个网格,每个网格与特征图中的特征点一一对应。每个特征点包含算法预测的目标置信度、目标类别、目标框信息。Multi branch YOLO算法对目标框的定位采用多锚点回归方式,其中,对目标框的中心点采用线性回归,对目标框的长和宽采用指数函数缩放方式。回归目标框可表示为

bx=XSigmoid(tx)+Ax,(1)by=XSigmoid(ty)+Ay,(2)bw=Awexp(tw),(3)bh=Ahexp(th),(4)

式中,AxAy为锚点的中心坐标,AwAh为锚点的宽和高,txtytwth 分别为目标框中心点的横、纵坐标以及宽、高的预测值,XSigmoid函数可将预测的坐标值压缩至(0,1)区间,指数函数可将预测的宽和高在(0,+∞)区间内缩放,bxbybwbh 为Multi branch YOLO算法最终输出的目标框参量。

Multi branch YOLO算法的损失函数由定位损失、类别损失、正负样本损失和熵求和得到,可表示为

Lloc=XsmoothL1(Bpred-Btrue),(5)Lcls=CtruelogCpred,(6)Lbinary=-YtruelogYpred-λ1XtruelogXpred,(7)Lentropy=pilog2pi,(8)L=Lloc+Lcls+Lpos+λ2Lentropy,(9)

式中,Lloc为定位损失,Lcls为类别损失,Lbinary为正负样本损失,Lentropy为熵,B为目标框,C为类别,Y为正样本,X为负样本, pi为第i个膨胀卷积分支的类别概率,下标true为真实数据,下标pred为预测数据,λ为超参数, XsmoothL1为平滑函数,避免梯度波动过大。

2.2 膨胀卷积

Multi branch YOLO算法的特征提取方式与YOLOv3算法不同。在特征提取阶段,Multi branch YOLO算法用膨胀卷积扩大卷积核的感受野,增强算法对病灶的识别能力。感受野是卷积核感受到原图区域的大小,如一个尺寸为3×3的卷积核对32倍下采样后的图像进行卷积运算,则该卷积核的感受野为96×96。卷积核越大,每次卷积运算利用的信息就越多,对难以识别的目标特征提取的优势也越大。若将卷积核的尺寸扩大为7×7,其参数量会增加5.4倍,导致算法的参数急剧增加。文献[ 20]提出的膨胀卷积可在不增加参数量的前提下扩大卷积核的感受野,文献[ 19]提出的空洞金字塔池化,用不同膨胀率的卷积核构建多个卷积分枝,捕捉不同感受野信息,增强了算法对像素的分类能力。在膨胀卷积中引入扩张率,扩张率越大,采样距离越大,卷积核的感受野就越大。一维输入数据和一维卷积核的膨胀卷积运算可表示为

O[j]=k=1KI[j+r·k]W[k],(10)

式中,I为一维输入数据,O为一维输出数据,rkW分别为一维卷积核的扩张率、采样步长、膨胀卷积参数, j为输入数据中的第j个属性。为了更直观地理解膨胀卷积,将膨胀卷积与普通卷积进行图像化,如图2所示。可以发现,当膨胀率为2时,卷积核每隔一个点进行采样,在图像中,即每间隔一个像素点进行采样运算,以增大感受野。图中白色圆圈表示人为填充的0值,避免经卷积运算后数据维度发生变化。

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,避免多分枝退化。

最大化熵的原理是一种选择随机变量统计特性最符合客观情况的准则,也称为最大信息原理。在最大化熵系统内,所有事件都是等概率发生,即系统具有均衡性、复杂性。可通过拉格朗日乘数法求解满足最大化熵的事件概率,可将最大化熵表示为

Lagrange(P,λ)=-i=1nPilogPi+λ(i=1nPi-1),(11)

式中,Pi为满足最大熵的事件概率,n为事件的个数。

Multi branch YOLO算法继承了Boosting的思想,对不同卷积分枝输出的预测结果进行加权融合。Boosting由多个弱分类器集成,且每个弱分类器的预测能力相近。在Multi branch YOLO算法中,将每个膨胀卷积分枝视为一个弱分类器,并采用最大化熵优化所有分枝。最大化熵与最小化损失值并不矛盾,原因是Softmax函数将所有分枝的损失值归一化生成概率值,概率值增大不表示损失值增大。当所有分枝的损失值相等时,既达到了熵最大化,所有分枝的检测能力也相近,即每个弱分类器具有相近的预测能力。而最小化损失值可以提升算法的整体检测能力。Multi branch YOLO算法计算熵的流程如图3所示,其中,l1,l2,…,lk分别为多分枝膨胀卷积中每个分支的损失值,S为每个分支的熵。

图 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,所有图像中的肺炎病灶组织全部由专业医师进行标注。标注方式为(bxbybwbh,Tagget),其中,Target为二元标签,表示目标区域是否为肺炎病灶组织。数据集经上下翻转、水平翻转扩充至18036张图像。随机选取2000张图像作为测试集,16036张图像作为训练集。由于神经网络结构的限制,在预处理阶段所有输入图像的尺寸均被缩小为416 pixel×416 pixel,并用Python编程语言将单通道图像转为RGB(Red, Green, Blue)图像。

3.3 实验分析

不同算法的检测准确率如表1所示,其中Faster-RCNN算法属于two-stage算法,SSD与YOLOv3算法均属于one-stage算法,AP@表示算法在不同交并比(IOU)的平均准确率。可以发现,在该数据集上,Multi branch YOLO算法在不同IOU下的准确率均高于其他算法。YOLOv3算法与Faster-RCNN算法的mAP相近,SSD算法比Faster-RCNN和YOLOv3算法的mAP分别低0.018和0.019,比Multi branch YOLOv3算法低0.034。

表 1. 不同算法的检测准确率

Table 1. Detection accuracy of different algorithms

AlgorithmAP@0.4AP@0.5AP@0.6mAP
SSD[13]0.5580.4120.2460.405
Faster-RCNN[7]0.5730.4260.2710.423
YOLOv3[9]0.5720.4310.2690.424
Multi branch YOLO0.5890.4530.2750.439

查看所有表

膨胀率与最大化熵对检测准确率的影响如表2所示,可以发现,膨胀卷积可以使YOLOv3算法的mAP提升0.007,在此基础上使用最大化熵优化后,mAP可继续提升0.008。这表明本算法对YOLOv3算法的改进均可以提升算法的mAP。但膨胀率不宜设置过大,原因是在高分辨率特征图上使用多个并行卷积分枝运算耗时较长。

表 2. 膨胀率与最大化熵对检测准确率的影响

Table 2. Influence of dilation rate and maximum entropy on detection accuracy

Darknet 53FPNDilated convolutionMaximum entropymAP
PP0.424(YOLOv3)
PPP0.431
PPPP0.439(ours)

查看所有表

图 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

下载图片 查看所有图片

图4为不同算法对4组图像的检测效果,其中,实线表示真实坐标框,虚线表示算法预测的坐标框。可以发现,SSD算法的检测效果定位误差大,且会出现误检、漏检问题,原因是SSD算法没有对不同层级之间的特征进行融合,且SSD算法为one-stage算法,在训练过程中存在正负样本不均衡的问题;YOLOv3算法的定位误差比SSD算法小,原因是YOLOv3算法使用FPN融合不同层级特征,但YOLOv3算法也是one-stage检测算法;Faster-RCNN算法出现误检、漏检现象较少,原因是Faster-RCNN算法使用RPN平衡正负样本的数量。而Multi branch YOLO算法的误检现象最少,且定位精度更高,原因是本算法使用的多分支膨胀卷积在高分辨率特征上能捕捉到多个感受野信息。

图 5. Multi branch YOLO算法的检测效果

Fig. 5. Detection effect of Multi branch YOLO algorithm

下载图片 查看所有图片

Multi branch YOLO算法对多张图像的检测效果如图5所示,可以发现,图5中第一行4张图像中背景干扰较小,且肺部和肺炎病灶组织区别明显;第二行4张图像中的背景复杂,存在其他器官组织在形态和灰度值等因素的干扰,本算法对这两种图像没有出现误检,这表明本算法的识别精度较高。而第三行4张图像中病灶组织和肺部组织的灰度值较高、特征相近且肺部形态不清晰,非专业人员亦难以鉴别正常肺部组织和病灶组织,导致本算法出现误检和定位偏差大的现象。

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.

[3] Lowe D G. Distinctive image features from scale-invariant keypoints[J]. International Journal of Computer Vision, 2004, 60(2): 91-110.

[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.

[5] Uijlings J R R, Gevers T, et al. Selective search for object recognition[J]. International Journal of Computer Vision, 2013, 104(2): 154-171.

[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.

    Yao H B, Bian J W, Cong J W, et al. Medical image segmentation model based on local sparse shape representation[J]. Laser & Optoelectronics Progress, 2018, 55(5): 051011.

[18] 张薇, 吕晓琪, 吴凉, 等. 基于典型医学图像的分类技术研究进展[J]. 激光与光电子学进展, 2018, 55(12): 120007.

    Zhang W, Lü X Q, Wu L, et al. Advances in classification technology based on typical medical images[J]. Laser & Optoelectronics Progress, 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.

马书浩, 安居白. 基于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.

引用该论文: TXT   |   EndNote

相关论文

加载中...

关于本站 Cookie 的使用提示

中国光学期刊网使用基于 cookie 的技术来更好地为您提供各项服务,点击此处了解我们的隐私策略。 如您需继续使用本网站,请您授权我们使用本地 cookie 来保存部分信息。
全站搜索
您最值得信赖的光电行业旗舰网络服务平台!