1. 引言
随着科技水平的提高,人们的日常生活水平也在逐步的提高,开始更加关注自身的健康状况。随着人们关注度的提升以及人工智能的发展,医学领域与计算机领域这两大领域在一定程度上相结合,传统的对血细胞进行筛查的常见手段是通过血细胞分析仪和人工镜检的检测,血细胞分析仪是利用电阻抗法、激光散射法、流式细胞术、细胞化学染色法等原理对血细胞进行计数[1]。这种方法的优点是能够快速,有效的获得血液中的血细胞数量和类别,能够帮助医生进行快速的初筛。但这种方法也有很大的局限性,这些仪器无法获得血细胞细胞的形态学变化,并且这些仪器也缺乏对未成熟血细胞的分析,而基于深度学习的血细胞识别技术相比于传统的检测技术具有更高的检测精度和更快的检测速度[2]。因此基于深度学习的血细胞识别技术具有重要的研究意义和和经济价值。
2. YOLOv5算法基本理论
YOLOv5是YOLO系列推出的第五个版本,与之前的版本相比,其继承了YOLO系列原有的核心思想及ResNet等算法,将这些算法的核心思想结合起来并将其加入到YOLOv5中,从而使其在相同的运行环境下能够更加快速的运算出结果同时还提高了MAP值,在实时目标检测方面更加高效[3]。其运行过程如图1所示:
Figure 1. YOLOv5 running structure diagram
图1. YOLOv5运行结构图
YOLOv5神经网络模型主要包括四个部分:input、Backbone、Neck、Loss。其分别为YOLOv5模型的四个主要模块,各自具有不同的网络宽度和深度,但其结构均相似。底层使用Focus、Conv卷积块、BottleNeckCSP和SSP等模块来提取特征,输入是C × W × H的图像通过Focus模块进行切片操作,将图像的宽度和高度减少到原始图像的一半。卷积运算后,使用BottleNeckCSP技术进一步提取特征,使特征更加的多元化从而提高识别的准确度。进入颈部后,空间池化层(SPP)用于最大池化[4],然后,FPN + PAN结构用于网络特征融合,进行特征融合操作,而GIOU Loss + NMS用于平衡重叠和交叉区域等复杂场景,最终输出模型[5]。
3. 系统设计
3.1. 血细胞识别系统总体设计
血细胞识别系统主要实现对血细胞检测功能和历史查询功能等,血细胞检测部分首先需要加载数据集,用数据集训练模型,最终预测测试集中的血细胞类别,其系统各功能模块关系如图2所示:
Figure 2. Relationship diagram of various functional modules in the system
图2. 系统各功能模块关系图
3.2. 医生模块设计
Figure 3. System operation flow chart
图3. 系统操作流程图
对于当前的系统,应当思考如何让用户能够正确的对系统进行操作。该系统设计时是以医生作为用户来进行设计,首先登陆页面需要输入用户名和密码,输入正确时可登录系统的主界面,医生可以输入和加载患者的信息和待识别的图片,系统可以根据图片识别出细胞类别。系统也可以查看患者的历史信息,其操作流程图如图3所示。
3.3. 系统用例图设计
系统UML用例图清晰的展示了系统的主要功能模块及其之间的关系,血细胞检测主界面是核心用例,涵盖了图片识别和结果展示等关键操作,患者信息收录用例确保患者的基本信息和检测样本信息得以准确记录,为后续诊断和分析提供基础数据,历史查询用例方便医生回溯患者过往检测情况,对比不同时间点的血细胞数据有助于发现病情的发展趋势,其他功能则为系统提供了扩展性,这些用例相互配合构建了一个功能完备的血细胞识别系统,具体系统UML用例图如图4所示。
Figure 4. System UML use case diagram
图4. 系统UML用例图
3.4. 系统界面设计
Figure 5. System main interface design diagram
图5. 系统主界面设计图
系统主界面设计简洁明了易于操作,界面包含病人信息区域,方便对患者检测数据进行准确记录和分类。图片识别功能区提供“打开图片”和“检测”按钮操作直观便捷,“历史查询”按钮方便医生随时查看患者过往检测记录,“保存”功能可将当前检测结果及时存储避免数据丢失。“关于我们”板块能让用户了解系统开发团队等相关信息,整体设计充分考虑了用户的使用习惯和需求。系统界面设计图如图5所示。
4. 系统实现
4.1. 数据准备
本设计数据集从DataFountain中进行选取。DataFountain (简称DF平台)是国内领先的数据科学竞赛创新平台之一,提供数据竞赛AI算法大赛、数据集、项目实训、在线编程等服务。该数据集包含12,500张血细胞增强图像(JPEG),并带有伴随的细胞类型标签(CSV)。
该数据集中共有四类血细胞,分别为EOSINOPHIL (嗜酸性粒细胞)、LYMPHOCYE (淋巴细胞)、MONOCYTE (单核细胞)、NEUTROPHIL (中性粒细胞),每类血细胞有3000张图片,分别存放与训练集、测试集以及验证集中。四类血细胞训练集如下图6~8所示:
Figure 6. Eosinophil training set
图6. 嗜酸性粒细胞训练集
Figure 7. Lymphocyte training set
图7. 淋巴细胞训练集
Figure 8. Monocyte training set
图8. 单核细胞训练集
4.2. 数据标注
Figure 9. Labelme labeling of blood cell images
图9. Labelme对血细胞图像进行数据标注图
将数据集对应的文件导入Labelme中并进行标注,并对标注完所生成的.JSON文件进行保存。将生成的JSON文件放入到YOLOv5文件夹当中,通过zhuanhuan2.py文件将.JSON格式的数据集转换成YOLOv5格式。标注过程如图9所示。
4.3. 血细胞识别
血细胞识别步骤主要有获取图像地址、加载图像信息、获取设备信息、加载训练好的数据模型、对图像进行识别和保存结果。具体模型检测流程图如图10所示。
4.4. 血细胞识别界面设计
血细胞识别系统的各界面主要通过PyQt5的设计来实现的。而界面的接口主要通过PyQt5库函数提供的各种组件类来设计,然后通过调用组件事件和插槽机制来触发特定的函数。界面设计流程图如下图11所示:
Figure 10. Model detection flowchart
图10. 模型检测流程图
Figure 11. Interface design flow chart
图11. 界面设计流程图
4.5. 测试软硬件环境
本作品训练阶段采用的是深度学习工作站,硬件环境配置如下表1所示:
Table 1. Hardware environment table
表1. 硬件环境表
名称 |
型号 |
CPU |
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz |
内存 |
16.0 GB |
主板 |
技嘉B760M AORUS ELITE AX |
硬盘 |
致态tiplus7100 |
GPU |
Quadro P6000 |
软件测试环境,配置如下表2所示:
Table 2. Software environment table
表2. 软件环境表
名称 |
版本 |
编辑器 |
PyCharm |
运行框架 |
Pytorch |
操作系统 |
Windows10 |
图片数据集则包含12,500张血细胞增强图像(JPEG),并带有伴随的细胞类型标签(CSV)。该数据集中共有四类血细胞,分别为EOSINOPHIL (嗜酸性粒细胞)、LYMPHOCYE (淋巴细胞)、MONOCYTE (单核细胞)、NEUTROPHIL (中性粒细胞),每类血细胞有3000张图片,分别存放与训练集、测试集以及验证集中。本设计中将训练集与测试集以9:1的比例来进行划分,从每个类中选取训练集图像约为2400张,测试集约为270张,验证集则约为10张,训练集与测试集数据均需要用labelme软件进行标注,而验证集则用来检验模型性能。
5. 系统测试
5.1. 血细胞识别算法效果
Figure 12. Effect of eosinophil detection
图12. 嗜酸性粒细胞检测效果图
Figure 13. Effect diagram of lymphocyte detection
图13. 淋巴细胞检测效果图
Figure 14. Effect of monocyte detection
图14. 单核细胞检测效果图
Figure 15. Neutrophil detection effect diagram
图15. 中性粒细胞检测效果图
血细胞检测效果图如图12~15所示,其中eo表示嗜酸性粒细胞,ly表示淋巴细胞,mo代表单核细胞,ne代表中性粒细胞。图中红色矩形框为检测到的目标的外接框,外接框上方的信息为识别到的血细胞类别名称和置信度。
5.2. 血细胞识别系统功能
血细胞识别系统界面的主界面使用效果图,可以看到检测前与检测后的检测效果图,图中eo表示嗜酸性粒细胞,系统主界面有性别、年龄、种类等选择功能,可以方便保存患者的数据,效果图如图16所示。
历史查询界面可以根据样本号以及时间查询到具体的样本号、姓名、性别、年龄、种类等,并且能够看到每位患者的检测结果图,信息效果图如下图17所示。
在历史查询界面中,通过输入患者相关信息,能够获取其已录入的信息,能够通过选择样本号、姓名、种类、年龄和性别来查询系统中已录入的信息。通过样本号来进行查询,如图18所示。
Figure 16. Effect diagram of blood cell recognition interface
图16. 血细胞识别界面效果图
Figure 17. Rendering of the historical query interface
图17. 历史查询界面效果图
Figure 18. Effect diagram of querying information by querying sample number
图18. 通过查询样本号查询信息效果图
5.3. 算法性能分析
目标检测算法中,一般采用MAP来评价检测算法的准确度以及稳定性。0.5为交并比(IOU)阈值。横轴为训练轮次(epoch),纵轴为MAP值。评价效果如下图19所示。
Figure 19. MAP results at IOU threshold of 0.5
图19. IOU阈值在0.5时,MAP的结果图
从图中可以看出在IOU为0.5的情况下,经过130多轮训练后MAP能够达到85%以上,则可以说明该检测算法在该环境检测效果良好且识别效果可靠,从而能够进一步说明YOLOv5模型在血细胞识别这一方向中比较具有说服力,因为其在这一方向上有着较为良好识别效果。
6. 结语
本次设计过程当中重点掌握深度学习卷积神经网络的思想理论和实现目标检测的原理,并对原理进行深入学习,熟悉其核心思想与操作过程。在具备其相关的理论基础后,收集约12,000个血细胞的图像数据,用labelme工具对图像数据进行数据标注操作,随后对标注的数据进行模型训练,通过编程制作血细胞检测系统并实现血细胞识别历史查询、患者信息录入等功能,最终完成了血细胞识别方法的设计和实现。该系统的建立有效结合了深度学习技术与血细胞检测需求,解决了传统检测方法成本高和精准度不足的问题。YOLOv5算法在血细胞识别任务中展现出良好的性能,经过多轮训练后检测准确度较高,为血细胞检测提供了新的技术方案,本研究也为后续相关领域的研究和应用拓展提供了实践基础和参考依据,有助于推动医学检测技术在深度学习方向的进一步发展。
基金项目
西安市科学技术局科技计划项目(22GXFW0149)。
NOTES
*通讯作者。