Advertisement

基于YOLOv8深度学习的医学影像乳腺癌X光片自动检测与语音报警系统

阅读量:

乳腺癌在全球女性中是最常见的恶性癌症类型之一。对于改善患者的生存率而言,早期筛查与精准诊断具有关键的重要性。传统的乳腺癌检查往往依赖于放射科医生的专业经验,在实际操作中容易受到主观判断的影响且可能导致误诊现象较为普遍,并给医疗工作者带来较大的工作负担。鉴于此,在提升乳腺癌X光片(Mammogram)自动检测水平方面,本研究提出了一种基于YOLOv8深度学习算法的新颖检测与语音报警系统

本系统基于YOLOv8目标检测模型,在大规模乳腺癌X光片数据集上进行了训练与优化,并通过数据增强技术显著提升了检测效果。该系统集成PyQt5可视化界面及语音报警模块,在发现可疑肿瘤区域时可实时发出警报提示医生或患者进行进一步检查。实验结果显示,在乳腺癌X光片分类任务中该系统的准确率与召回率均达到较高水平,并较传统CAD方法在临床决策支持方面更为高效可靠

本研究的主要贡献体现在以下几个方面:首先,在乳腺癌诊断领域中,在本研究中我们主要贡献了以下几点:第一点是利用YOLOv8算法对乳腺癌X光片进行优化检测,并实现了高精度的分类效果;第二点是借助PyQt5框架开发了实时的检测界面,并且提升了系统的交互体验;第三点则是集成了智能化语音报警功能模块,并且成功提升了智能化预警能力。

该系统旨在支持乳腺癌的早期筛查与临床诊断过程,并具备智能辅助功能。它能够减少误诊概率并提升诊断速度。通过这一技术的应用与发展,在未来将进一步促进医学影像智能化进程。

算法流程

Tipps:详细剖析项目的整个算法流程,并系统性地探讨实现过程中关键逻辑。从数据读取与预处理阶段开始,在核心算法的设计和优化环节中深入研究,在最终呈现阶段全面展示各个步骤的关键点。通过清晰的组织架构和简明扼要的表达方式逐步揭示技术背后的原理以及具体的实现思路。

硬件环境

我们采用了两个硬件平台架构来完成系统的测试与开发。(1)A Series A16 Superstation XPS 16笔记本电脑:

(2)惠普 HP暗影精灵10 台式机:

该系统在硬件环境下展现出卓越的能力来处理大规模图像数据并完成高效计算任务。借助GPU的帮助,在模型训练所需的时间上实现了明显的缩减。
通过两种不同的硬件平台来进行测试与优化以检验系统的性能、适应性和稳定性。
同时还能降低开发成本并提高效率,并为实际应用提供可靠的基础。

模型训练

Tipps:模型的训练、评估与推理

1.YOLOv8的基本原理

YOLOv8被视为当前最先进的模型之一,并基于Yolo系列的历史版本,在其基础上增添了一些创新性功能与改进点。通过这些优化调整后,在完成目标检测、图像分割及人体姿态估计等任务方面均展现出显著优势与更高的效率。具体而言,在该模型中新增了一种高效的骨干网络架构,并引入了一种全新的Anchors-Free检测头设计以及一种创新性的损失函数设计。这些改进使得YOLOv8能够在多样的硬件平台上稳定运行并展现出卓越的性能表现

YOLOv8是Yolo系列模型的最强版本,在多个关键指标上全面超越现有对象检测与实例分割模型,在提升原有Yolov5模型结构的基础上实现。

Yolov8模型网络结构图如下图所示:

2.数据集准备与训练

本研究采用了包含了乳腺癌X-ray图像的数据集,并运用了YOLOv8n模型对其进行处理。通过对每张图像的目标边界框(Bounding Box)及其分类进行标注后,在此数据集上完成了模型的训练工作。完成训练后,我们对模型在验证集上的性能表现进行了全面评估和对比分析。具体流程包括三个阶段:首先是数据准备阶段、接着是模型训练阶段、最后是模型评估阶段。本次注释的主要类别集中在乳腺癌X-ray图像上。数据集总计包含 33035 张图像及其详细分类信息如下:哺乳动物中的哺乳期样本有19794张、乳头区域的样本数量为12565张以及哺乳动物中的非哺乳期样本有10672张

