改进YOLO框架的血细胞检测算法

2022-06-23 06:24王榆锋李大海
计算机工程与应用 2022年12期
关键词:血细胞损失卷积

王榆锋,李大海

江西理工大学 信息工程学院,江西 赣州 341000

血细胞检测是一种通过专业仪器对血液中细胞成分进行分析的技术。在医学上将在血液中循环的细胞分为三类:即白细胞、红细胞和血小板[1]。当这三类细胞计数结果出现异常提高或降低时,人体可能已经罹患某些疾病。对于这三类细胞的准确高效的识别可以提供病人总体健康状况的概览[2],因此血细胞检测已经成为医学领域中最为常见的血液检验项目之一。目前血细胞检测主要分为两类:早期主要通过传统的图像处理技术,最经典的莫过于先手工制片染色,再通过显微镜进行人工观察分类[3],该方法要求检验人员具备关于细胞形态学大量的基础知识,并通过不断学习和反复锻炼,熟练掌握对形态的观察和辨别能力。由于显微图像数据量巨大并且血细胞形态的多样性,导致传统的血细胞检测方法越来越无法满足检测人员在血细胞分析中遇到的各种复杂问题。近年来,随着诸多基于深度学习的高效目标检测算法被陆续提出,其也被广泛地应用于血细胞检测任务。目前基于深度学习的目标检测算法大致可分为两大类。一是使用候选区域网络(RPN)来提取候选目标信息的二阶段(two-stage)检测算法如R-CNN[4]、Faster-R-CNN[5]、Mask-R-CNN[6]等。另一类是YOLO系列[7-9]、SSD[10]和RetinaNet[11]等单阶段(one-stage)目标检测算法。

二阶段目标检测算法主要包含骨干网、区域建议网络和检测头三部分[12]。其中区域建议网络用于生成包含感兴趣对象的大量候选区域建议,并判断属于前景或背景,接着使用边界框回归函数修正锚点位置以获得精确的区域建议。最接近上述技术中,刘树杰等[13]提出使用Faster R-CNN对红细胞进行检测和计数,该方法可以对孤立的红细胞进行有效的识别和精准定位。但由于Faster R-CNN使用区域候选网络(RPN)来提取感兴趣目标的信息,导致检测器需要消耗大量计算资源,检测速率低下。同时,该方法对图像中出现重叠度及密度较高的区域的漏检率极高,使整体的平均检测准确率不高。

单阶段(one-stage)目标检测算法能够通过对输入图像进行直接应用,并获取相对于预定锚点框的输出类别和相应的边界框定位,直接将目标检测视作回归问题求解。而YOLO系列作为近几年实用性较强的单阶段算法,主要由用于特征提取的骨干网络(Backbone)、用于特征融合的颈部(Neck)和进行分类和回归操作的检测头(Head)三部分组成[14]。其中YOLOv4[15]作为代表性单阶段算法,其在YOLOv3的基础上,在骨干网络中融合CSPNet[16]算法,提高检测速率的同时保证检测精度,在其颈部改用路径聚合网络PANet[17]改善浅层特征信息丢失的问题。最接近上述技术中,张冬冬等[18]提出一种基于YOLOv3和密度估计的细胞计数法,通过对YOLOv3的骨干网络进行修改,使用单个网络完成整个检测的方法。然而上述现有的YOLO系列算法虽能有效提高目标检测的速率,但整体网络层次简单,骨干网络(Backbone)部分仍存在特征提取能力不足;另外颈部(Neck)均采用卷积与上采样的方式结合,不能有效融合高质量上下文特征信息,导致整体的检测准确率不高。

为解决上述各类目标检测方法应用于血细胞检测的实时性不足和精度偏低的问题,本文提出一种基于YOLO框架的高效血细胞检测算法,在传统的YOLO算法“Backbone+Neck+Head”框架结构的基础上,本文所提方法的创新点在于:

(1)为骨干网络Backbone部分构建多尺度残差模块(MRM),用于提高对网络的特征信息利用率,同时解决骨干网络中较深层网络丢失浅层存在的边缘与细节信息的问题。

