Advertisement

基于YOLOv8深度学习的医学影像肺炎自动诊断及语音提示系统

阅读量:

本文利用YOLOv8深度学习算法开发了一种医学影像肺炎自动诊断及语音提示系统

在数据集中,本研究采用了公共胸部X射线图像数据集进行模型训练,并借助数据增强技术和迁移学习方法对模型性能进行了提升。实验结果显示,在细菌性肺炎、病毒性肺炎以及正常状态分类任务中,该系统不仅提升了准确率和抗干扰能力,并且展现出良好的临床应用前景。

该系统实现了对肺炎早期诊断和健康监测的智能化支持,并有助于医生获得有效的辅助决策支持,在提高临床诊断效率与准确性方面发挥了积极作用

算法流程

Tipps:深入分析项目的算法流程并系统探讨其技术实现的核心逻辑;从数据加载和预处理阶段入手至核心算法的设计阶段及优化过程,并直至结果的可视化展示;通过清晰的结构与简洁的语言逐步揭示技术背后的原理以及实现思路与创新点

硬件环境

我们采用了两种硬件架构设计用于系统测试与训练过程:
(1)基于Alienware M16设计的笔记本电脑:

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

当前所使用的硬件配置具备充足的计算能力,并能支持对大规模图像数据进行训练以及高效的运算。通过引入GPU设备可以显著减少模型训练所需的时间。
通过在两种不同的硬件平台上进行调试与测试可以更全面地验证系统的性能、适应性及稳定性。该方法不仅有效提升了系统在不同环境下的稳定性和广泛的适用性同时降低了开发成本并提高了运行效率使得系统部署到实际应用环境中更加顺利且可靠。

模型训练

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

1.YOLOv8的基本原理

YOLOv8属于当前最先进的目标检测框架(SOTA),它是基于经典Yolov4框架的延续,在此基础上新增了优化算法和改进架构。经过多方面的优化后,该系统能够有效地支持目标检测、图像分割以及人体姿态估计等多种应用场景。主要创新包括:1)引入了一种全新的主干网络结构;2)采用了全新的Anchore-free检测头部设计;3)优化了损失函数形式,并可在不同类型的硬件平台上稳定运行。

作为该系列的最新版本,在对基础架构进行全面优化的基础上实现了技术创新,并且作为该系列的最新版本,在多个关键性能指标上实现了显著超越的同时,在多个关键性能指标上实现了显著超越的同时

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

2.数据集准备与训练

本研究采用了包含肺炎相关影像的数据集,并利用Labelimg工具标记了每张图片中的目标边界框及其分类。在此基础上,我们选择YOLOv8n模型进行训练。经过全面训练后,我们对模型在验证集上的性能进行了详细评估和对比分析。整个流程涵盖三个主要阶段:数据准备、模型训练以及性能评估。此次标注的主要关注点集中在肺炎类别上。所涉数据共计29126张图片,具体分布如下:

训练样本库:约1907组图像,在模型学习与参数优化过程中发挥重要作用。
验证样本库:约545组图像,则主要用于检验模型对新数据的适应能力,并防止过拟合的问题发生。
测试样本库:约273组图像,则专门用于评估模型在实际未知数据下的表现水平

数据集中的分布直方图
该图表呈现了训练集合、验证集合以及测试集合中的样本数量分布情况。

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

部分标注如下图所示:

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

在项目目录中创建一个datasets子目录,并按照规定存储图片数据的格式:将检测到的所有图片分为训练集与验证集,并将其放置于该子目录下

在继续操作之前,请创建一个新的data.yaml文件,在这个文档中记录下你所需的训练数据路径以及需被检测的对象类别。YOLOv8系统在执行模型训练的过程中能够获取该文档中的相关信息,并利用这些信息来进行模型的训练与验证工作。

这个文件说明了在模型训练与验证过程中所使用的数据集存储路径以及目标识别类别。

