Advertisement

基于YOLOv8深度学习的医学影像老年痴呆症检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)

阅读量:

本研究利用深度学习技术开发了一种专注于老年痴呆症检测与诊断的医学影像分析系统。该系统致力于通过分析患者的头颅CT扫描数据及其解剖学特征来实现对老年痴呆症的早期识别与分类。为了保证系统的准确性和可靠性性,在研究过程中采用了先进的卷积神经网络(CNN)模型作为核心算法。基于来自大量高质量标注数据集的训练与测试, 该系统不仅达到了较高的诊断准确率, 而且能够有效地提取并分类老年痴呆症患者的头颅CT特征信息。

在数据集选择阶段, 研究采用了公开获取的脑部影像数据集. 这些数据集涵盖了正常人群和老年痴呆症患者的大规模MRI(磁共振成像) 数据. 研究对这些 数据实施了 预处理步骤, 包括去噪 处理、图像标准化等 预处理 步骤, 以确保训练过程中的 数据一致性和有效性. 卷积神经网络基于多层特征提取架构, 通过卷积层、池化层以及全连接层 的 组合结构, 对 MRI 影像中与老年痴呆症相关的特征 进行学习 和分类, 最终 实现了 对 不同阶段疾病 的 自动诊断功能.

从技术角度来看, 该系统主要依托于深度学习模型的强大性能, 同时非常注重用户体验. 为了使医疗专业人员能在临床实践中更加便捷地应用相关技术, 系统采用基于PyQt5平台构建了图形用户界面(GUI). 该界面直观且易于操作, 不仅能方便地获取患者的颅部影像数据, 还可通过点击按钮即可完成图像分析及模型推断等操作, 最终生成详细完整的诊断报告. 通过这一界面, 医疗专业人员可实时查看影像分类结果, 并从中提取有用的数据图表及专业的诊断意见. 此外支持对影像数据进行批量处理, 在提高诊断效率的同时减少了人工干预的工作强度.

本文详细阐述了该系统的整体设计理念、核心技术算法体系以及卷积神经网络结构的具体构建过程,并对实验数据进行了深入解析与多维度评估分析。通过实验数据分析显示,在各性能指标上均取得了令人满意的实验效果:一方面显著提升了系统的诊断准确性水平;另一方面实现了良好的时间效率与使用便捷性的平衡统一;同时文章还重点探讨了未来的技术发展路径与应用拓展方向:主要包括针对模型性能进一步优化升级的技术创新研究;构建更大规模的数据集以增强系统的泛化能力;以及探索将该技术方案应用于更多临床医学领域的可能性研究工作等多方面内容:通过一系列针对性的技术改进措施与创新应用策略:最终期望使本系统能够切实实现为老年痴呆症病症实现早期精准识别与及时干预的目标:从而为推动深度学习技术在医疗健康领域的智能化应用与发展作出积极贡献。

算法流程

项目数据

利用数据集收集各类老年痴呆症相关图像,并借助Labelimg标注工具完成每张图片的注释工作。该过程将分为四个检测类别:SevereDistent、VeryMildDeinstein、MildDeinstein以及NonDeinstein(其中ModerateDeinstein作为中间阶段)

目标检测标注工具
(1)LabelImg: 一款开源的图像标注工具,默认支持分类任务和目标检测功能。该工具采用Python编写,并基于Qt构建图形界面设计,默认为英文界面操作较为便捷但需要注意的是其操作界面略显复杂(建议从官方文档学习)。LabelImg注释结果采用PASCAL VOC格式存储为XML文件这一格式同样适用于ImageNet数据集的使用流程此外该工具也支持COCO数据集格式的操作流程
(2)安装LabelImg 在Windows系统中可以通过以下命令在cmd窗口执行 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 安装完成后重启电脑即可完成安装过程

结束后,在cmd中输入labelimg

初识labelimg

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

在View中勾选Auto Save mode

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

并配置存储该图标的路径(如上所述)。开始执行标注流程:选择边界框工具,并为选定的目标添加标签。完成后,请切换至下一张图片继续标注。

Labelimg的快捷键

(3)数据准备
建议创建一个名为data的文件夹(这一做法并非唯一),其中包含一个名为images的文件夹用于存储待标注图片;同时设置另一个名为labels的文件夹以存放对应的标注信息;最后在data根目录下新增一个命名为classes.txt的文本文件来记录需要分类的所有类别名称。