(2)为颈部Neck设计了一种名为Attention Reseau的注意力结构嵌入模型,用于融合更多高质量的上下层语义特征信息,以大幅度提高检测准确率。

(3)针对小目标检测能力的不足,采用了focal-loss损失函数代替YOLO系列中原有的损失交叉熵函数,通过给正负样本加上权重值,用于控制正负样本对总损失函数值的共享权重,使得模型在训练过程中更专注于难分的样本,进而解决样本类别不均衡的问题。

1 相关技术

1.1 空间金字塔

空间金字塔模块是一种融合深浅层特征信息做复杂任务的有效模块,其利用空间金字塔池化捕获多尺度语义信息。目前,各类基于空间金字塔的改进模块已被广泛应用于如目标检测、语义分割等各类计算机视觉任务[19]。Zhao等人[20]提出PSPNet网络,运用空间金字塔池化代替简单卷积层堆积的策略,通过聚合不同区域的上下文语义信息,来提高获取不同子区域全局信息的能力。Chen等人[21]基于DeepLab网络提出DeepLab-V2,采用扩张卷积与空间金字塔池化相结合的方式,在不增加参数的同时扩大了感受野。由于金字塔池化作为一种下采样操作仍存在一定缺陷,容易丢失小型目标的特征信息,因此文献[22]提出DeepLab-V3网络,舍弃池化操作,以并行的方式将4个不同扩张率的扩张卷积并联,可以有效获取多尺度上下文图像信息,提高模型性能。但DeepLab-V3使用的扩张卷积的扩张率过大,直接迁移应用容易导致卷积严重稀疏化,提取到的特征缺少边缘与细节信息。基于以上分析,本文设计一种多尺度残差模块(MRM)嵌入YOLO框架的骨干网络中,该模块将多尺度扩张卷积与残差块相加混合,先通过并联多个合适扩张率的扩张卷积,用于获取上下文信息的同时减小扩张卷积稀疏化,再与残差模块相加融合,避免丢失浅层网络的细节信息。

1.2 注意力结构

注意力门控机制通常用于图像分析、机器翻译等分类任务。最初注意力门控机制的工作是通过输入图像的梯度来解释输出类的权重分布进而探索注意力图。目前,可训练的注意力模块分为硬注意力和软注意力。其中某些硬注意力机制[23]包括了迭代区域建议和剪切区域,通常是不可微的,并依赖使用强化学习方法进行参数更新,这导致这类模型训练非常困难。相反,软注意力是概率性的,使用的是标准的反向传播方法进行参数更新。最近嵌入了软注意力模块的网络模型,通常用于目标检测与图像分类。如Hu等人[24]提出SE-Net网络,以通道强调方式聚集更多重要特征维度信息,该方法在2017年的ILSVRC图像分类挑战中获得了最佳表现。Jetley等人[25]提出自我注意力(self-attention)技术用来消除对外部门控信息的依赖,进而通过类专用池化,使得图像分类性能更加准确,同时提高鲁棒性。蒋镕圻等人[14]通过研究注意力模块嵌入位置,证明了在目标检测任务,嵌入注意力模块同样能取得良好的性能提升。本文以文献[25]的自我注意力结构为基础对注意力门控结构进行改进,添加了一种网格技术(Reseau)进一步加强模型自适应特征学习的能力。

2 本文提出的方法

本文提出了一种基于YOLO框架的新网络结构(命名为YOLO-Att),结构如图1所示。该网络的Backbone采用Darknet-53[26]+MRM,图中Res1、Res2、Res8、Res8和Res4是Darknet-53里面的5个残差网络块,但一系列的残差模块中的多次卷积操作可能导致深层网络的目标细节与边缘信息消失,进而影响目标定位,因此本文为后三个残差模块增加多尺度残差模块(MRM),能够加强特征的多尺度表达,提高网络对血细胞的检测敏感度;再者,在颈部(Neck)上设计Attention Reseau结构用于获取更多上下层高效的语义特征信息,以提高目标检测算法的准确率。同时采用Focal loss损失函数改进原有的损失函数,通过提高正负样本的权重值,解决样本类别不均衡的同时加快模型收敛。模型最终获得三种不同尺度的检测输出,分别为y1(13×13×255)、y2(26×26×255)、y3(52×52×255)。

