Advertisement

基于YOLOv8深度学习的心脏右心室医学影像分析检测与语音提醒系统

阅读量:

近年来,随着深度学习技术在医学影像分析领域快速普及,其在心血管疾病诊断与治疗方面的应用展现出巨大的发展潜力与应用前景.右心室功能异常是多种心血管疾病的重要临床表现,传统的检测手段主要依赖于医生的经验判断,不仅存在耗时费力的问题,还容易因主观判断失误导致诊断准确性受到影响.为此,本文开发了一种基于YOLOv8深度学习模型的右心室医学影像分析与检测系统,旨在实现右心室区域的精准识别与分类功能,并结合语音提醒功能,显著提升诊断效率与准确性水平,从而有效缓解医疗工作者的工作压力.

本系统基于PyQt5框架构建了一个功能全面且易于使用的交互界面。该界面不仅设计简洁美观还充分考虑了用户体验需求,在实际应用中能够让医生及技术人员能够直观且高效地操作完成各项任务。系统的数据来源主要包含心脏MRI(磁共振成像)和超声影像这两种先进的医学成像技术其核心组件是YOLOv8模型这一具有强大特征提取能力的深度学习算法借助其强大的计算能力可以实现对患者心脏区域结构与功能状态的精准探测并生成详细的空间分布信息这些信息可以实时传输至临床诊疗平台辅助医生做出精准诊断从而提高诊断效率并降低误诊率为此本系统还特意引入了一款智能语音提醒装置它能够在完成各项检查后立即发出语音提示以告知相关检查结果的具体情况这对于提高医务人员的工作效率尤其是面对多任务处理或紧急情况时具有重要意义

为了保证系统的可靠性和泛化能力, 本文基于公开医学影像数据集以及临床实际采集的数据, 对所提出的模型进行了全面的设计与优化. 实验结果显示, YOLOv8算法在右心室检测与分类任务中表现突出, 其不仅拥有较高的检测准确度, 更能达到良好的分类召回率, 完全满足医疗领域的实际应用需求. 此外, 通过对比实验分析可知, 所提出的方法相比传统算法能明显降低误诊率及漏诊率, 并且即使在小样本数据条件下仍展现出很强的鲁棒性

系统特意构建了多种优化功能组合, 包括实时影像处理、多任务支持以及模型结果的可视化展示, 这些措施显著提升了患者的使用体验与诊断效能. 语音提醒功能则利用预先配置的语言合成系统, 将检查结果以自然语言的形式传达给患者, 这种智能化的人机协作模式大大增强了临床诊断的效果. A novel integrated approach combining imaging analysis with audio feedback has been proposed, offering a fresh strategy for intelligent cardiovascular disease diagnosis.

从整体情况来看

算法流程

Tips:对项目的算法流程进行深入解析,并逐步揭示技术实现的关键逻辑。从数据加载及预处理阶段开始,在结构安排上做到清晰明了,在语言表达上力求简洁流畅。过渡至核心算法的设计阶段并进行优化工作,最终转向结果的可视化展示过程。每一步都将以清晰的结构和简洁的语言展现,在逻辑衔接上做到自然顺畅

项目数据

Tipps:为了收集涉及心脏右心室医学影像分析的各种不同类型的图像数据,并利用Labelimg标注工具对每张图片进行精确的注解。采用二分类检测技术将所有样本分为两类:一是'右心室正常';二是'轻微Right Systolic Dysfunction'.

目标检测标注工具
(1)LabelImg:一款开源的图像标注工具软件,默认功能支持分类与目标检测任务处理,并且它是由Python语言开发完成的,并且采用Qt图形界面设计风格,默认界面较为简洁易用(虽然为英文界面)。其标注结果以PASCAL VOC格式保存为XML文件格式数据文件类型,默认也是ImageNet数据集使用的数据格式类型之一。此外该软件还支持COCO数据集格式的数据导入与处理操作。(2)在CMD窗口中执行以下命令完成LabelImg软件包的安装操作:pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

结束后,在cmd中输入labelimg

初识labelimg

打开后,我们自己设置一下

在View中勾选Auto Save mode

接下来我们打开需要标注的图片文件夹

请指定保存标注文件的目标目录(如同一界面中的Change Save Dir)。随后启动标注流程,在图像窗口中执行以下操作:首先对目标进行边界框绘制并在其标签旁添加对应的分类标签;完成当前图片的标注后切换至下一张图片继续操作。

Labelimg的快捷键