项目的目录架构如下:
├── image_data ──── 用于存放待标注图片集
├── images ──────── 位于该目录下的待标记图像集合
├── labels ──────── 对应于上述图片集的标签列表
└── classes.txt ───── 用于定义所有需要标注的类别(虽然该文件并非必要存在)

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

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

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

用于存储标签信息的文件名与图片名称一致,并包含N行且每行5个数据。其中每条记录代表一个待标记的目标物体,并从左至右依次为:类ID(C)表示被标记的目标类型;Xc和Yc分别表示标注框在图像中的中心点位置;W和H分别表示标注框在图像中的宽度和高度比例。

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

所有用来存储标签类别的文件都以classes.txt为名称(固定不变),并用于存储生成的标签类别

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

模型训练

模型的训练、评估与推理

1.YOLOv8的基本原理

YOLOv8是一款处于行业领先水平(SOTA)的物体检测模型,并非首次发布即完善之作。它是在Yolov7等历史版本的基础上进行优化与改进,并结合了最新的技术与算法,在提升检测速度的同时也实现了更高的精度水平。该模型可被认为是实现多种目标检测、图像分割及人体姿态估计任务的理想方案。其主要创新点体现在三个方面:一是采用了全新的主干网络架构;二是设计了一种更加高效的检测头部结构;三是引入了一种改进型的目标损失函数,在提升分类精度的同时也增强了对复杂场景的适应能力。这些改进措施均能在多类硬件设备上稳定运行并提供良好的性能表现

YOLOv8以其卓越的表现成为Yolo系列中的领军者,在多个关键指标方面显著超越当前的对象检测和实例分割技术。基于对Yolov5架构的全面优化,在提升其基础结构的同时,并保持了工程化设计中简洁高效的特点。

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

2.数据集准备与训练

本研究采用了涵盖多种老年痴呆症相关图像的数据集,并借助Labelimg标注工具对每张图像中的目标边界框(Bounding Box)及其类别进行了精确标注。随后主要基于YOLOv8n模型构建了训练框架,在完成模型训练后对验证集的表现进行了全面分析和对比研究。整个模型开发流程包括:数据准备、模型构建与训练、性能评估三个阶段。具体而言,在本次研究中所涉及的目标分类仅限于老年痴呆症这一类别,在数据集中共有3288张图片参与其中,其中用于训练的数据占2572张,在验证集中选取了716张图片进行测试分析。如图所示的部分图片展示了典型的老年痴呆症相关图像样本

部分标注如下图所示:

图片数据的具体存储格式如下:首先,在项目根目录中创建一个名为datasets的目录,并将所有检测到的图像按照训练集和验证集进行分类,并存放在datasets目录内。

接下来需要创建一个新的data.yaml文件。该文件将用于存储训练数据路径以及模型检测所需类别信息的文档。YOLOv8在执行模型训练过程中会解析该文件中的相关信息。

训练数据集:存储位置 E:\Alzheimer's Disease Objective V8\datasets\train\images
验证数据集:存储位置 E:\Alzheimer's Disease Objective V8\datasets\val\images

测试数据集:存储位置 E:\Alzheimer's Disease Objective V8\datasets\test\images

number of categories: nc has a value of 5, indicating there are five distinct categories in the model detection. names is an array containing five specific category labels: "Severe Dementia," "Very Mild Dementia," "Mild Dementia," "Non Dementia," and "Moderate Dementia."

这个文档确定了用于模型训练和验证的数据集路径,并且指定了模型将要检测的目标类别。

在完成数据准备后, 为了使模型能够开始学习, 我们需要调用train.py文件来进行模型训练。其中, epochs参数的作用是决定每个周期的迭代次数, 而batch参数则负责决定每次处理多少样本。需要注意的是, batch大小会根据内存容量来确定, 并且最低设置为1

CPU/GPU训练代码如下:

加载预训练YOLOv8模型文件yolov8n.pt该文件用于存储预先训练完成的YOLOv8模型文件yolov8n.pt。在进行模型参数配置时:(1)数据集配置由data_yaml_path指定;(2)总训练周期设定为150个完成周期;(3)每个批次样本规模设置为4;(4)优化器采用了SGD算法;(7)命名标识符为'train_v8'

3.训练结果评估