训练集:包含23124张图像的数据样本用于模型训练与性能提升。
验证集:拥有6607张图像的数据集合用于检验模型对新数据的适应能力。
测试集:提供3304张图像的数据部分用于全面检验模型的实际应用效果。

数据分布可视化图表

部分数据集图像如下图所示:

部分标注如下图所示:

该数据分布策略确保了在模型训练、验证以及测试过程中实现均衡分布,并为其开发与性能评估提供了可靠的基础。

在项目的根目录中创建一个名为datasets的子目录,并按照以下方式进行操作:首先将所有待检测的图像按照训练集和验证集两个类别进行分类后放置于该目录内。

为了建立一个data.yaml文件, 以便记录训练数据路径以及模型待检测的目标类别. YOLOv5在执行模型训练过程中, 能够利用该文档中的信息完成相应的任务. 具体信息如下:

该文件指定了用于模型训练与验证的数据集路径,并指明了目标类别将被模型检测。

在完成数据准备之后, 我们将通过调用train.py文件来进行模型训练. 其中, epochs参数将影响着训练的轮次设定, 而batch参数则会根据内存容量来决定每批处理的数据量(最低设置为1)

CPU/GPU训练代码如下:

加载预训练好的YOLOv8模型文件yolov8n.pt,并将其导入系统中以便后续使用。
采用YOLO系列模型进行参数优化工作,请注意以下关键参数设置:
(1) 数据集配置信息由data_yaml_path指定位置,并提供详细的数据路径信息以便后续数据读取操作。
(2) 总迭代次数设定为150次,请根据实际需求进行调整以确保算法收敛性与稳定性分析结果的有效性验证过程顺利开展。
(3) 每批处理4个样本数量,请根据实际计算资源合理规划批次大小以平衡加速效果与内存占用效率之间的关系。
(4) 优化算法选择梯度下降法(SGD),其学习率设置需结合具体场景进行微调以获得最佳性能表现效果评估指标数据曲线形态特征观察结果作为最终判断依据。
最后,请确保将此次实验命名为train_v8项目并将其归档至指定存储目录中以便后续查询与版本管理操作执行完毕后请立即关闭该实验环境以免造成数据丢失风险。

3.YOLOv8模型训练结果与性能评估

在深度学习的学习过程中

损失函数作用如下:
(1)定位损失 (box_loss):表征预测框与标定框之间的误差程度(GIoU),值越小则定位精度越高。
(2)分类损失 (cls_loss):用于评估锚框与其对应标定分类的一致性程度,值越小则分类效果越好。
(3)动态特征损失 (dfl_loss):DFLLoss通过对齐预测框与目标框间的回归关系,并结合特征图尺度优化策略,在提升定位精度的同时实现显著提升目标检测性能

训练和验证结果文件存储:

训练完成后,相关的训练过程和结果文件会保存在 runs/ 目录下,包括:

(1)该损失曲线图表展示了模型训练过程中的损失变化情况。
(2)该性能评估曲线图列出了mAP、精确率和召回率等关键性能指标。
(3)该混淆矩阵图表提供了模型分类结果的详细信息。
(4)该Precision-Recall (PR) 曲线展示了模型在不同阈值下的精度与召回率平衡情况。

损失曲线(Loss Curve)和性能指标分析:

训练指标:
在train/box_loss指标中:
表示预测边界框与真实边界框之间的差异程度。
随着训练过程的推进,在该指标持续下降。

train/cls_loss这一指标的作用在于衡量预测结果与真实标签之间的差异程度。具体而言,
它反映了模型在进行图像分类任务时的性能表现。
从训练曲线来看,
随着模型迭代次数的增加,
该指标的数值呈现出稳步下降的趋势,
这表明模型在区分不同类别的能力上得到了显著提升。

train/dfl_loss:
含义:该损失函数采用分布融合机制(Distribution Fusion Mechanism),用于提升边界框边缘定位的效果。
趋势:随着训练过程的推进,该指标持续下降直至稳定于较低水平。

验证指标:
val/box_loss:
含义:
该指标定义了在测试集上进行边界框回归损失的评估标准。其中 val/box_loss 表示测试集中的损失值。该指标与训练阶段的 box_loss 类似,
但其计算基于独立于训练数据的新样本。从整体趋势来看 val/box_loss 随着迭代次数增加而逐步下降。这一变化趋势与 training 的 box_loss 趋势一致,
实验结果表明测试集中 val/box_loss 的平均值较前一次迭代有所下降。

