1. 引言
当前,乳腺癌已经成为全球女性最常见的癌症,患乳腺癌的女性占女性新诊断得癌症病例的30% [1]。乳腺癌的早期发现,早期治疗大幅度降低了乳腺癌的致死率。因此,早期的乳腺癌筛查是乳腺癌治愈率提升的关键。乳腺x线图像是乳腺早期筛查最常见的无创检测方法。但由于乳腺肿块与乳腺腺体对比度较低,乳腺肿块较难识别,并且专业医生由于任务量繁重以及主观因素,诊断中仍会出现漏检、错检等现象。
随着科技的发展,计算机辅助诊断技术(Computer Aided Diagnosis, CAD)被广泛应用在医学图像的处理上,降低了医生的工作量,并且也大大减少了医生因大量阅片产生误诊的概率 [2]。对于乳腺肿块的检测算法,传统的图像处理方法主要是利用边缘检测,区域生长,阈值分割等方法,在乳腺x线图像上提取感兴趣区域后对其进行医学分析。随着深度学习的兴起,各个领域都得到了较好的发展,基于深度学习的医学图像检测也表现出了优异的成绩。目前主流的乳腺肿块检测算法主要分为两大类,第一类是双阶段检测算法,该方法首先在图像上生成大量的候选框,然后对这些候选框进行分类并回归目标候选框位置,最终得到包含目标的检测框以及对应类别的置信度。此类算法代表有R-CNN [3]、Fast-RCNN [4]、Faster-RCNN [5] 等,该算法在检测精度上有较好表现,但其检测速度慢,对易混淆的目标区分差。郑杰等 [6] 提出了一种基于Faster RCNN的乳腺肿块检测算法,其敏感性取得了较好的结果,但是单张假阳性个数较大。第二类为单阶段检测算法,该算法将检测问题转化为回归问题,是一种端到端的目标检测算法。此类算法代表有SSD [7]、YOLOv1 [8]、YOLOv2 [9]、YOLOv3 [10] 等,该算法检测速度较快,但其对小目标检测不敏感。蒋慧琴等 [11] 设计了一种基于YOLOv3的双视图信息融合的乳腺肿块检测算法,在乳腺肿块的检测上取得较好的效果。
YOLOv4 [12] 相对于之前的系列网络来说,其结合了之前的研究成果,在检测精度和检测速度上有较好的表现。但对于乳腺肿块图像来说,肿块较难识别,导致检测精度低和假阳性率高的问题,YOLOv4仍需要进一步的改进从而满足乳腺肿块的检测。本文对YOLOv4算法进行改进,引入金字塔卷积 [13] (Pyramid Convolution, PyConv),提高特征提取能力;使用深度可分离卷积在不降低网络检测精度的前提下,大幅度降低网络训练参数。实验结果表明,改进后的YOLOv4网络的检测精度提升,平均每幅图像假阳性个数下降。
2. YOLOv4网络结构
YOLO系列网络不同于两阶段网络,直接采用回归的方法对坐标框进行检测和分类,是一个端到端的检测网络。该系列网络将输入的图像分割成若干网格,每个网格负责预测落在此网格上的物体,若待测目标落在某网格,那么该网格就负责检测目标,这种方法大幅度提升了检测速度。YOLOv1借鉴GoogLeNet设计主干网络,将整张图片作为输入,直接在输出层对BBox的位置和类别进行回归,虽然YOLOv1检测速度快,但其对小目标检测效果不好。YOLOv2引入了anchor机制,引入了Darknet-19作为主干网络。YOLOv3引入了Darknet-53作为主干网络,并且引入了FPN进行多尺度预测,对不同尺度的特征图进行融合预测,提高了小目标的检测精度。
YOLOv4网络相比YOLOv3来说,将原来的Darknet-53网络与CSPNet网络融合,提出了CSPdarknet53。特征提取网络由原来的特征金字塔网络转换为含有空间金字塔池化层(Spatial Pyramid Pooling, SPP)的PANet。除此之外,YOLOv4添加了Mosaic数据增强,使用Mish激活函数,并且引入了余弦退火学习率,改进了SOTA的方法。YOLOv4的结构图如图1所示。
由图可知,YOLOv4的主干网络主要由残差块堆叠而成,这些残差块在YOLOv3中Darknet53的基础上进行了修改,结合了CSPNet [14] 结构的思想。CSPNet就是将原来的残差块进行拆分,主干部分继续进行原来的残差块的堆叠,另一部分则像一个残差边一样,经过简单的卷积处理连接到最后,CPSdarknet53结构如图2所示。
SPP结构是对主干网络最后一个特征层经过三次池化后进行最大池化。池化中使用四种不同尺度的池化层,池化层大小分别为1 × 1,5 × 5,9 × 9,13 × 13。SPP结构可以显著地增加感受野,分离出重要的上下文特征,并且对检测速度几乎没影响。PANet结构由卷积,上采样,特征层融合,下采样操作构成的金字塔结构,相较于FPN结构,在此基础上又增加了一个底层到高层的通道,将底层信息直接向上传递,提高低层信息的利用率。经过PANet结构,不同层之间的特征层充分融合,进一步提高特征提取的能力。YOLOv4 Head结构与YOLOv3的原理相同,对输出的特征进行3 × 3和1 × 1两次卷积,对每个特征层的三个先验框进行判别,并判断是否含有目标及其种类。