图1 YOLO-Att结构图Fig.1 YOLO-Att structure

2.1 多尺度残差模块(MRM)

在目标识别领域中,识别物体存在大小多样性,若使用单一尺寸卷积进行图像特征提取,随着网络层数增加,可能导致高层网络中的小尺寸物体或不显著物体的特征数量极少,语义信息不够丰富,进而影响整体识别精度。空间金字塔结构通过多个不同感受野大小的扩张卷积将任意尺寸的特征映射进行多个尺度的卷积操作,再拼接成一个固定大小的特征向量,进而识别不同大小的物体。

基于以上分析,本文设计一种多尺度残差模块嵌入Backbone部分,该模块通过将三个不同扩张率的扩张卷积添加到残差模块后以获得更多有效的特征信息,结构如图2所示。输入特征先将1×1的普通卷积与三个不同扩张率(2,3,6)的扩张卷积并联,其中普通卷积主要用于提取小尺寸细胞的特征信息,扩张卷积负责提取大型与中型尺寸细胞的特征信息。接着将经所有卷积操作输出的特征映射进行拼接处理,以获取多尺度特征信息,所有拼接操作的卷积运算必须保证通道数相同。最后在与残差模块进行融合,用于提升语义表达能力的同时加速梯度反向传播[19]。图3为普通卷积与不同尺度扩张卷积用于捕获图片中的不同尺寸细胞的特征信息,可以看出不同卷积操作能够有效提取图像中不同尺寸的细胞,并将提取的多尺度特征信息聚合。与此同时,该模块在聚合多尺度信息时不容易丧失分辨率,保证检测速度的同时提高对各个尺度细胞的检测精度,尤其是小尺寸血小板的检测精度。

图2 多尺度残差模块(MRM)Fig.2 Multi-scale residuals module(MRM)

图3 不同卷积率效果图Fig.3 Renderings of different convolution rates

2.2 Attention Reseau

YOLO系列的颈部(Neck)通过采用简单卷积与上采样操作结合,用于捕获足够大的接受域,进而获得语义上下文信息[27]。然而,对图像中显示出形状变化的细胞,简单卷积与上采样操作不能有效减少其假阳性预测,导致整体检测准确率不高。本文设计了一种嵌入式注意力门控机制(命名为Attention Reseau)来提高目标检测的准确率。该注意力门控机制能通过自适应特征学习提高获取上下文语义信息的质量,对相关特征属性进行强调,同时能够逐步抑制无关背景区域的特征响应,进而提高检测准确性[27]。Attention Reseau的结构如图4所示。

图4 Attention Reseau结构图Fig.4 Structure of Attention Reseau

Attention Reseau模块的输入为上层特征映射xl∈RFl(其中Fl表示对应于第l层特征映射的数量)与下层特征映射gj∈RFg,输出为输入的特征映射与注意力系数的元素级乘法Xl=xl⋅aj,其中特征注意力系数ai∈[0,1],用于识别显著的图像区域和特征响应,只保留与特定任务相关的激活特征,如图中特征映射被染色部分所示。受文献[28]启发,在多个语义类的情况下,本文使用多维注意系数来设计学习模块,使得整个Attention Reseau学会了专注于目标结构的某个子集。下层特征映射gj用于每个像素点i来确定焦点区域,该特征映射包含大量上下文信息用于修剪较低级别的特征响应,进而使Attention Reseau在图像分类中取得良好的表现。完整的注意力公式如下:

2.3 损失函数的应用

传统的YOLO系列应用的损失函数是由位置损失、置信度损失以及分类损失三个函数相加而成,其中分类和置信度预测中,采用二元交叉熵损失函数进行分类和置信度的预测,同时使用独立logistic替换softmax分类[30]。在目标检测任务中,一张图片会生成大量的候选区域,但是通常只有很少的部分是包含检测目标,此种现象容易导致样本类别不均衡,即负样本数量过多,占总的损失值的大部分,而且这些样本大多都是属于易分类的,因此造成模型的优化方向偏离。Focal loss损失函数[31]是基于标准交叉熵损失函数改进得到的,该损失函数通过降低易分类样本的权重,使模型在训练时更专注于难分类的样本。因此本文采用Focal loss损失函数代替原损失函数中分类与置信度的二元交叉熵损失函数。二元交叉熵损失函数如式(4)所示:

