基于YOLOv8深度学习的医学影像卵巢癌自动检测系统(PyQt5界面+数据集+训练代码)
随着人工智能技术的发展速度不断加快,在医学影像分析领域展现出显著的应用前景。作为常见的人体恶性肿瘤之一,卵巢疾病在早期筛查与诊断方面对于患者的治疗效果具有决定性意义。传统的诊断手段主要由专业医师进行人工分析,并存在较高的误诊风险及较大的工作强度。本研究旨在通过提升检测系统的准确性和操作效率来优化相关流程,并开发了一款利用YOLOv8深度学习算法实现自动化诊断的新系统。该系统结合了PyQt5界面以确保良好的用户体验
本系统首先通过YOLOv8模型实现卵巢癌影像的目标定位,并自动识别出卵巢癌病变区域。该系统通过大量卵巢癌医学影像数据集的训练提升了模型在目标检测方面的准确率与处理速度。系统的主功能是基于细胞学图像、CT或MRI扫描数据识别并分类标记宫颈癌病变区域。为了提高系统的实用性和用户体验,开发了一个PyQt5界面模块。该界面提供了便捷的接口供用户导入相关医学影像数据,并支持实时查看检测结果以及后续的数据分析流程。
研究结果表明,在卵巢癌自动检测任务中,该系统展现了显著的准确率、召回率及检测效率,并成功降低了人工分析所需的时间以及误诊的可能性。YOLOv8模型能以高效率完成医学影像处理并确保卵巢癌检测的可靠性为此提供了高效的自动化诊断方案。
算法流程
Tipps:深入分析项目的算法流程,并循序渐进地探讨其技术实现的核心逻辑。具体而言,在数据加载与预处理阶段入手,在核心算法的设计阶段及优化过程中进行详细阐述,在结果呈现阶段一直到结果可视化这一环节进行清晰阐述

硬件环境
我们使用的是两种硬件平台配置进行系统调试和训练:
(1)外星人 Alienware M16笔记本电脑:

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

该硬件环境配备了充足的计算资源,在支持大规模图像数据处理的同时也能实现高效的运算。借助GPU技术的应用,模型训练所需时间大幅缩减至原来的三分之一左右。
通过在两种不同的硬件平台上运行测试与优化,在性能、稳定性和适应性等方面均能获得全面验证。采用这种方法后,在系统稳定性和通用性方面均有显著提升,并且降低了开发成本并提升了处理效率。
模型训练
Tipps:模型的训练、评估与推理
1.YOLOv8的基本原理
YOLOv8被认为是最先进的目标检测模型之一。它基于一系列前驱版本的基础之上进行了全面升级,并新增了一些功能模块与优化措施。这些改进使该系统不仅提升了性能与适应性,在实际应用中也展现出更强的效率优势。此外,在实现目标检测的同时还特别关注到了图像分割与姿态估计等细节环节的优化效果。该系统的主要创新之处体现在采用了全新的主干网络架构、设计了一种更加高效的检测头部结构以及引入了一套更具竞争力的新损失函数框架上,并且这些设计能够在从CPU到GPU等多种计算平台上稳定运行。

YOLOv8是Yolo系列模型的最强版本,在各项指标上全面超越现有的目标检测与实例分割模型。它汲取了Yolov5、Yolov6以及YoloX等模型的优势,在原有的Yolov5基础上进行系统优化,并同时继承了工程化便捷高效的特点。
Yolov8模型网络结构图如下图所示:

2.数据集准备与训练
本研究采用了包含卵巢癌图像目标的数据显示集,并通过Labelimg标注工具对每张图像中的目标边界框及其类别进行了标注。在此数据集基础上,采用YOLOv8n模型进行了训练。训练完成后,在验证集中对模型的表现进行了全面评估与对比分析。整个模型的训练与评估流程主要包括以下几个步骤:首先进行数据准备阶段;随后开展模型训练工作;最后完成模型评估工作以优化性能参数。本次标注的目标类别主要集中在卵巢癌相关图像上,在该数据显示集中共有1469张图片进行分类标记处理。
训练数据集由1028张图像组成,在指导模型进行学习与参数优化的过程中起着关键作用。
验证数据集包含294张图像,其主要作用在于评估模型对新数据的理解能力,并通过这种方式确保模型不会仅针对训练数据表现出色而忽略实际应用中的多样性。
测试数据集由147张图片构成,其目的是全面检验模型在不同场景下的适用性与推广效果。
如图所示,在该柱状图中展示了训练集、验证集和测试集中图像的数量呈现情况

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

部分标注如下图所示:

这种数据分布方式确保了数据在模型训练、验证以及测试过程中达到均衡性,并为YOLOv8n模型的开发与性能评估提供了可靠的基础支持。
图片数据遵循以下存储规则:在项目根目录下创建一个datasets子目录,并在此子目录中分别建立训练集和验证集来组织图片数据。

随后需要创建一个新的data.yaml文件,并将其用于存储训练数据的具体路径信息以及模型所需检测的目标类别信息。YOLOv8模型在执行训练过程时能够读取该文件中的相关信息,并用于完成模型的训练与验证工作。具体内容如下:
- 该文件用于存储训练数据的路径信息以及模型所需检测的类别信息。
- YOLOv8模型在执行训练过程时能够读取该文件中的相关信息。
- 这些信息将被用来完成模型的训练与验证工作。

此份文件明确指定了在模型训练与验证过程中使用的数据集路径以及其目标分类类别。
在数据准备完成之后, 我们可以通过运行train.py文件来进行模型训练. 其中, epochs参数用于调节模型训练的迭代次数, batch参数则用于决定每次处理的数据批量大小(具体设置需根据内存容量来定, 最小值设定为1).
CPU/GPU训练代码如下:

导入预训练的YOLOv8模型yolov8n.pt,并将其命名为train_v8;该文件路径位于预训练权重存储位置。
具体参数设置如下:
3.YOLOv8模型训练结果与性能评估
在进行深度学习时,我们通常会通过分析损失函数下降的趋势曲线来评估模型的学习进度。YOLOv8模型的训练过程主要包括定位损失、分类损失以及动态特征损失三个方面的计算。优化这些不同类型的损失能够显著提升目标检测系统的性能水平。
损失函数作用说明如下:
(1)Box Loss: 它代表了预测边界与真实边界之间的差异度(GIou),其值越小则表明边界定位更为精确。
(2)Classification Loss: 它用于评估锚盒与其对应的真实类别标签的一致性。
Dynamic Feature Loss: 这一机制通过调整预测边界相对于目标边界的偏移量来优化检测精度。
训练和验证结果文件存储:
训练完成后,相关的训练过程和结果文件会保存在 runs/ 目录下,包括:

(1)损失函数变化趋势图(Loss Curves)
(2)评估指标变化趋势图(mAP、精确率、召回率)
(3)分类结果表格(Confusion Matrix)
(4)Precision-Recall (P-R) 曲线
损失曲线(Loss Curve)和性能指标分析:

训练相关指标:
train/box_loss:
描述:反映了训练过程中边界框回归损失(Box Loss)的变化情况。
趋势:随着训练进程的推进,在每次迭代中观察到边界框回归损失逐渐下降。
train/cls_loss:
描述:该变量体现了训练过程中类别分类失准率(Classification Loss)的变化情况。
趋势:随着训练过程的推进,该变量持续下降,并表明模型在分类任务中的性能得到了提升。
train/dfl_loss:
描述:体现了分布焦点损失(Distribution Focal Loss)的变化情况,并用于优化边界框分布的精确度。
趋势:观察到损失值在训练过程中逐渐趋于稳定,在后续训练中趋于平稳状态。
验证指标:
val/box_loss:
描述: 具体表现为边界框损失(Box Loss)在验证集上的具体数值表现。
趋势:随着训练周期的推进,验证集的框损失持续减少,反映出模型在验证数据集上的定位精度呈现较好状态。
val/cls_loss:
具体说明该指标代表的是基于验证集的类别区分损失(Classification Loss)的具体变化情况。
变化趋势表明,在训练过程中该指标逐渐下降的趋势持续存在,并最终趋于稳定的状态。
val/dfl_loss:
作用: 表征验证集上分布焦点损失(DFL Loss)的动态变化情况。
动态特征:在训练过程中, 验证集上的方向流损失持续降低, 显示出模型在验证集上的目标流向预测能力持续增强。
性能评估指标:
metrics/precision(B):
该评估指标反映了模型在训练集上精度(Precision)的变化情况。
在这一过程中,准确率逐渐上升的趋势表明模型在识别正类样本时的准确性持续增强。
metrics/recall(B):
表现: 模型在训练集上对召回率(Recall)的变化情况进行展示。
趋势: 随着训练过程的推进,召回率稳步提升表明该模型在识别正样本方面表现出色。
metrics/mAP50(B):
描述: 该指标衡量了在验证集上交并比率达到至少50%时的平均精度(记为mAP@50)。
趋势分析显示,在训练过程中mAP@50值持续提高。这一现象表明模型的分类性能在各个类别中均有显著增强。
metrics/mAP50-95(B):
描述: 表示验证集上 IoU 从 50% 到 95% 时的综合平均精度(mAP@50-95)。
趋势: mAP50-95逐渐增加,表明模型在严格的精度要求下的表现也在逐步提高。
总结:
(1)各项损失呈现出持续减少的趋势。
(2)模型在训练过程中其检测能力与准确性得到了显著提升。
(3)同样,在验证集上的损失持续下降。
Precision-Recall(P-R)曲线分析:

曲线图:
蓝色线条代表着"ovrain_tournr"类别中的精准率与召回率之间的关系。
以加粗线条标示的综合mAP@0.5值反映了模型在各类别上的整体性能。
总结:该PR曲线清晰展示了模型在"ovrain_tournr"类别上的卓越表现,并且整体mAP@0.5指标同样展现出较高的准确性。
该方法 (Method) 的系统评估
该方法作为一个分类模型的评价工具具有重要意义,在对各类别进行预测时能清晰展示其预测结果与实际结果之间的对比关系。

结论:
该模型在处理"ovrain_tournr"类别时展现出良好的性能,并取得了一定的实际效果;然而,在实际应用中仍存在一定的误分情况(即假阳性结果和假阴性结果),这表明该模型在某些特定边界条件下的区分度可能存在不足。
4.检测结果识别
完成模型的训练后, 我们能够获得一个最佳的最佳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模型加载至内存中,并设置目标检测任务为’detect’。(2)通过conf参数设定目标检测的置信度阈值,并通过iou参数设定非极大值抑制(NMS)的交并比(IoU)阈值。
识别图像:
(1)results = model(img\_path):针对指定的图像进行目标识别,在其中的结果字段存储了相关的识别信息。
(2)...
输出检测结果:
(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)模型在图片中检测到:1个目标,类别为 ovrain_toumr。。
处理速度:
(1)预处理时间: 3.0 毫秒
(2)推理时间: 6.5 毫秒
(3)后处理时间: 62.9 毫秒
总结:YOLOv8模型通过精准识别出图像中的一个目标并将其分类为ovrain_toumr类别的计算过程耗时较短。尽管后处理阶段的计算量较大导致所需时间较长
运行效果
– 运行 MainProgram.py

主要功能:
(1)可实现对目标图像中卵巢癌图像的实时识别;
(2)系统具备多模态数据处理能力:能够处理图片、视频流以及来自摄像头端源的数据;同时支持批量处理多张图片;
(3)用户界面设计直观简洁:提供实时更新的目标定位坐标数据,并能显示当前样本数量及每例诊断信心评分和所需时间;
(4)系统具备数据存储功能:能够将单张图片或连续视频序列中的异常情况进行记录
2.检测结果说明:

(1)置信度阈值设定:目前参数设置为0.25,则该系统仅输出置信度超过25%的目标框;其中模型对各目标检测结果的信任程度与对应概率呈正相关关系。
(2)交并比阈值指标:现有配置下该系统的IoU指标设定在0.70;即该系统仅接受IoU超过70%的检测框作为有效结果;其计算依据的是两目标框重叠区域与其中一个目标框面积的比例。
这两个参数常被应用于目标检测系统中更改后不仅会影响模型的检测精度而且还能调节误检率
该图表展示了利用YOLOv8模型进行目标识别系统的检测结果界面。具体说明了各个字段的作用及其意义。
该图表展示了利用YOLOv8模型进行目标识别系统的检测结果界面。具体说明了各个字段的作用及其意义。

用时(Time taken):
(1)这表明该模型进行检测所需时间为0.051秒。
(2)这验证了该模型具备良好的实时性能,其检测速度极快。
目标数目(Number of objects detected):
(1)当前检测的目标数量显示为Number of objects detected;表明这是目前为止被识别出的第一个目标。
目标选择(下拉菜单):
(1)此处有一个可调节的列表框,在此处您可以指定目标类型的参数设置。
(2)当前状态下,默认已将目标类型设为‘全部’选项。

结果(Result):“卵巢癌”,表示系统正在高亮显示检测到的“ovrain_toumr”。
置信度(Confidence):
(1)这表明识别出的目标类型为"卵巢癌"类别的评估得分为87.12%。(2)置信度反映的是模型对预测结果的信任程度,在评估值较高的情况下,则表示模型对该结果越有信心。
(1)x_min值为86;y_min值为72;这些数值代表了目标区域在图像中的起始位置参数(x_min, y_min)。
(2)x_max值为149;y_max值为168;这些数值代表了目标区域在图像中的结束位置参数(x_max, y_max)。
这些坐标表示在图像中的目标区域范围,框定了检测到的“卵巢癌”的位置。
这张图记录了卵巢癌图像检测的一次测试结果,在涉及的时间、种类、置信度等方面进行了详细展示,并标示出目标位置信息。用户可以通过界面查看并分析这些数据以提高该系统在卵巢癌图像目标检测中的性能水平。
3.图片检测说明