val/cls_loss:
含义:在验证集上实现的分类损失与训练集中cls_loss表现相近。
趋势:随着训练过程的推进,损失值持续下降趋势明显,并且验证集上的分类性能稳步提升。

val/dfl_loss:
意义:在验证集上计算的数据分布特征融合后的总损失。
趋势:该指标数值持续减少,在验证集中所对应的边界框定位精度逐步提升。

性能指标如下:
metrics/precision(B)
含义:
在被预测为目标类别的样本中占比例较高的样本被称为正确分类。
趋势:
随着模型训练的深入发展,在正确分类目标类别的样本数量上也取得了显著的进步。

其中recall(B)代表训练过程中的召回率指标。该指标衡量的是所有真实目标中被正确识别的比例。其趋势显示,在训练过程中该模型的召回率逐步提升至接近1的水平。这表明模型在识别实际目标方面的能力得到了显著增强。

metrics/mAP50(B):
定义为验证数据集上的 mAP@0.5 指标,在计算时使用 IoU 阈值为 0.5 的平均精度作为评估基准。
变化趋势显示该指标从较低水平稳步增长至接近理想值(1),反映出该模型在目标识别与定位任务中展现出良好的综合性能提升

metrics/mAP50-95(B):
含义:在验证集上进行衡量的mAP@0.5-0.95指标,用于评估多个IoU阈值下的平均精度水平。
趋势:该指标由低至高稳步提升,表明模型在执行目标检测任务时的定位与分类性能均得到增强。

总结:
(1)这些损失指标(box_loss、cls_loss、dfl_loss)在训练与验证过程中均呈现持续下降的趋势,在每次迭代中均能较前一阶段取得更低的数值表现。
(2)这些评估指标(precision、recall、mAP)在每个训练阶段均能较上一阶段获得更高的值,并逐渐趋近于稳定的水平值。
(3)从实验结果来看,在测试数据上的变化趋势与在训练数据上的变化趋势高度一致,在测试数据上的表现并未出现明显偏差现象。

Precision-Recall(P-R)曲线分析:

曲线说明:淡蓝色曲线(1)代表良性类别的PR曲线;右侧注释显示mAP@0.5值为0.993,则表明模型在良性类别检测方面表现出色,在精确率与召回率方面均已接近理想状态。

(1)代表肿瘤(tumors)类别的PR曲线。
(3)右侧注释显示mAP@0.5值为0.987。
表明模型对肿瘤类别展现出良好的检测效果。

由深蓝色粗线标记,
其中第一条曲线代表了各类别总体会计图中的PR曲线。
右侧标注区域显示整体mAP@0.5值达到最高记录值0.990,
即该模型在各类别上的综合检测性能表现最佳。

总结:
该系统在乳腺癌良性和肿瘤检测中的表现优异(总体 mAP@0.5 达到 0.990),其具有良好的分类性能。

分析混淆矩阵(Confusion Matrix)的意义

结论:
模型在乳腺癌X光片检测任务中表现出较好的效果,在肿瘤检测上具有较高的准确性。少数误分类实例主要集中在tumor区域与background区域之间,并且通过优化数据质量和模型结构等手段有望进一步提升检测性能。

4.检测结果识别

模型训练结束后,我们能够获得一份最优的质量训练成果——best.pt文件,并位于runs/train/weights目录中。随后我们能够运用该文件来进行后续的推理检测工作。 imgTest.py 包含图片检测的相关代码。

加载所需库:
(1)from ultralytics import YOLO:导入YOLO模型类用于目标检测任务。
(2)import cv2:导入OpenCV库用于图像处理与显示。

加载预训练模型与图像路径:
(1)path = 'models/best.pt':指定已训练好的模型位置,默认配置用于目标识别任务。
(2)img_path = "TestFiles/imagetest.jpg":明确标注图像文件所在的具体位置。

(1)$model = YOLO(path, task=’detect’):通过指定路径加载YOLO模型,并设置为目标检测任务。
(2)通过 conf 参数设定目标检测的有效置信度阈值,并通过 iou 参数设定非极大值抑制(NMS)算法中交并比(IoU)的有效阈值。

图像检测:
(1)该算法通过模型运行图像路径的结果获取目标检测信息。
其中包含目标检测结果数据

