YOLO系列改进 | YOLOF的小小改进升级之轻量化TE-YOLOF

简介: YOLO系列改进 | YOLOF的小小改进升级之轻量化TE-YOLOF

显微图像中的血细胞检测是医学图像处理研究的一个重要分支。由于人工检查血细胞的疾病检测处理时间较长且容易误检,因此使用基于卷积神经网络的目标检测方法来检测血细胞可以被看做一种比较可行的解决方案。

在这项工作中,提出了一种基于YOLOF的目标检测方法来检测红细胞、白细胞和血小板等血细胞物体。这种目标检测出方法被称为TE-YOLOF,也就是轻量化YOLOF。它是一种One-Stage算法,且使用dilated-encoder从单层特征图中提取信息。为了提高效率和灵活性,将EfficientNet用作主干。此外,应用深度可分离卷积来提高网络性能并最小化网络参数。同时,还使用了Mish激活函数来提高精度。

在BCCD数据集上的大量实验证明了所提出的模型的有效性,该模型比其他现有的血细胞检测模型更有效。


1、简介


显微图像中的血细胞分析通过识别不同的细胞对象在疾病识别领域中起着至关重要的作用。在血细胞领域,血液中有三种重要成分:白细胞(WBC)、红细胞(RBC)和血小板。这些血细胞的比例和数量严重影响医生对疾病的判断。因此,找到一种基于深度卷积神经网络的目标检测算法来准确高效地检测血细胞,可以提高医疗系统的效率。

目标检测是寻找图像中物体坐标并对物体进行分类的研究,广泛应用于机器视觉、行人识别、异常检测等计算机视觉任务中,精确的目标检测算法让计算机代替了部分人工来手动检查实例。

当前的目标检测算法基于two-stage或one-stage方法。在two-stage领域中,大多数网络基于R-CNN框架,该框架在第一阶段生成proposal,并在第二阶段对RPN输出的proposal进行细化,具体分出proposal的类别和BBox左边。这种两阶段模型以较慢的推理速度换取了更高的检测精度。

而单阶段目标检测方法,如YOLO和SSD,通过学习类概率和边界框坐标,将目标检测重新定义为一个单一回归问题。YOLOF中使用了级联空洞卷积,以通过特征金字塔网络(FPN)获得相同的密集小样本检测效果。

在这项研究中提出了一种新的单阶段目标检测方法,该方法在解决低精度的血细胞检测问题上表现出较高的精度和效率。简而言之,这项研究的贡献分为以下几项:

  • 首次将YOLOF应用于血细胞检测领域,并使用EfficientNet CNN作为主干来提高效率和灵活性。
  • 采用深度可分离卷积模块来提高解码器的性能并最小化解码器中的参数。
  • 与Swish、ReLU、MetaAconC等其他函数相比,证明了Mish激活函数是提高精度相对最优的方法。
  • BCCD数据集的大量实验表明了每个组件的重要性。此外,还与YOLOv3、Deformable DETR进行了比较。本文方法可以得到更高的mAP。

2、本文方法


目标检测的目标是找到图像中物体的坐标,并对其分类。在本研究中,所提出的目标检测方法将目标检测视为一种回归问题,这与YOLO目标检测的方法是等效的。此外,与使用FPN来提高性能的YOLOv3相比,本文所提出的仅使用backbone的最后输出特征的检测方法可以更快地收敛并表现出更好的性能。本文所提出的目标检测方法是对YOLOF进行修改得到的。

image.png

如图1所示为本文所提出的检测方法的流程图,整个操作包括8个步骤。这些步骤的详细信息如下。

  • 步骤1:将数据增强以后的BCCD数据加载到图1中的Dataset模块。
  • 步骤2:加载的图像被分为训练、验证和测试集,标注格式为COCO。
  • 步骤3:在该步骤中,创建YOLOF模型,以便随后改进得到本文所提出的模型。
  • 步骤4:本步骤详细介绍了该模型的总体架构修改过程。这些修改涉及模型的backbone、检测头中解码器模块以及激活函数的选择。
  • 子步骤4.1:第一个改进主要是为了更改模型的backbone,这里使用EfficientNet替换ResNet-50作为backbone。
  • 子步骤4.2:第二个主要改进是使用深度可分离来代替检测器头解码器中的正常卷积模块。
  • 子步骤4.3:第三个改进主要是再目标检测器的检测Head部分选择Mish激活函数,而不是使用ReLU激活函数。
  • 第5步:调整模型参数。Backbone的权重使用ImageNet预训练权重。训练阶段的参数设置在第4.1小节中进行了详细说明,其他未提及的参数与YOLOF的参数进行了调整。
  • 步骤6:训练详细配置详见第4.2小节。
  • 步骤7:在训练阶段之后,在测试集中评估所提出的模型。mAP是主要使用的评价指标。此外,通过参数数量和GFLOP来评估所提出的检测器的效率。在第4.3小节中详细解释了这些具有详尽实验。
  • 步骤8:在本步骤中使用测试数据集显示了所提出的检测器的可视化结果。详细结果见第4.3小节。