Figure 2. CSPDarknet53 structure
图2. CSPDarket53结构图
3. YOLOv4的改进
3.1. 融合Pyconv模块的YOLOv4主干网络
对于乳腺肿块图像来说,乳腺肿块的尺度大小不一,原YOLOv4主干网络采用的传统卷积的感受野是固定大小,对于本文数据集的特征提取能力有限,可能会导致有效信息丢失。针对该问题,引入金字塔卷积PyConv。PyConv能够在多尺度的卷积核上处理输入的图像,其中包含了不同大小和深度的卷积核,能够捕捉不同的信息,同时PyConv的效率较高,它与传统卷积拥有相近的计算成本。因此本文引入金字塔卷积提高网络的特征提取能力,使得网络可以提取到更加有效的信息。
对于传统卷积,结构图如图3所示,输入特征图维度为FMi,经过FMo个大小为K × K卷积核后输出维度为FMo的特征图,输出特征图大小为H × W。因此,经过传统卷积的参数量和计算量公式如式(1)~(2)所示:
(1)
(2)

Figure 3. Standard convolution structure
图3. 传统卷积结构图
对于金字塔卷积,如图4所示,包含n级不同类型卷积核的金字塔,随着级别的加深,卷积核大小不断减小,每一层卷积核大小为
,其维度分别为
,如公式(3)所示:
(3)
输出特征维度为
,即输出特征如维度为
。因此,PyConv的参数量和计算量公式如式(10)、(11)所示:
(4)
(5)
其中,
。
通过上述公式不难看出,当每一层级的输出通道数相近,那么每层参数量及计算复杂度与传统卷积相近。同时在金字塔卷积的基础上使用分组卷积,将输入特征划分为不同的组进行卷积计算,每组特征图通道数不同,通过分组卷积的方法改变卷积核深度。同时,当分组数增加时,减少卷积核深度,FLOPs与参数量也相应地减少。

Figure 4. Pyramidal convolution structure
图4. 金字塔卷积结构
本文将PyConv镶嵌到CSPdarknet53主干网络的残差结构中,由于原主干网络是由5个不同的CPS残差模块组构成,因此将不同级别的特征金字塔引入到各个残差模块中,本文主要将原来残差结构中3 × 3卷积替换成5种不同层级的金字塔卷积,使得网络可以有效的提取完整的特征,以及避免提取过多无效信息。改进后的残差部分结构如图5所示,其中从左到右依次是PyConv_Resblock1至PyConv_Resblock5。
3.2. 传统卷积的改进
为了减少参数量,本文借鉴Mobilenet [15] 的轻量化思想,用深度可分离卷积(Depthwise Separable Convolutions)替代PANet特征提取网络中所用到的普通卷积。深度可分离卷积由逐深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)组成,逐深度卷积对应输入每一个输入特征图通道;逐点卷积与常规卷积相差无几,其作用是负责将逐深度卷积提取的特征进行融合。通过逐深度卷积和逐点卷积两个步骤可以有效的降低计算复杂度和模型容量。
对于传统卷积来说,结构图如图6所示,假设输入特征图的大小为
,卷积核大小为
,输出特征图的大小为
,则标准卷积对应的计算量如式(6):
(6)

Figure 6. Traditional convolution structure
图6. 传统卷积结构
对于深度可分离卷积来说,结构图如图7所示,首先经过逐深度卷积操作,将单个滤波器应用到每个输入通道,深度可分离卷积的第一步是深度卷积,对于输入的每一个通道分别用1个
的卷积核进行卷积,共计M个卷积核,得到M个的特征图,这M个特征图相互独立。第二步就是逐点卷积,将第一步得到的M个特征图作为输入,用N个
的卷积核进行标准卷积操作,得到
的输出特征图。则深度可分离卷积对应的计算量如式(7):
(7)
(a) 逐深度卷积操作
(b) 逐点卷积操作
Figure 7. Depthwise separable convolution
图7. 深度可分离卷积结构
由此,深度可分离卷积与传统卷积相比计算量减少如式(8):
(8)
4. 实验与分析
本实验在Windows10的环境下完成,计算机内存为16G,CPU为Inter Core i7 9700 3.0GHz,GPU为GTX2080,显存为8GB,使用的开发框架为Pytorch,编程语言为Python。同时安装了CUDA10.2核cudnn7.6以支持GPU使用。
4.1. 数据集
本实验的数据集采用的CBIS-DDSM [16] 乳腺数据集,该数据集是南佛罗里达大学创建的公开乳腺数据集DDSM [17] (Digital Database for Screening Mammography)更新的标准化版本,实验将选取数据集中1412张含有肿块的图像进行处理,通过反转,旋转等操作扩充数据集,最终得到含有肿块数据集5648张,其中4760张作为训练集,888张作为测试集。本文图像中的肿块通过labelimg软件进行标注,数据标注图例如图8所示。