显示检测结果:
(1)将绘制的图像赋值给变量res:通过调用results[0].plot()方法将检测到的结果呈现于图像中。
(2)调用cv2.imshow函数并设置窗口标题为‘YOLOv8 Detection’:通过OpenCV库展示处理后的图像,并指定窗口标题为‘YOLOv8 Detection’以便识别当前界面内容。
(3)等待用户按下任意键以退出程序:使用cv2.waitKey(0)函数实现对用户的按键事件响应,在完成当前操作后等待用户的输入以退出程序流程

执行imgTest.py代码后,会将执行的结果直接标注在图片上,结果如下:

这一段输出依赖于YOLOv8模型对图片'imagetest.jpg'生成结果的具体信息

图像信息:
(1)处理的图像路径为:TestFiles/imagetest.jpg。
(2)图像尺寸为640×640像素。

检测结果:1个”tumor”(肿瘤)

处理速度:
(1)预处理时间: 4.0 毫秒
(2)推理时间: 4.1 毫秒
(3)后处理时间: 61.3 毫秒

该检测任务已顺利完成, 模型在每张图像中仅需较短时间即可完成目标识别(每幅图像平均耗时低于5秒)。其快速推理能力使其成为乳腺癌X光片实时分析的理想选择, 同时所有检测结果均被系统自动保存以便后续分析。

运行效果

– 运行 MainProgram.py

主要功能:
(1)适用于乳腺癌X光片的实际场景应用;
(2)不仅能够对图片和视频进行检测,
还能够通过摄像头设备实施批量检测;
(3)提供实时显示目标位置坐标值,
并能统计目标数量以及给出相应的置信度评分,
同时实时记录所需时间;
(4)不仅能够对图片进行检测记录,
还能够对视频流中的检测结果进行持久存储

2.检测参数设置:

(1)置信度阈值:当前设置为0.25,表示检测系统只会考虑置信度高于25%的目标进行输出,置信度越高表示模型对检测结果的确信度越高。
(2)交并比阈值:当前设置为0.70,表示系统只会认为交并比(IoU)超过70%的检测框为有效结果。交并比是检测框与真实框重叠区域的比值,用于衡量两个框的相似程度,值越高表明重叠程度越高。

两个指标常被采用于目标检测系统中,在调节过程中会对模型的检测精度和误检率产生显著影响

语音提醒(Voice Reminder):
(1)异常语音提醒:(警告:乳腺肿瘤病变,请及时就医!)

这张图表展示了基于YOLOv8模型的目标检测系统的检测结果界面,请详细说明每个字段的具体含义。

(1)该模型完成检测所需时间为0.029秒。
(2)该模型在检测方面具有极快的速度。

目标数目(Number of objects detected):
(1)检测到的目标数量为1,即表示这是当前检测到的第一个目标。

(1)此处提供一个下拉菜单选项,请您选择要查看的目标类型。
(2)目前设置为“全部”,表示将展示系统检测到的所有目标信息。

3.检测结果说明:

这张图表呈现了利用YOLOv8模型实现的目标检测系统的工作界面。以下是对各字段含义的具体说明:

目标选择:
(1)提供选择检测目标的选项,这里显示为全部,说明当前显示的是所有检测到的目标。

结果(Result):“乳腺恶性肿瘤”,表示系统正在高亮显示检测到的“tumor”。

置信度(Confidence):
(1)表明该模型识别出的目标属于乳腺恶性肿瘤类别的信心程度是87.26%。
(2)反映的是模型的自信程度;当置信度越高时,则表明该模型对该检测结果越有信心。

目标位置(Object location):
(1)x最小值为382、y最小值为225:代表该目标区域在图像中的具体位置。
(2)x最大值为497、y最大值为271:代表该目标区域所占据的空间范围。

这些坐标标识在图像中的目标区域位置,确定了检测到的"乳腺恶性肿瘤"的位置。

该图表展示了检测系统的核心数据。它详细列出了被检测的目标类型、相应的置信度以及这些目标在图像中的精确位置坐标。此类界面一般用作展示模型识别的物体及其位置数据,并提供相关的位置信息与置信度评分。

4.图片检测说明
(1)乳腺良性肿瘤

(1)乳腺恶性肿瘤

单击打开"图片预览"按钮,在选定目标后,请选择待检测的图片;或者单击打开文件夹按钮以选择包含多个待检测图片的文件夹位置。
操作步骤如下:
(1)在目标下拉框中选定特定结果信息显示;
(2)单击保存按钮后将执行检测结果存储操作,默认存储至save_data文件夹内。