在深度学习过程中,我们通常观察损失函数的变化趋势来评估模型的训练效果。对于YOLOv8模型而言,其训练过程主要包含三个关键组件:位置损失(box_loss)、分类损失(cls_loss)以及方向特征损失(dfl_loss)。完成训练后,在runs/目录中会生成完整的日志记录和相关结果文件

各损失函数作用说明:
定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;
分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
动态特征损失(dfl_loss):DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。这个过程是YOLOv8训练流程中的一部分,通过计算DFLLoss可以更准确地调整预测框的位置,提高目标检测的准确性。

训练结果如下:

这张图详细呈现了YOLOv8模型在训练与验证过程中所涉及的关键性能数据动态变化情况

(1)这是训练过程中边界框损失的动态变化过程。该指标用于评估模型预测的目标框与真实目标框之间的差异程度。
(2)随着训练步骤的推进,边界框损失指标持续下降表明模型在定位物体时的准确性不断增强。
(3)通过观察损失曲线的变化趋势可以看出模型正在逐步提升对物体边缘检测的能力。
(4)这一阶段的学习曲线显示模型在边界检测任务上的优化效果显著

train/cls_loss:
(1)该损失基于训练数据集计算得出。通过分类损失评估模型识别目标类别的准确性。
(2)该指标反映了模型识别物体时的平均误差程度。随着该值下降,模型识别物体的能力显著增强。

train/dfl_loss
(1)该损失函数旨在指导模型实现更为精准的目标框定位。
(2)该方法的主要作用在于提升定位精度,在实验结果中持续向好趋势表明其有效性。

metrics/precision(B):
(1)该曲线显示,在training set上计算得到的precision值。
(2)该模型在false alarm rate方面表现出色。其准确率达到97%以上。

metrics/recall(B):
(1)这是基于训练集绘制的召回率曲线图。该曲线展示了模型在不同阈值下的真实目标检测比例。
(2)随着训练过程的深入发展,在该曲线上可观察到召回率逐渐提升的现象。

val/box_loss:
(1)此图展示了验证集上的边界框损失曲线。
(2)随着逐步推进验证过程……此模型能够有效预测物体位置。

val/cls_loss:
(1)该指标反映了在验证集上的分类损失曲线。
(2)当损失值下降时,则意味着模型在验证集上的分类性能显著提高。

1

metrics/mAP50(B):
(1)该指标反映了验证集上的mAP@0.5曲线表现,在交并比(IoU)阈值设置为0.5时衡量模型平均精度(mean Average Precision)。
(2)在持续训练过程中,mAP值持续上升表明模型在物体检测任务中的检测精度不断提升。

metrics/mAP50-95(B):
(1)该指标是在验证集上计算得出的mAP 50%-95%的表现曲线,在多个交并比范围(包括从0.5至0.95)下评估模型平均精度的表现特征。(2)该指标反映了模型在综合检测任务中的整体性能水平。通过观察数值的变化趋势可以看出,在各个交并比阈值下该模型的整体表现均呈现持续上升趋势。

该图表详细呈现了模型在各个训练阶段的训练与验证性能数据,并通过分析得出结论:模型训练过程取得了令人满意的进展,在独立测试集上的表现同样可圈可点。

这张图呈现了Precision-Recall曲线,并用于评估模型在不同类别下的分类性能。以下是对该方法的详细说明:

PR曲线分析:
1.每种颜色代表一个不同的类别,具体如下:
(1)SevereDemented(严重痴呆):0.993
(2)VeryMildDemented(非常轻微痴呆):0.985
(3)MildDemented(轻微痴呆):0.976
(4)NonDemented(非痴呆):0.982
(5)ModerateDemented(中度痴呆):0.995
2.所有类别(粗蓝线)显示了所有类别的整体性能,平均精确度(mAP)为0.986(IoU阈值为0.5)。

曲线行为:
(1)优异的精确率和召回率(趋近于1.0)表明模型的检测性能良好。
(2)各类别中,曲线均呈现向图表右上角靠近的趋势,在检测过程中精确率与召回率均表现优异。
(3)随着曲线越趋近于右上角(即精确率与召回率均为1.0),其性能越佳。各类别曲线均趋向理想区域。

SevereDementia(重度痴呆)与ModerateDementia(中度痴呆)两个类别在精确率与检出率方面均取得最佳得分,在模型对这些阶段的识别上展现出卓越的能力。该模型在各类别的整体识别上表现稳定且一致,在mAP@0.5指标下达到0.986的优异成绩,在各阶段的阿尔茨海默病诊断中展现出较高的可靠性与准确性。