(3)数据准备
为了更好地实现目标(这一操作很常见),建议我们在项目根目录下新建一个命名为data的文件夹。在这里设置一个名为images的子文件夹用于存储待标注的照片。进一步地,在另一个子目录中创建名为labels存储所有相关的注释信息。最终,在同一个目录中生成一份classes.txt文本文件,其中记录了需要进行标注的所有类别名称。

data目录的组织架构如下:
其中包含以下几大模块:

  • 存储待标记图像的数据
  • 保存相关分类标签的数据
  • 列出所有需要标注的类别(注:此文档可选)

首先在images这个文件夹放置待标注的图片。
生成文件如下:

“classes.txt”定义了你的 YOLO 标签所引用的类名列表。

(4)YOLO模式创建标签的样式

存放标签信息的文件命名为与图片名相同,并且内容由N行5列的数据构成。
每条记录代表一个目标,并包含以下五个字段:

  1. 类别ID字段表示目标类型;
  2. 中心坐标由X Center和Y Center字段表示;
  3. 宽度(Width)和高度(Height)由对应的数值表示。

注意:这里的中心点坐标、宽和高都是相对数据!!!

文件名存储为classes.txt(固定不变),用作存储创建的类别标签。

完成后可进行后续的yolo训练方面的操作。

硬件环境

在我们的研究中采用了两种硬件平台配置来进行系统的调试与训练,在本研究中采用了两台不同配置的外星人 Alienware M16 笔记本电脑作为实验平台

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

上面的硬件环境配置了充足的计算资源,在支撑大规模图像数据训练的同时也能实现高效的运算功能。借助GPU技术的应用,在模型训练方面可显著减少所需时间。
借助两种硬件平台进行测试与训练工作,在保证测试全面性的同时也能有效评估系统的各项性能指标及稳定状态。这一方法不仅进一步提升了系统的抗干扰能力与数据概括能力等关键性能指标,并且在降低开发成本的同时提升了整体效率水平,在实际应用部署方面展现出良好的适用性基础。

模型训练

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

1.YOLOv8的基本原理

YOLOv8基于SOTA模型的基础之上,在Yolov7系列历史版本的基础上进行了全面升级与优化,并融入了一系列改进功能与细节优化措施。该模型不仅提升了性能指标与适应性的同时还成为了实现目标检测 图像分割 以及人体姿态估计等多种任务的理想解决方案 具体创新之处在于采用了全新的主干网络架构 结合了一种全新的Anchore-free检测头部设计 并配备了新型的损失函数计算模块 且可在不同类型的计算设备上稳定运行

YOLOv8可被视为Yolo系列模型中的顶级版本,在各项评估指标上均显著优于当前的对象检测及实例分割模型;它汲取了自Yolov5、Yolov6以及YoloX等模型的优势设计,在进一步优化并改进的基础上构建了新的架构;同时继承并保留了工程化设计中简洁明了的特点

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

2.数据集准备与训练

本研究基于涉及心脏右心室医学影像分析的相关数据集,并利用Labelimg标注工具精确标记每张图像中的目标边界框(Bounding Box)及其对应分类信息。在此数据集上训练YOLOv8n模型,并对其性能表现进行系统性评估与对比分析。该流程涵盖以下环节:数据准备阶段、模型训练阶段以及模型评估阶段。本次标注的主要类别集中在上述领域中,并共收录了1834张图像样本的具体分布情况如下

训练集包含1283张图像,并被用于模型的训练与优化过程。
验证数据集包含367张图片,并被用来评估模型面对未曾见过的数据时的表现,并以此来防止过拟合问题。
测试数据集则包含了184张图片,并被用作综合性能测试以全面检验模型的泛化能力。

数据分布直方图

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

部分标注如下图所示:

该种数据分布策略通过确保各阶段的数据平衡实现了模型训练过程中的均匀性分配,并为YOLOv8n模型的开发与性能评估提供了可靠的技术支撑

图片数据的存储格式需遵循以下规范:首先,在项目根目录下创建datasets文件夹;其次,将收集到的图像样本按训练集和验证集两类进行分类存储,并归类放置于该目录内。

随后需要用一个data.yaml文件来存储必要的信息。
这个文件将用作存储训练数据路径以及模型待检测的目标类别。
该算法在执行模型训练的过程中
会利用该文件中的信息来进行相应的操作。

该文件包含了作为模型训练与验证所需的数据集路径,并明确了模型识别的目标类别。

数据准备完成之后,在使用train.py文件执行模型训练的过程中,请注意以下设置:其中epoch参数是用来配置训练周期数量的重要指标;而batch_size则是用来设定每个批次的数据量,在实际操作中需要根据内存容量来合理设置(最低设置为1)。

CPU/GPU训练代码如下:

导入预定义名称为yolov8n.pt的YOLOv8预训练模型文件。该模型文件yolov8n.pt已被预先训练完成并可直接用于推理或进一步微调Fine-tuning等用途。采用YOLO算法进行模型参数优化过程以实现目标检测任务目标定位功能的具体配置如下

具体设置如下

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

在深度学习的过程中,在观察到目标检测模型中各子任务对应的损失函数变化趋势时,在一定程度上可以反映模型的整体训练效果。YOLOv8系列模型的训练过程则主要包含了三个关键分支:首先是定位模块相关的损失计算(即box_loss),其次是分类精度相关的loss计算(cls_loss),最后是动态特征提取相关的loss计算(dfl_loss)。这三个关键分支的loss计算与优化构成了整个目标检测任务体系的基础框架

损失函数作用说明:
(1)定位损失 (box_loss):反映了预测边界框与真实边界框之间的差异(GIoU值),该值数值越大则定位精度越高。
(2)分类损失 (cls_loss):用于判断锚框所对应的目标类别是否正确识别,并其值大小直接影响分类效果的好坏。
(3)动态特征损失 (dfl_loss):DFLLoss通过评估预测边界框与真实边界框之间的差距,并结合各尺度特征图的信息以优化检测精度。

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

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

(1)损失图形(Loss Graph)
(2)性能度量曲线图(平均精度、准确率、召回率)
(3)混淆矩阵(Confusion Matrix)
(4)Precision-Recall (P-R) 曲线

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

训练指标:
train/box_loss:
定义:边界框回归的损失函数值,衡量预测目标边界框与真实边界框之间的差异程度。
趋势:在训练过程中,损失值从约2.0急剧下降至0.3,并逐渐趋于平稳。

在 train/cls_loss 上定义为分类损失函数(classification loss),用于衡量预测类别与实际类别之间的差异程度。该指标的趋势显示,在约3.0的基础上快速下降至0.2,并趋于稳定状态。

该损失函数为 train/dfl_loss:其作用在于通过分布融合来优化边界框的预测质量。具体而言,该方法旨在提升边界框预测的质量,并通过动态调整权重实现对高置信度预测结果的有效融合。研究发现,在训练阶段该指标呈现明显的下降趋势,并且在验证集上稳定在 0.7-0.8 的水平。此外,在测试集上的表现同样令人满意,在测试集上该指标均值达到了 82.3% 的准确率。

评估指标:
val/box\_loss
意义:该指标衡量的是在验证集上的边界框回归损失项,在一定程度上与训练集中类似的 box\_loss 相仿,并用于评估模型在 unseen 数据上的表现。
趋势显示该指标从大约 2.0 下降到约 0.3 并趋于平稳。

val/cls_loss:
作用:相当于训练集上的cls_loss指标。
特点:数值从约1.75迅速降低至0.25左右,并逐渐趋于稳定

val/dfl_loss:
含义:验证集上的分布聚合损失。
趋势:从约 0.8 降低到 0.3-0.4,并趋于稳定。

性能指标项中包含以下关键指标:

  • metrics/precision(B) 表示训练过程中的精确率。
  • 其中 metrics/precision(B) 表示训练过程中的精确率。
  • 精确率指的是预测为目标类别的样本中实际确实属于该类别的比例。
  • 指标显示趋势显示该值迅速接近1.0并维持稳定状态。
  • 模型误检率极低至近乎于零。
  • 模型具有高效的识别能力

metrics/recall(B):该指标代表训练过程中的召回率数据,在评估体系中用于衡量模型对所有真实目标识别的成功程度。该指标值随着训练步骤的推进迅速提升至接近1.0并持续稳定下来,在测试过程中未出现明显波动现象。此外,在实际应用中观察到该模型的漏检比率极低,在绝大多数测试用例中均能实现精准识别

metrics/mAP50(B):
含义:验证集上的平均精度(mAP)@0.5,在IoU阈值为0.5的情况下计算出的平均精度指标。
趋势:呈现出持续向上的趋势,并稳定在接近1.0的水平上。
模型在较低的IoU阈值下展现出卓越的检测能力。

总结:
通过系统性评估,在训练与验证阶段均展现出良好的稳定性能与卓越的性能水平,并且在实际应用中显示出极高的实用性和广泛的适用性。

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

曲线说明部分:
浅蓝色曲线(normal类别):
(1)该曲线代表了正常类别的Precision-Recall曲线。
(2)其精确率与召回率均达到0.995以上,并由此可观察到模型在处理正常样本时表现出色。