2.1、TE-YOLOF

基于上述解决方案,我们提出了一个轻量级框架TE-YOLOF。TE-YOLOF的示意图如图2所示。该框架由三部分组成:主干、编码器和解码器。在本节中,我们简要介绍了所提出的检测器中使用的主要组件。

image.png

1.Backbone.

所有模型均采用EfficientNet系列作为主干。出于效率和灵活性的目的,选择EfficientNet-B0到EfficientNet-B3进行分析,同时兼顾精度和参数。所有模型都在ImageNet上预训练。主干的输出是C6特征图,它具有默认的1280个通道,在不同主干中具有不同的宽度增强因子,下采样率为32。

2.Encoder.

编码器的具体架构如图3所示。具有2个投影层(一个1×1和一个3×3卷积)的projector被添加到主干之后,从而生成具有512个通道的特征图。然后使用由3个主要组成部分组成的残差块:第1个1×1卷积用于通道缩减,缩减率为4,然后使用3×3卷积来放大不同块中具有不同扩展因子的感受野,最后使用1×1卷积来恢复通道数量。

image.png

3.Decoder.

如图2所示,解码器由两个并行的任务专用头组成:分类头和回归头。

回归头上有4个纵向可分离卷积模块,而分类头上只有2个。

深度可分离卷积模块的架构如图4所示。模块中的每个卷积层之后是BN层和Mish层。遵循Autoassign,并对回归头上的每个Anchor使用objectness预测,以证明Anchor是否包含对象。分类分数的最终预测是通过将分类输出与objectness预测相乘而得到的。

4.其他

在该目标检测算法中使用NMS以确保检测器仅检测每个目标一次。将移除与最高分数超过阈值的框重叠的检测到的框。在该模型中,Focal Loss被用于解决正负样本之间的不平衡问题。GIoU用于解决回归问题。

2.2、采用复合缩放方法的EfficientNet

复合缩放是通过以原则性的方式均匀缩放网络宽度、深度和分辨率来实现更高性能的有效方法。虽然只有增加其中一个因素才能提高精度,但网络变得太大,参数和操作量巨大。复合系数用于在受限条件下平衡不同因素,并达到更高的精度。具体完成情况见等式(1)。

直观地说,是一个用户指定的参数,它控制有多少资源可用于模型缩放,而、、分别决定网络宽度、深度和分辨率的扩展。EfficientNet-B0的最佳值为、、。在方程(1)下,利用不同的获得了EfficientNet-B1至B7。

在这项研究中,为了效率和灵活性,选择EfficientNet-B0到B3作为主干进行分析。另一方面,使用不同的骨干来证明有效性模型的精度和计算之间的关系。

2.3、深度可分离卷积

深度可分离卷积是通过将标准卷积分解为深度卷积和称为逐点卷积的1×1卷积来最小化参数的有效方法。对于所提出的检测器,深度卷积对每个输入通道应用单个滤波器,点卷积应用1×1卷积来组合深度卷积的输出。具体架构如图4所示。在卷积层之后遵循批归一化层和Mish激活函数。

关于更多细节,标准卷积如图5所示,相应的深度可分离卷积如图6所示。假设输入通道为,输出通道为,卷积核的大小为。根据图5,标准卷积核是。如图6所示,深度卷积核是,而逐点卷积核则是。与标准卷积相比,深度可分离卷积使用的参数少了8到9倍。

image.png

image.png

2.4、Mish激活函数

Mish是一个光滑、连续、自正则、非单调的激活函数,数学上定义为:

image.png

Swish定义为。图7显示了和Mish对ReLU的Swish图。如图7(a)所示,Mish与Swish相似,在的范围内,其下有界,上无界。正如图7(b)所示的那样,Mish函数在正值上比Swish收敛得更快。

image.png

Mish的优点:

  • Mish通过设计保留少量负面信息的前提条件,消除了Dying ReLU现象;
  • Mish在接近零的梯度避免饱和。它在上面是无界的,因此输出不会饱和到最大值;
  • 与ReLU和Swish相比,Mish是连续可微的,并在更好的梯度流中发挥作用。