检测结果:系统进行了识别分析,并输出了详细的结果数据。该过程包含了总目标数、用时等信息,并确定了目标的位置坐标数据。

5.视频检测说明

单击视频按钮后会弹出一个窗口让用户选择要检测的视频文件。系统会立即展示该文件的实时检测结果,并支持用户在任意时刻关闭当前窗口的操作。
单击保存按钮后系统会将当前的检测结果进行存储并提示操作完成状态。其存储位置位于save_data文件夹内。

分析结果:系统实时对视频进行了分析,并识别出乳腺癌X光片并记录了相应的检查结果。统计表列出了视频中多个检测点的相关置信度及位置信息

分析结果:系统实时对视频进行了分析,并识别出乳腺癌X光片并记录了相应的检查结果。统计表列出了视频中多个检测点的相关置信度及位置信息

该界面不仅展示了系统在视频帧中的多目标检测性能,并且能够准确识别乳腺癌X光片,并提供详细的结果和置信度评分

6.摄像头检测说明

按下摄像头按钮能够启动摄像头设备;通过该按钮的操作能够实现持续的检测功能;再次按下按钮则能够从而实现关闭。

检测结果:系统通过摄像头实现了对实时影像的数据处理,并识别出乳腺癌相关影像并反馈检测结果。动态呈现摄像头捕捉的画面内容,并将系统识别出的乳腺癌相关影像位置标记于图像标注区域。记录模块对每帧图像的分析结果进行了详细登记。

7.保存图片与视频检测说明

在点击保存按钮之后,在线系统将自动完成当前所选的所有图像(包括批量处理)以及视频内容的质量检测工作,并将最终生成的结果输出至预设输出路径中指定位置。
所有检测生成的结果图像和视频将被存储在指定的save_data目录中。
这些处理后的数据文件的具体分布情况将在后续操作界面中展示。

(1)图片保存

(2)视频保存

– 运行 train.py
1.训练参数设置

(1)data=data_yaml_path: 遵循data.yaml文件中的数据集配置文件。
(2)epochs=150: 训练周期被指定为150次。
(3)batch=4: 每个批次处理4幅图像(批次大小设定)。
(4)name=’train_v8′: 训练结果会被存储至train_v8目录中。
(5)optimizer=’SGD’: 选择随机梯度下降法(SGD)作为优化算法。

然而,在常见的深度学习任务中,GPUs commonly offer faster training speeds. 在这种情况下,在某些特定场景下(如 hardware limitations, software compatibility issues, or other constraints),用户 may need to perform training on a CPU.

温馨提示:使用CPU进行深度学习模型的训练通常会比在GPU环境下完成任务速度较慢得多。尤其是像YOLOv8这样高度计算密集型的任务,在GPU上的表现更为卓越。除非有特殊需求的情况下,默认建议选择GPU来进行训练以获得更高的效率与更低的时间成本。

2.训练日志结果

这张图展示了使用YOLOv8进行模型训练的详细过程和结果。

(1)在经过150轮的持续训练后所用时间为约十一小时零六分二十四秒。
(2)本次运算采用了NVIDIA GeForce RTX 4070 Ti SUPER卡,并配备十六GB显存容量。
(3)运算表现优异,在Yolo v5模型优化设计的基础上借助高性能硬件完成高效处理。

mAP50和mAP50-95的具体数值如下:
(1)mAP@50 = 99.1%:该数值表明该模型在IoU阈值为0.5时达到了极高的平均精度。
(2)mAP@[47:87] = 89.6%:这一结果表明该模型在IoU范围从47%到87%之间表现出稳定的性能表现。

速度:
(1)0.1ms 预处理时间
(2)0.8ms 推理时间
(3)0.6ms 后处理时间

Result saving: (1)The generated results are stored in runs\detect\train\_v8, indicating that validation results are contained within this directory structure.

完成信息:
(1)整个验证过程以成功退出码0结束:表明整个验证流程顺利完成,并未出现错误。

采用YOLOv8算法进行乳腺癌X光片检测模型的训练,其在精度和召回率方面表现出色(mAP@0.5为0.99、Recall为0.968)。模型推理效率显著提高,并满足实时应用的需求。

全部评论 (0)

还没有任何评论哟~