数据准备完成之后, 我们可以通过运行 train.py 文件来进行模型训练. 其中, epochs 参数用于调节训练周期的数量, batch 参数则用来设定每个批量处理的数据量, 并根据内存容量来决定最小值(最低设置为 1).

CPU/GPU训练代码如下:

请加载预训练好的YOLOv8模型文件yolov8n.pt,在进行模型训练时,请注意以下主要参数设置:
(1)数据集配置文件由data_yaml_path指定;
(2)设定总共有150个训练周期;
(3)每批处理4个样本;
(4)采用SGD优化算法进行参数更新;
(7)此次实验命名为train_v8以区分不同实验

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

通过深入研究深度学习的过程与机制,在分析模型训练效果时

损失函数作用说明:
(1)定位损失 (box_loss):用于衡量预测框与标定框之间的GIoU误差程度。
(2)分类损失 (cls_loss):用于衡量锚框与对应的标定分类是否正确。
(3)动态特征损失 (dfl_loss):DFLLoss用于回归预测框与目标框之间的距离,并结合特征图尺度进行调整。

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

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

(1)损失变化曲线图(Curve of Loss Evolution)
(2)评估指标曲线图(mAP、精确度与召回率)
(3)混淆矩阵表(Confusion Matrix Table)
(4)Precision-Recall 曲线(Precision-Recall Curve, PR 曲线)

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

评估指标:

含义:该指标代表分类任务中的损失值,在衡量模型预测结果与真实标签之间的差异程度上具有重要意义。
趋势:从曲线走势来看,在测试集上的性能表现持续改进趋势。

train/dfl_loss:Distribution Focal Loss用于优化边界框的预测分布。随着训练进程的推进,该损失值持续下降表明模型在特征学习方面表现越来越好。

评估指标为:

val/cls_loss:
意义:验证集上的分类损失指标与训练阶段的 cls_loss 类似。
变化趋势:整体呈逐步下降的趋势表明该模型在分类任务中的表现已在验证集中持续提升。

该变量val/dfl_loss定义为验证集上的分布聚合损失。
变化情况表明,在训练过程中该变量的值逐渐下降。

性能指标:
metrics/precision(B):
Meaning: Accuracy rate of the training process, indicating the proportion of samples predicted as the target class that were actually labeled as such.
Trend: The accuracy rate is rising progressively with training, demonstrating an improvement in the model's predictive performance.

Recall metric for B

metrics/mAP50(B):
含义:验证集上的 mAP@0.5,表示 IoU 阈值为 0.5 时的平均精度。
趋势:随着训练的进行,mAP值逐步提升,表明模型的整体检测能力增强。

metrics/mAP^{(B)}
含义:
该指标代表验证集上mAP值在[0.5, 0.95]区间内的计算结果,
反映多个IoU阈值下模型的平均识别精度。
表现:
经过持续训练后,
mAP_{\text{best}}^{(B)}逐渐提升,
表明该模型在各个IoU阈值下都能保持较好的检测水平。

通过这些图表可以看出,在模型的训练与验证过程中损失值呈现出逐步下降的趋势,并且在这一过程中精度、召回率以及mAP等多个关键指标均实现了稳步上升的状态。这表明模型的整体性能得到了显著的优化与提升。

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

曲线说明:
蓝色曲线:
代表细菌性肺炎(Pneumonia Bacteria),其mAP值为0.961。

橙色曲线:
代表病毒性肺炎(Pneumonia Virus),其mAP值为0.961。

绿色曲线:
代表健康(healthy),其mAP值为0.995。

蓝色粗线:
代表所有类别的综合mAP值,为0.972(mAP@0.5)。

模型在其在正常运转状态下表现最为出色;而细菌性和病毒性肺炎的检查效果与其检出能力相当。

该方法(Confusion Matrix)用于评估分类模型性能

结论:本研究开发出的模型在肺炎类型识别方面表现优异,在对大量医学图像进行分析后发现其准确率高达95%以上。然而尽管如此,在区分细菌性肺炎与病毒性肺炎方面仍存在一定局限性。