3、实验结果


3.1、与以往工作的比较

1、与可变形DETR的比较

可变形DETR是最近提出的一种检测器,它将可变形注意力引入到小目标检测问题的目标检测中。尽管它可以在具有更高mAP(的评估指标)的BCCD数据集上获得令人惊讶的结果,但它在更多的时间段内会收敛,并且每个时间段都需要密集的操作。结果如表3所示。与可变形DETR相比,所提出的TE-YOLOF方法收敛更快(4×),并且还实现了更高的mAP。

image.png

2、与YOLOv3的比较

YOLOv3实现了86.79 mAP的目标,而在本文中使用相同的设置,批大小为8的情况下,实现了86.7 mAP。而YOLOF在与AdamW相同的设置下可以表现得更好。表3显示,TE-YOLOF可以以较低的时间段、参数数量和操作实现更好的性能。

3、与FED的比较

FED是BCCD数据集中参数最小的最有效模型。它利用EfficientNet-B3作为主干,YOLOv3头作为检测头。修改了基于YOLOv3的组件,以观察到更好的性能。通过表4的比较,与FED相比,TE-YOLOF-B0可以以较低的参数在mAP中实现更好的性能。当使用相同的主干时,TE-YOLOF可以实现91.9的mAP,主要贡献是提高RBC的准确性。

image.png

3.2、消融实验

最终进行了多次消融实验来分析TE-YOLOF。首先对3个提出的组成部分进行总体分析。然后,对每个组件的详细设计进行了消融实验。结果如表5所示。为了可信度,所有实验数据均为3次实验的平均值。

1、Backbone of EfficientNet

表5显示,作为主干的Efficient Net优于ResNet-50的原始主干,其结果在表3中显示为87.6mAP。mAP根据EfficientNet版本的改进得到了提升。EfficientNet-B0的mAP最低,为87.8,而EfficientNet-B3的mAP为89.0。不同主干的结果表明,特征提取能力的提高与EfficientNet版本呈正相关。

2、深度可分离模块

TE-YOLOF使用深度可分离卷积代替解码器中的标准卷积。图6显示了该模块的体系结构。深度卷积可以单独提取特征,而点卷积可以融合每个特征图上每个点的数据。血细胞检测属于密集的小目标检测,因此深度可分离卷积的能力可以在该模型上显示出来。根据表5,由于具有不同骨干的TE-YOLOF中的深度可分离卷积的贡献,性能提高了0.2至1.3个点。

3、Mish激活函数

默认激活为ReLU。通过比较三种不同的激活函数可以证明Mish激活函数的有效性。MetaAconC利用1×1卷积来实现不需要激活神经元。表5显示,MetaAconC对不同主干的改进是不稳定的,而Swish和Mish对结果的有效性是稳定的。

3.3、视觉结果

所提出模型的检测结果如图8所示。使用的模型是TE-YOLOF-B0,具有最小的参数和操作量。从图8中可以看出,该模型可以很好地检测所有类别。血小板、红细胞和白细胞分别对应于小、中和大目标。本文的模型可以准确地识别不同大小的类别,并且可以高精度地检测密集的RBC。


4、参考


[1].TE-YOLOF: Tiny and efficient YOLOF for blood cell detection.

相关文章
|
JavaScript 小程序 前端开发
|
机器学习/深度学习 计算机视觉 异构计算
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
|
数据可视化 NoSQL 关系型数据库
数据中枢平台 · 致力于打造行业场景化数据枢纽
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
数据中枢平台 · 致力于打造行业场景化数据枢纽
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
279 2
Python实用记录(三):通过netron可视化模型
|
机器学习/深度学习 算法
YOLOv5改进算法之添加CA注意力机制模块
CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系。
986 0
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能医疗与健康管理
使用Python实现深度学习模型:智能医疗与健康管理 【8月更文挑战第2天】
564 4
使用Python实现深度学习模型:智能医疗与健康管理
|
网络协议 Python
Python实现HTTP 传输的断点续传机制
使用Python `requests`库实现HTTP断点续传下载大文件,通过设置`Range`头部从上次中断的位置开始继续下载。示例代码展示了一个名为`resume_download`的函数,它接收URL、文件名和最后字节位置参数,以追加方式打开文件并逐块写入内容。要启用HTTP长连接,可添加`Connection: keep-alive`到请求头。
788 0
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(2)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
128 0
|
安全 UED Python
Python中使用Tkinter和Difflib模块实现文本比对功能
Python中使用Tkinter和Difflib模块实现文本比对功能
275 0