其中,Pt为预测样本属于true的概率,y表示label取值为(+1,-1)。而Focal loss是在标准交叉熵中添加一种调制系数(1-Pt)r,这么做既能调整正负样本权重值,同时减少易分类样本的权重,从而使得模型在训练中更加专注于难分类的样本。Focal loss损失函数如式(5)所示:

当某个样本错误分类时(即Pt很小),那么调制因子(1-Pt)趋近于1,损失不受影响;而当Pt趋于1时,因子(1-Pt)接近0,则划分好的样本权重值被降低了,对于总loss值的贡献非常小。另一方面当r=0,α=1时,Focal loss就转化为传统的交叉熵函数,当r增加时,调制系数(1-Pt)r也会增加,参数r可用于调节易分类样本权重的比值。在文献[31]中通过实验证明当α=0.25,r=2时Focal loss对于模型训练的效果最佳,在该数值下,一个易分类样本(假设Pt>0.9)loss降为标准交叉熵loss的1/100,但对于难分类样本(假设Pt<0.5),其loss最多降为标准交叉熵的1/4。这就使得难分类样本的权重值相对提升了很多,也就增加了那些错误分类样本的重要性。因此改进后的损失函数如下所示:

Lxywh为中心点坐标与宽高误差之和,其中λcoord为坐标系数。Lconf为有物体与无物体的置信度误差之和,ĉi表示真实值,取值为是否为预测对象,若是,那么ĉi=1,否则ĉi=0。Lclass表示目标分类损失函数,Iobjij为第i个网格的第j个锚框的匹配情况。图5是在血细胞数据集BCCD上采用原损失函数与改进的损失函数在相同模型YOLOv-Att下损失值变化的对比效果图。蓝色表示采用原损失值变化情况,橙色表示采用改进损失值变化情况,横坐标是训练次数Epoch,纵坐标表总损失值Loss,可以看出,采用改进损失函数,其初始损失值明显小于采用原损失函数的初始损失值;在训练次数达到100次后采用改进损失函数的模型开始收敛,而采用原损失函数的模型当epoch达到120次左右时才开始收敛,最终训练达到150次后,采用原损失函数的模型,其损失值收敛至116,而采用改进损失函数的模型的损失值可收敛至53左右。综上所述,当模型采用改进的损失函数时,获得的总Loss值更小,收敛更快。

图5 不同损失函数曲线对比图Fig.5 Comparison of different loss function curves

3 实验和结果分析

本文的实验环境是在CPUi7-9750H,2.60 GHz;内存16 GB;显卡NVIDIA GTX 1660Ti;OS Window10,64位操作系统;开发环境Python3.6下进行,使用深度学习框架keras;底层Tensorflow2.0.0。GPU加速软件CUDA10.0和CUDNN7.6。

3.1 实验数据集

本文使用血细胞检测的公开数据集BCCD,该数据集共有364幅带注释的血细胞图片,但它存在一定的缺陷。数据集中有一个注释文件不包含任何红细胞(RBC),但图像却有RBC。此外,还有三个注释文件显示远低于实际数量的红细胞(RBC),因此对数据进行重新筛选并删除这4张标签和特征不对应的图片,最终数据集包括360张图像,每幅分辨率大小为640×480。根据血细胞类型将数据标注为3类:白细胞(WBC)、红细胞(RBC)、血小板(Platelets),其中血小板(Platelets)作为小目标检测具有一定的挑战性。

实验前先对血细胞数据集进行处理,对数据图像进行统一的编号使用Python脚本将标注好的数据集编写为适合YOLO网络的TXT文件格式。随机抽取300张图片作为训练集与验证集,剩余的60张图片作为测试集,训练集与测试集之比为5∶1;仿照PASCAL VOC格式将标注好的信息进行归一化处理。