4.检测结果识别

模型完成训练后能够生成一个最佳的训练结果模型best.pt文件,并将其放置在runs/train/weights目录中。我们能够利用该文件来进行后续的推理测试。 imgTest.py 图片检测代码如下:

加载所需库:
(1)from ultralytics import YOLO:主要用于实现目标检测任务。
(2)import cv2:主要用于显示图像处理效果。

(1)path = ‘models/best.pt’:配置预训练好的模型路径变量为‘models/best.pt’;该模型将被用于目标识别任务。
(2)img_path = “TestFiles/0229.png”:配置图像文件路径变量为‘TestFiles/0229.png’;该图像将被用于目标识别任务。

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

图像检测:调用模型进行图像分析,并完成针对图片的目标识别任务;其中包含图像识别的相关信息。

显示检测结果:
(1)res = results[0].plot():将结果绘制结果显示在图像中。
(2)cv2.imshow(“YOLOv8 Detection”, res):通过OpenCV库展示处理后的图像。
(3)cv2.waitKey(0):等待按下任意键后退出程序

此代码的作用在于导入一个经过预先训练好的YOLOv8模型,并对该模型施加到指定输入图像上以实现物体或目标识别功能,并最终展示该模型对所处理图像的识别结果

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

此段输出源自YOLOv8模型对图片"imagetest.jpg"的具体检测结果。具体数据包括:

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

检测结果:
(1)模型在该图片上检测到 1 个严重痴呆(”1 SevereDemented”)

处理速度:
(1)预处理时间: 14.4 毫秒
(2)推理时间: 5.0 毫秒
(3)后处理时间: 168.1 毫秒

模型在处理图片时具有较高的效率,并且能够成功识别并捕获了1个看屏幕实例,并将捕获的结果保存至指定目录。

运行效果

– 运行 MainProgram.py

1.主要功能:
(1)能够实现对老年痴呆症患者在图像中的实时识别;
(2)具备多模态数据处理能力,并能进行批量数据处理;
(3)提供目标定位信息显示功能,并能展示关键判断信心值以及运行时间;
(4)具有存储处理能力。

2.检测结果说明:

该图表详细展示了基于YOLOv8模型的目标识别系统的结果显示界面,并对各个字段进行了清晰的解释。

(1)该模型完成检测所需时间为0.023秒。
(2)该模型展现了其极高的实时性与快速检测能力。

目标数目(Number of objects detected):
(1)目前检测到的目标数量仅为1;即此轮检测中仅识别出一个物体。

该列表提供多种选项以供用户浏览不同类型的可分析目标设置。在当前设置下,默认状态为"全部"选项配置,这意味着系统将呈现系统识别的所有目标数据

当前选定的行为类型为"重度痴呆"(Severity:Mild),表明系统正在进行中地高亮显示检测出的"SevereDemented"(严重精神障碍)患者的数据记录

(1)这表明该模型对检测到的目标属于"中度痴呆"类别的信心程度为94.74%。
(2)置信度这一指标体现了模型对于该检测结果的信任程度,在数值上越高则表示模型对该结果越有信心。

目标位置(Object location):
(1)xmin=47,ymin=54:该区域在图像空间中的起始点参数为(xmin,ymin)。
(2)xmax=592,ymax=600:该区域在图像空间中的结束点参数为(xmax,ymax)。

这些坐标标记了图像中被检测为"重度痴呆"的目标区域。

这张图对老年痴呆症的一次检测结果进行了呈现与记录, 其中涵盖了: 检测的时间节点, 被识别出的各类类型, 各行为对应的概率值, 以及目标定位的信息. 用户可通过操作界面进行观察与评估, 这种功能有助于提高老年痴呆症诊断工作的效率水平.

3.图片检测说明
(1)极轻度痴呆

(2)轻度痴呆

(3)无痴呆

(4)中度痴呆

(5)重度痴呆

单击打开图片按钮并选择待检测的图片;或者单击打开文件夹按钮以选择包含要批量检测图像的文件夹。
操作步骤如下:
(1)单击目标下拉框后可以选择指定目标的结果信息以显示出来。
(2)单击保存按钮能够实现对检测结果的保存,并将其存储路径设为save_data目录下。