Figure 8. An example of one labeled image
图8. 数据标注图例
乳腺钼靶图像中的肿块尺寸大多都属于小目标,而原始的YOLOv4算法提供的锚框大小是通过COCO数据集聚类得来的,难以适用本文数据集,因此为了得到更符合本文检测目标的先验框,在训练之前使用K-means算法对目标锚框进行聚类。参数设置方面,考虑到网络训练效率方面,输入图像尺寸设置为416 × 416;批次为一次训练需要用到的样本数,它的大小影响到训练的速度,考虑到GPU的内存,批次设置为8;Epoch为对训练集的全部数据进行一次完整的训练,根据数据集的样本量,设置为150。学习率是将输出的误差反向传播给网络参数,用来拟合样本的输出,本质上是一个优化的过程,初始学习率设置为0.001。
4.2. 评价指标
本文所采用的评价指标包括:精确率(Precision),敏感性(Sensitivity),平均精确率(AP)、以及平均每幅图片假阳性个数(False Positive Marks Per Image, FPI)。敏感性用来评价漏诊率,FPI表示每幅图像过检的肿块个数,使用P-R (precision recall)曲线评价模型的综合性能。计算方法如表所示,其中,TP表示将肿块目标预测为肿块目标,FP表示将背景预测为肿块目标,FN表示没有将肿块检测出来。此外,本文采用Times表示检测单张图像所需的时间。
(9)
(10)
(11)
(12)
(13)
4.3. 实验结果与分析
本文在不同的主流模型上进行实验对比,得到的测试结果见表1。从表1可以看出来,YOLOv3平均单张假阳性0.629个,敏感性77.31%。YOLOv4算法的单张假阳性0.446个,敏感性为78.68%。本文算法平均单张假阳性为0.418个,相较于原YOLOv4网络减少0.028个,敏感性为81.49%,相较于原网络提高2.81%。YOLOv3和YOLOv4单张图像检测时间分别为0.014和0.026。本文改进算法单张检测时间为0.038,虽然改进算法的单张检测时间略低于原网络,但是FPI以及敏感性相较于原网络均有显著提升。因此本文改进算法在牺牲较少检测时间的前提下,检测性能有较好的表现。

Table 1. Comparison of evaluation indexes of different models
表1. 不同模型的评价指标对比
通过敏感性和精确率,绘制出P-R曲线,对网络的性能进行综合评价。P-R曲线所围成的面积表示乳腺肿块检测的平均精度。对于图9分析得到,YOLOv4网络的AP值为82.58%,本文改进的YOLOv4网络AP值达到86.85,相较于改进前提高了4.27%。由此可知,网络在改进后整体性能有所提升。

Figure 9. P-R curve of different network models
图9. 不同网络模型的P-R曲线
乳腺肿块图像在YOLOv4和本文算法在数据集上的可视化检测结果如图10所示,其中蓝色框表示标注框,绿色框表示预测框与真实框交并比大于0.5的检测框,红色框表示标注错误。观察可视化结果发现,YOLOv3和YOLOv4网络都容易将与肿块相似的正常组织错判为肿块,假阳性率较高。而本文方法更能准确的识别出正确的肿块,避免将正常组织识别为肿块,降低假阳性率。
(a) 原始乳腺图像
(b) YOLOv3
(c) YOLOv4
(d) 本文算法
Figure 10. Visualization of mass detection
图10. 肿块检测可视化
5. 总结
本文提出了一种基于改进YOLOv4算法的乳腺肿块检测方法。首先引入金字塔卷积,使网络在通过多尺度卷积对输入图像进行特征提取;其次将YOLOv4网络中的普通卷积替换成深度可分离卷积,进一步提高网络识别速度;最后在YOLOv4网络中增加一个尺度的输出特征图,并且在PANet特征提取部分引入注意力机制,提升网络的识别能力。实验结果表明,改进后的网络敏感性达到81.49%,AP值达到86.85%,单张图像假阳性个数为0.418个,对于乳腺肿块的检测来说,本文算法具有较好的表现。下一步研究将尝试设计肿块的多分类的网络,使得研究更加符合临床需求。