3.2 参数处理与模型训练

实验采用Keras深度学习框架搭建算法模型。在训练图像输入模型前,图像尺寸都被缩放为416×416,并对其进行随机数据增强,由于BCCD属于小型数据集,因此本文采用Mosaic数据增强,即随机读取3张图片,进行图像翻转、扭曲、旋转等操作后,按一定比例组合成一张全新图片,不仅加大了训练数量,还能有效降低模型对识别物体的位置依赖,进而提高模型的泛化能力。在训练时,应用迁移学习的方法来加速训练,将在Imagenet数据集中训练好的Darknet-53的前35层卷积层权重导入模型。首先冻结前35层,训练35层之后的网络,初始学习率设置为0.001,每50次epochs学习率衰减为原来的0.1倍,动量为0.9,衰减系数为0.000 5,批量大小为8。在迭代50次之后解除冻结,接着训练,该阶段初始学习率设置为0.000 1,进行同样学习率衰减策略,批量大小设置为4。最终训练至150次epochs损失收敛停止训练。

3.3 评价指标

本实验采用准确率(precision,P)、召回率(recall,R)与mAP(mean average precision,即平均AP值)作为评价指标来评估网络的性能[32]。其中平均精度均值(mAP)是目标检测中最常用的评估识别准确率的指标之一。具体公式分别表示为:

式中,TP、FP、FN分别表示每个测试集场景中的正确检测出、错误检测出以及没有检测出的目标总数;n表示分类数,AP为单个目标类别的平均精度,近似等于P/R曲线下面积(area under curve,AUC),定义为:另外本文还计算了测试实验的时间,用于比较模型的检测速度。

3.4 实验结果与分析

3.4.1 锚框优化实验

在one-stage目标检测网络中,锚框设置的合理性对于最终模型的性能至关重要,如果锚框的尺寸与检测物体的尺寸差距过大,那么锚框的正样本数会非常少,导致大量的错漏现象。与常见的检测目标不同,血细胞的真实边界框纵横比接近1∶1,通用的锚点框参数并不适用于该数据集。因此,本文采用K-means++聚类算法在BCCD训练集上生成更适合的锚点框,同时与使用通用的锚点框进行对比实验。分别在YOLO-Att对数据集训练150个epoch,而后对测试集进行对应的mAP值计算。实验结果如表1所示。

表1 锚框对比实验Table 1 Anchor frame contrast experiment

通过K-means++聚类算法得到锚框的宽高分别是(25,24)、(54,56)、(70,47)、(64,61)、(55,75)、(78,63)、(69,72)、(85,80)、(140,127)。可以从聚类后的锚框尺寸直观看出,纵横比约为1∶1的居多,符合血细胞的标注框特征。另外聚类预测出的检测框和真实标注框的平均IoU(AveIoU)的精度相比通用锚框得出的AveIoU提高了22.92个百分点,对应的mAP也提高了2.97个百分点。

3.4.2 对比分析实验

本文将YOLO-Att模型与现有的目标检测模型Faster-RCNN、SSD、YOLOv3、RetinaNet[11]及YOLOv4在数据集BCCD上进行对比分析,通过对比数据集中各个细胞的AP指标以及平均检测精度(mAP)、检测速率(speed time),验证YOLO-Att的高效性。实验结果如表2所示,YOLO-Att模型的平均检测精度达到了66.32%,相比Faster-RCNN、YOLOv3、SDD以及YOLOv4分别提高了5.93、9.14、10.98、5.09个百分点。另外与采用Focal loss损失函数的RetinaNet网络相比检测精度提高约7个百分点。同时YOLO-Att在小型细胞(Platelets)的检测精度上相比其他算法均有较为明显的提高,进一步验证了YOLO-Att在小型目标的检测中有一定的优势。为体现YOLO-Att模型的效率,表2中还比较了在NVIDIA GTX 1660Ti显卡上测试的处理速度。如表中结果所示,YOLO-Att不仅在处理速度上匹配了one stage类算法,处理一张测试图片仅需85.4 ms,还大幅提高了检测精度,这在实际应用中更符合业界对血细胞检测算法的实时性要求。