4.检测结果识别

模型训练完成后, 我们可以获取一个最优的训练结果模型best.pt文件, 位于runs/train/weights目录中. 该文件可用于后续推理检测.

(1)该模型类将通过from ultralytics导入的方式引入,并可用于执行目标检测任务。
(2)OpenCV库将通过import cv2的方式被引入,并可用于图像处理和显示功能。

(1)配置路径为‘models/best.pt’:将训练好的模型配置为目标识别任务。
(2)设置图像文件路径为‘TestFiles/imagetest.jpg’:为目标识别提供测试图像。

加载预训练模型:
(1)model = YOLO(path, task='detect'):通过指定路径加载YOLO模型,并将检测任务设为目标检测 (detect)。
(2)通过 conf 参数配置目标检测的置信度阈值,并通过 iou 参数设定非极大值抑制(NMS)的交并比(IoU)阈值。

检测图片:
(1)results = model(img\_path):对该图像进行目标识别操作,并使其中的结果字段存储了相关的信息。

呈现检测结果:
(1)res = results[0].plot():将检测到的结果绘制于图片上。
(2)cv2.imshow(“YOLOv8 Detection”, res):通过OpenCV技术显示检测后的图像,并设置窗口标题为'YOLOv8 Detection'。
(3)cv2.waitKey(0):等待用户按下任意键以关闭显示的窗口

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

此段输出基于YOLOv8模型对图片'imagetest.jpg'执行了检测操作,并详细信息将在此处呈现

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

检测结果:
(1)检测到图像属于 “Pneumonia Bacteria” 类别(细菌性肺炎)

处理速度:
(1)预处理时间: 7.0 毫秒
(2)推理时间: 4.5 毫秒
(3)后处理时间: 63.8 毫秒

总结:
该模型能够准确鉴别出细菌性肺炎于其他类型的肺炎,并且具有高效的推理机制。该系统便于实现快速诊断并具备潜在的实际应用价值。

运行效果

– 运行 MainProgram.py

1.主要功能:
(1)适用于肺炎感染在实际场景中的检测;
(2)不仅能够通过摄像头实时监控并识别感染区域和数量,并且能够对多张图片同时进行处理;
(3)该系统界面实时呈现目标位置坐标、总数统计以及每项指标的具体数值和所需时间;
(4)能够将检测结果的数据信息存储至本地存储设备中

2.检测参数设置:

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

这两个参数常用于目标检测系统中,在调节后能够优化模型的准确性和误报率。

语音提醒(Voice Reminder):
(1)异常语音提醒:(警告:肺部有炎症,请及时就医!)

此图展示了采用YOLOv8模型的目标检测系统及其检测结果界面的呈现。下文将详细阐述各字段的具体含义。

(1)这表明模型完成检测所需的时间仅为零点零五二秒。
(2)该模型在零点零五二秒内即可完成一次检测任务,并且展现了极高的实时性与快速检测能力。

物体被检测的数量即为Number of objects detected. 在该过程下, 检测到的目标数量为1, 即表示这是当前被检测到的第一个目标.

(1)此处提供一个选择项列表,请用户挑选所需的目标类型。
(2)在此情况下,默认设置为"全部"模式, 将呈现全部检测结果。

3.检测结果说明:

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

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

Outcome: Respiratory Viral Pneumonia signifies the system is currently highlighting the detected Pneumonia Virus.

置信度(Confidence):
(1)该值表明,在模型识别出某目标并将其归类为"新型冠状病毒肺炎"类别时其置信度达到了99.22%的高水准。
(2)其反映的是模型对预测结果的信任程度随着置信度数值越大表明模型对该预测结果的信任程度越高。

目标定位(Target positioning):
(1)起始点坐标为xmin,ymin:表示目标区域在图像平面中的起始点。
(2)结束点坐标为xmax,ymax:表示目标区域的结束边缘。