单击图片按钮以打开,并从待检测的图像中选择您想要检查的内容;此外,请单击文件夹按钮以打开,并从包含待批量检测图像的文件夹中选择所需处理的对象。
操作步骤如下:
(1)单击目标下拉框后即可显示所需的目标检测结果信息;
(2)单击保存按钮将对检测到的信息进行存储,并将其存储位置位于save_data目录中。
检测结果:系统成功识别并定位卵巢癌图像的目标情况,并输出包含总目标数、用时、目标类型、置信度及位置信息的详细检测结果。
4.视频检测说明

单击视频按钮后会启动视频选择界面,在此界面中选择需要检测的视频文件后会自动生成检测结果视图;若再次单击该按钮则会退出当前视图返回主界面。
单击保存按钮后系统会对当前的视频检测结果进行生成并保存,并将生成的结果文件指定在save_data目录下的位置。
该系统能够实时对视频流进行分析,并能够识别出多个关键特征并生成定位信息。详细记录了每个目标的置信水平及其在视频中的具体位置,并通过表格形式展示了这些数据信息
该界面不仅展示了系统的多目标检测性能,在处理卵巢癌相关图像时表现出了较高的准确性,并对检测结果进行了详细的数据分析
5.摄像头检测说明

按下启动摄像头按钮。
此操作将启动摄像头。
系统将提供实时监控能力。
再次按下该按钮时会关闭摄像头。
检测结果:通过摄像头实现实时分析功能,在显微镜下识别出卵巢癌图像并呈现检测结果。实时画面通过显微镜窗口进行展示,并在图像中标注了被识别行为的具体位置;表格下方完整记录了每帧图像中的详细检测数据信息。
6.保存图片与视频检测说明

当用户点击保存按钮时, 系统会自动处理当前选择的图片以及批量图片或视频的检测结果.
这些检测到的图片与视频会被存储在指定的save_data目录中.
保存的操作完成后, 检测到的结果文件将被列出.

在存储过程中处理的图像数据中包含相应的信息。具体来说,在生成或处理图像时会生成一个csv(逗号分隔值)文件,并记录以下各项:图片存储路径及其相关属性(如目标标识码)、目标分类结果以及物体检测框的位置参数(即用于表示物体检测框的位置参数部分特别说明了以下几点)。其中用于表示物体检测框的位置参数部分特别说明了以下几点:

(1)图片保存

(2)视频保存

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

(1)该数据集基于data_yaml_path文件中的参数配置设置。
(2)训练周期数设定为150个迭代周期。
(3)每个批次包含4张图像。
(4)训练结果将被存储在名为train_v8的目标目录下。
(5)本模型采用随机梯度下降法(SGD)作为优化算法。
虽然在普遍的深度学习任务中...
温馨提示:在CPU环境下训练深度学习模型相比GPU环境而言通常会耗时明显更长一些;尤其是像YOLOv8这样计算密集型的模型表现尤为明显。除非有特殊需求,在大多数情况下建议选择GPU环境来进行训练以减少资源消耗。
温馨提示:在CPU环境下训练深度学习模型相比GPU环境而言通常会耗时明显更长一些;尤其是像YOLOv8这样计算密集型的模型表现尤为明显。除非有特殊需求,在大多数情况下建议选择GPU环境来进行训练以减少资源消耗。
2.训练日志结果

这张图展示了使用YOLOv8进行模型训练的详细过程和结果。
(1)经过150轮的训练后, 模型总共消耗了[...]小时.
(2)本次采用了NVIDIA GeForce RTX 4070 Ti SUPER显卡(配备[...]显存).
(3)其较高的训练效率主要归因于YOLOv8模型的优化设计以及高性能硬件的强大支持.
验证结果:
(1)mAP@50:92.5%。
(2)mAP@50-95:66.4%。
速度:
(1)预处理时间:0.4ms
(2)推理时间:1.9ms
(3)后处理时间:1.0ms
结果保存:
(1)Result files are saved to runs\detect\train\_v8.
Verification results are stored within the runs\detect\train\_v8 directory.
完成状态为Process finished with exit code 0:表明整个验证过程顺利完成且未出现错误。
总结:基于验证集的评估结果可以看出, 该模型经过充分的训练, 并表现出色; 其mAP分数表明该模型在目标检测方面表现出极高的准确性