表2 对比分析实验Table 2 Comparative analysis experiment

3.4.3 消融实验

本文通过消融实验对比分析,进一步验证各个改进点的优化效果,实验对比结果如表3所示,对基础网络YOLO框架结构嵌入多尺度残差增强模块、Attention Reseau模块以及对原Loss进行优化,该消融实验均采用K-means++聚类得到后锚框,从表3中数据可知,传统YOLO框架的平均分割精度mAP只有57.18%,当引入多尺度残差模块后,加强了骨干网络的细节特征信息提取能力,将平均分割精度提高了1.39个百分点;而嵌入Attention Reseau模块后,可将平均分割精度大幅度提高至61.12%;最后改进优化损失函数,虽然平均分割精度不如优化模型2,但是加快了模型收敛速度。综合上述三种改进点后,相对于YOLO,本文提出的优化模型YOLO-Att不仅保持了原有的检测速率,还有效地将分割精度提高了9.14个百分点,说明了改进算法YOLOAtt的实用性。

表3 消融实验Table 3 Ablation experiments

3.4.4 图片对比效果

随机选取测试集图的图片进行检测结果对比分析,对Faster-RCNN、YOLOv3、YOLOv4以及YOLO-Att进行对比,结果如图6所示,图6(a)为人工标注图片,图6(b)为Faster-RCNN测试结果图,图6(c)为YOLOv3测试结果图,图6(d)为YOLOv4测试结果图,图6(e)为YOLO-Att测试结果图。从第一行的对比分析中可看出,当只存在白细胞与红细胞时,采用Faster-RCNN算法标注后的血细胞存在1个错检与3个漏检,运用YOLOv3算法标注后的血细胞存在1个错检与2个漏检,YOLOv4算法标注的存在1个错检与1个漏检,而采用YOLO-att算法标注后的血细胞没有错检与漏检。而当存在小型细胞血小板(Platelets)时,如第三、四、五行的对比分析图所示,Faster-RCNN并不能有效地识别并标记出血小板(Platelets),而采用YOLOv3、YOLOv4与YOLO-Att算法则可以高效地检测出来(图中红色框标注);另一方面,对比采用YOLOv3、YOLOv4以及YOLO-Att算法的所有效果图可知,采用YOLO系列算法进行血细胞检测时,标注的红细胞(RBC)存在大量的错检与漏检问题,另外白细胞(WBC)虽能准确识别,但其标注框的大小与位置却不够精准。综合图片检测结果可知,YOLO-Att对白细胞(WBC)、孤立的红细胞(RBC)与血小板(Platelets)都有非常高的检测准确率,虽然当红细胞(RBC)存在重叠与粘连部分时,YOLOAtt也存在部分漏检与错检问题,但相比于其他算法,YOLO-Att大幅提升了检测准确率,并且保持了良好的检测速率,进一步说明了YOLO-Att的高效性。

图6 可视化对比图Fig.6 Visual comparison diagram

4 结束语

本文提出一种面向BCCD血细胞检测的YOLO-Att网络模型。考虑精度与效率两方面,YOLO-Att首先在原YOLO框架的Bockbone中嵌入多尺度残差模块,其次为颈部(Neck)设计一种注意力门控结构Attention Reseaus来提高挖掘上下文语义特征的能力,最后运用Focal loss代替原损失函数中的交叉熵函数,进一步提高分割精度。通过在BCCD数据集上的消融实验验证了YOLO-Att中的各个嵌入模块与设计的注意力门控结构的有效性,并且与现有目标检测网络相比,YOLO-Att在网络参数、运行速度、识别精度等方面均取得了更优异的结果。

下一步工作是继续优化模型结构与损失函数,并研究如何提升分割模型的精度与实用性,希望能有效解决红细胞(RBC)重叠、粘连的情况。

猜你喜欢
血细胞损失卷积
18例艾滋病合并噬血细胞综合征临床特点分析
临床检验中血细胞形态学观察与分析
社区管理精神病人全血细胞分析
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
甲氨蝶呤治疗类风湿性关节炎发生全血细胞减少不良反应分析
卷积神经网络的分析与设计
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法