这些坐标数据在图像中所指定的目标区域范围内确定了被识别出的'病毒性肺炎'的位置。

该界面展示了检测系统的关键数据及其性能指标

3.图片检测说明

(1)肺部健康

(2)病毒性肺炎

(3)细菌性肺炎

操作演示如下:
(1)选择目标下拉框时,在界面上方会出现一个弹出窗口,默认状态下已开启该功能界面。
(2)单击保存按钮后系统会将当前检测结果存入本地数据库中,并将其存储路径位于save_data文件夹内

检测结果:系统识别出图片中的肺炎情况,并呈现检测信息,包含总目标数、用时、目标类型、置信度以及位置坐标信息。

4.视频检测说明

单击视频按钮后会启动程序流程图的选择界面,请您根据需要选择要检测的视频文件;系统会立刻显示检测结果;如果您希望关闭该界面,则只需再次单击返回按钮即可。
单击保存按钮后系统会执行保存操作;具体的存储位置在save_data目录下。

检测结果:系统对视频进行实时监控,并识别出新冠肺炎相关情况及其实时变化数据。通过表格形式详细记录了各检测点的风险评估等级以及具体位置数据

该界面清晰地展示了系统在视频帧中的多目标检测性能,并且能够精准识别出肺炎情况以及提供详细的检测结果和置信度评分。

5.摄像头检测说明

通过点击摄像头按钮启动摄像头功能。启动后能够进行实时检测。再次点击按钮则会关闭摄像头。

检测结果:系统建立与摄像头的通信连接以实现持续监控,并识别出异常体征后立即触发报警流程以输出分析报告。数据采集模块持续更新监控画面并标记行为轨迹位置以便后续追踪研究。数据记录模块为每帧图像生成详细的分析数据供医护人员参考使用

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

当按下保存按钮时,系统会将所选内容,包括批量处理的照片和视频检测结果,成功地被保存下来.这些被检测到的照片和视频文件会被系统自动地存储在指定位置.具体而言,所有的检测结果文件将会以清晰明了的方式展示出来.

(1)图片保存

(2)视频保存

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

导入名为yolov8n.pt的预训练YOLOv8模型,并将该文件标记为预先训练好的模型文件。采用YOLO模型进行训练,并详细说明了主要参数设置。以下是对主要参数的具体说明:

尽管在大多数深度学习任务中 GPU 通常会显著提升训练效率 但在一些特定情况下 用户可能会因受到硬件限制或其他因素的影响而选择在 CPU 上进行训练

温馨提示:在大多数情况下,在CPU上训练深度学习模型所需的时间远超其在GPU上的表现。特别地,在处理像YOLOv8这样的计算密集型任务时会体现出这一特点。仅当有特殊需求时才建议采用CPU进行训练;否则,则推荐选择GPU以提高效率。

2.训练日志结果

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

(1)经过150轮的持续训练后, 模型所用时间为约0.886小时。
(2)本次训练基于NVIDIA GeForce RTX 4070 Ti SUPER显卡进行。
(3)该模型展现出卓越的训练效率, 其归功于YOLOv8优化设计与高性能硬件的有效支持。

验证结果:
(1)mAP50: 97.2%
(2)mAP50-95: 97.2%

速度:
(1)预处理所需时间为0.1毫秒
(2)推理所需时间为0.9毫秒
(3)后处理所需时间为0.6毫秒
(4)该模型具有较高的推理效率,并且适用于实时检测任务。

验证数据被保存至runs\detect\train_v8:验证数据在runs\detect\train_v8目录中被保存

Process finished with exit code 0表明整个验证过程顺利完成无错误信息生成

综上所述:YOLOv8模型在本任务中表现优异,并且在检测精度方面表现突出;不仅如此,在运行速度上也具备显著优势;特别适合应用于需要实时处理的任务场景中。

全部评论 (0)

还没有任何评论哟~