检测结果:系统发现了图片中的老年痴呆症,并呈现了详细的检测信息,包括总目标数量、所需时间、目标类型、置信度评分以及目标的具体位置坐标。

4.视频检测说明

单击一下视频按钮。随后系统会立即识别并展示出检测结果。启动 video player 并选择待检查的内容后就可以直接观看啦!

检测结果:该系统能够实时地对视频进行分析,并能识别出老年痴呆症并展示检测结果。该表格展示了视频中多个检测结果及其置信度和位置信息。

该界面体现了系统在视频帧多目标检测方面的能效。该系统能够精确识别老年痴呆症患者,并提供了详细的结果分析以及相应的置信度评分。

5.摄像头检测说明

通过单击摄像头控制按钮启动摄像头;即可实现摄像头的开启;该设备具备实时监控功能;再次单击该按钮将关闭摄像头设备

检测结果:该系统通过实时监控摄像头获取影像数据,并识别出老年痴呆症患者并记录评估结果。实时更新监控画面,并在图像中标注行为轨迹位置以供参考。数据表旁列出了每帧图像的详细分析报告。

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

执行保存按钮后操作时, 系统会将所选图像文件(包括批量处理)中的图片或视频检测结果进行存储. 检测到的结果会被存储在save_data目录中. 保存的检测结果文件如下:

在存储的CSV文件中包含了以下信息:图片路径及其相关参数如编号、类别以及置信度等详细信息,并记录了每个目标在图像中的精确位置数据

注释部分特别说明了这一数据字段的具体含义:即每个目标检测框由左上角(x1,y1)和右下角(x2,y2)两个点共同确定

(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’: 采用随机梯度下降算法(Stochastic Gradient Descent, SGD)作为优化器设置。

在大多数深度学习任务中,GPU通常能够显著提升训练速度.当遇到特定情况时(如硬件限制或其他因素),则需要依赖CPU来进行计算.

温馨提示:相比而言,在CPU上进行深度学习模型的训练效率通常低于GPU。特别是那些计算密集型的任务,在CPU上的表现往往明显不如GPU。因此,在大多数情况下建议将模型部署至GPU以提高训练效率和性能。

2.训练日志结果

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

训练总时长:
(1)模型在训练了150轮后,总共耗时1.550小时。

性能指标:
(1)Bounding Box(P): 表示模型在检测目标时预测边界框与实际边界框的一致性程度。实验结果表明该指标达到IoU 92.8%,表明模型在边界框预测方面表现优异。
(2)Recall (R): 该指标衡量了模型识别所有实际目标的能力比例。实验数据显示Recall值为92.1%,说明模型成功捕获了大部分目标实例。
(3)mAP@50: 这一评估指标反映了模型在IoU阈值下限为50%情况下的平均检测精度。计算结果显示mAP@50值为94.9%,表明模型在中等重叠度下的检测效果显著提升。
(4)mAP@50-95: 作为更为严格的评估标准,在涵盖从 IoU 阈值下限为 50% 至上限 95% 的范围内计算得到 mAP 值为78.7%,这证明了即使在较严苛的测试条件下模型仍能维持较高的检测水平

类别性能:
(1)Curling legs、Utilizing a mobile phone等日常动作的检测精确度与召回率均表现优异,在测试中分别实现了98.4%和97.4%的准确率。
(2)除上述两类常见操作外、教学及书写等功能也展现出良好的处理效果,在此系列任务中表现尚可;但值得注意的是,在动作识别精度方面该模型的表现稍低于前两类动作检测任务。

速度:
(1)每张图片的计算时间分别涉及预处理阶段、推理阶段以及后处理阶段。其中预处理阶段耗时仅需0.2ms,在推理过程中耗时达到了1.4ms,在完成后续计算后仅需0.8ms即可完成整个流程。这表明该系统在运行过程中始终保持较高的效率。

结果被保存为:验证的输出位于 runs\detect\train_v8 目录中

完成信息:
(1)Process terminated successfully with exit code 0:表明整个验证过程成功结束,并未出现错误;
(2)No errors occurred during the verification process.

此图表表明YOLOv8模型在老年痴呆症检测任务中的卓越性能,并且特别在对多类别行为进行检测时展现出色。此外,该模型能够较为精确地区分不同种类的老年痴呆症,并且其推理速度表现良好,在实时性方面也有显著优势。

全部评论 (0)

还没有任何评论哟~