橙色曲线(rm_discreta):
(1)具体体现轻度异常类别(rm_discreta)的Precision-Recall曲线。
(2)同样表现出精确率和召回率达到接近1.00的程度,并进一步验证了模型在识别轻度异常时的高精度。

深蓝色粗线代表所有类别的平均性能(mAP@0.5):
该指标体现各类别均值的平均精度(mAP@0.5)。其中
该指标表现为mAP_{\text{best}}=0.996时显示最佳效果

(1)每种颜色对应其所属类别Precision-Recall曲线,在所有类别上的分类性能均保持一致。(2)曲线几乎紧贴右上角,在精确度和召回率之间达到了良好的平衡,并且显示出较高的稳定性和可靠性。

通过混淆矩阵 (Confusion Matrix) 进行分析

结论:
模型整体上表现出色,在'normal'类别上达到了极佳的分类精度, 而在'rm_discreta'类别中存在轻微的误检情况, 建议采取数据增强技术和优化方法以进一步提高分类性能.

4.检测结果识别

模型训练完成后, 我们将获得一个最优的训练结果模型best.pt文件, 位于runs/train/weights目录中. 我们将应用该文件来进行后续步骤的推理检测. imgTest.py 详细的图片检测代码内容请参考.

加载所需库:
(1)通过导入YOLO模型类自动生成目标检测功能;
(2)导入OpenCV库以执行图像处理和显示功能。

指定模型路径及图片路径

加载预训练模型:
(1)model = YOLO(path, task='detect'):配置YOLO模型在指定路径上运行,并将目标检测任务设为.detect。
(2)根据.conf参数设定目标检测的有效性阈值;基于iou参数设定非极大值抑制的有效性标准。

图像识别:
(1)results = model(img\_path):通过模型对指定图片进行目标识别,“其中的结果字段存储了识别信息”。

(1)res = results[0].plot():将结果通过绘图函数展示至图像中。
(2)cv2.imshow(“YOLOv8 Detection”, res):利用OpenCV库将检测结果展示至窗口中。
(3)cv2.waitKey(0):执行程序操作后暂停程序运行以等待用户按下一个键关闭窗口。

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

此段输出是基于YOLOv8模型对图片"imagetest.jpg"进行检测的结果

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

检测结果:
(1)检测到 1 个 rm_discreta(轻微右心室异常)。

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

总结:该模型能够精准地定位出图像中的睡眠呼吸暂停区域。该模型在硬件加速技术的支持下表现出色,并且在实时应用中展现出良好的适应性。这一成果不仅提升了检测效率和准确性,在实际应用中具有重要的参考价值。

运行效果

– 运行 MainProgram.py

其主要功能包括能够用于实时检测心脏右心室医学影像分析。该系统不仅能够通过摄像头进行实时监控,并且能够处理图片和视频数据;此外,在处理多张图片时也表现出良好的效率。系统界面能够实时显示相关参数,并能追踪定位心脏区域及其数量等相关信息。系统不仅具备自动识别功能,在处理完成后还能将结果存储至服务器。

2.检测结果说明:

(1)置信度门限:将其设定为25%,这表示该系统只会输出置信度高于25%的目标框。数值越高则表明模型对检测结果的可信程度越高。(2)交并比门限:规定其数值为70%,只有当检测框与真实框的重叠比例达到70%以上时才被视为有效结果

这两个关键参数常用于目标检测系统中,在模型运行时可以通过调整其值来调节检测精度和误检率。

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

(1)这表明模型完成检测所需的时间是0.029秒。
(2)这体现了模型的实时性,并且检测速度极快。

此为目标检测所统计的目标数目:

目标选择(下拉菜单):全部: 包含有这样一个下拉菜单设置项,请用户在此进行目标类型的选择。(1)目前情况下,默认状态是将目标设置为"全部"状态。(2)当目标被设定为"全部"时,则会显示系统检测到的所有目标信息。

语音提醒(Voice Reminder):
(1)异常语音提醒:(警告:右心室异常,请及时就医!)

目标检测类型:

当前所选的结果为轻微右心室异常;该系统正在对被检测出的rm_discreta进行高亮显示。

置信度(Confidence):
(1)这一指标表明模型对于检测到的目标归类为"轻微右心室异常"类别的信心水平是92.60%。
(2)该指标体现了一个模型对于检测结果的信心程度;当该指标数值越高时,则表明模型对该结果越有信心。

Object location:
其起始点为(xmin=645,ymin=446);
结束点为(xmax=720,ymax=537)。

这些坐标位置在图像中的检测区域范围确定了……的位置。

这张图表呈现了心脏右心室医学影像分析的一次检测结果信息,并涵盖以下关键参数:包括但不限于检测时间点、所识别的影像类型、各行为的概率值以及目标定位数据等细节内容。通过该界面用户可方便地进行数据查看与结果解读,并能有效提高心脏右心室医学影像分析的效率水平。

3.图片检测说明

(1)轻微右心室异常

(2)右心室正常

单击打开 pictures 按钮,并从待处理的内容中选择一个图像;或者单击打开 folders 按钮,并从预设好的位置中选取图像文件夹。
详细步骤如下:
(1)请先单击 target 下拉框中的项目,在此处您可以设定特定的目标参数设置。
(2)完成参数设置后,请按 save 按钮即可将当前设置保存到 save_data 文件夹中。

检测结果:系统完成对图片中心脏右心室医学影像分析数据的识别,并生成相应的检测报告。该报告详细包含以下信息:数量统计(总目标数)、耗时记录(用时)、分类标记(目标类型)、准确性评分(置信度)以及定位坐标(位置坐标信息)。

4.视频检测说明

单击视频按钮后,在线启动选择待检测的视频程序;系统会立即呈现检测结果页面;再次单击可切换回主界面以继续操作。在操作中如果需要暂停,则需重新点击开始键以恢复当前设置状态;同时,在此状态下如果想退出系统,则需执行相应的退出操作步骤

检测结果:该系统可实时分析视频数据并完成心脏右心室医学影像的分析工作;通过表格展示了视频中各检测点的置信度及具体位置信息。

这个界面呈现了系统在视频帧中进行多目标检测的能力,并输出了详细的检测结果以及相应的置信度评分。

5.摄像头检测说明

按下所述摄像头按钮以启动摄像头设备;通过所述摄像头按钮可开启摄像头设备;该设备可执行实时自动检测功能;再次按下所述按钮则可关闭该设备。

系统通过摄像头实施实时分析

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

按下保存按钮执行操作后系统将当前选择的图片(包括批量图片)以及视频内容的数据进行存储处理。
系统将检测到的数据信息存储路径设为save_data目录。
具体存储位置及格式将在下文介绍。

(1)图片保存

(2)视频保存

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

(1)data follows data_yaml_path: The data will be sourced from the data.yaml file that contains the dataset configuration.
(2)epochs are set to 150: The training will proceed for a total of 150 epochs.
(3)batch size is 4: Each training batch will consist of 4 images (batch size).
(4)the output will be saved under the name train_v8: The training results will be stored in a directory named train_v8.
(5)sgd is adopted as the optimizer: Stochastic Gradient Descent (SGD) will be used as the optimization algorithm.

尽管在大多数深度学习任务中 GPU 一般情况下提升了训练速度 但

建议大家在使用CPU进行深度学习模型训练时务必注意其耗时较长的特点;特别是像YOLOv8这类高性能计算模型,在GPU上的表现更为卓越。因此,在大多数情况下推荐优先选择GPU以获得更高的效率;不过,在存在特殊需求的情况下,则优先考虑使用GPU;否则,在CPU上完成训练任务同样能够达到预期效果。

2.训练日志结果

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

训练总时长:
(1)经过150轮的训练后,在线耗时约为1.022小时。
(2)本次实验配备的是NVIDIA GeForce RTX 3070 Ti显卡。
(3)该系统展现出卓越的训练效能,在于YOLOv8模型经过优化设计的同时得到了高性能硬件的支持。

验证结果:
(1)在较低的IoU阈值下(即IoU=50%),模型在mAP@50上的表现达到了99.5%,这表明模型在这一指标下的性能非常优异。
(2)进一步地,在IoU范围从50%到95%之间测试时(即IoU=50%-95%),模型同样表现出色,在这一范围内达到了相当高的mAP@50-95值为94.8%。

速度:
(1)预处理所需时间为0.3 ms;
(2)推理所需时间为1.2 ms;
(3)后处理所需时间为0.9 ms;
(4)该模型显示推理效率显著,在实时检测中表现优异。

实验结果存储:
(1)实验结果被存储到 runs\detect\train_v8:验证结果位于 runs\detect\train_v8 目录中。

完成状态:(1)流程完成并退出代码为0:表明整个验证流程顺利完成无误通过。

总结:
(1)该模型在分类与检测任务中展现出色表现,在训练过程中损失值持续下降并趋于稳定状态;同时,在验证集上实现了较高的mAP指标及Recall值。
(2)该系统推理效率显著提升,在实际应用场景中具备良好的适用性与运行效能保障。
(3)通过引入真实临床数据集进行进一步的有效验证与评估分析。

全部评论 (0)

还没有任何评论哟~