Advertisement

基于深度学习的卷积神经网络皮肤病识别系统(PyQt5界面+数据集+训练代码)

阅读量:

由于多种多样的皮肤疾病对人类健康的影响日益重要,其早期诊断和精准治疗也愈发关键。传统的皮疹诊断主要依赖于临床医生的经验,然而由于皮疹本身的复杂性以及患者个体间的差异性,这往往会导致一定的主观判断偏差及检测误差。因此,开发自动化与精确的皮疹识别技术已成为医学影像分析的重要研究方向之一。近年来,深度学习技术在医学影像分析中展现出显著的应用前景,特别是在皮疹自动识别与分类方面的应用前景尤为广阔。

本研究构建了一个基于卷积神经网络的新型皮肤疾病识别平台,在临床医学领域具有重要应用价值。该平台通过深度学习算法对皮肤图像进行多维度分析,在此基础上实现了多种常见皮肤病的自动诊断与分类功能。研究者发现该系统凭借卷积神经网络卓越的特征提取能力,在处理海量皮肤样本时展现出极强的学习效能,并能有效识别各类复杂皮肤病变类型。为了进一步优化用户体验和技术性能,在开发阶段我们采用了PyQt5框架构建人机交互界面,并在此基础上设计了智能辅助诊断功能模块。实验结果表明该系统不仅能够便捷地完成医学影像数据的导入与处理工作,还提供了一系列智能化诊断服务功能

系统的主要功能模块涵盖了数据集加载、图像预处理以及关键的人工智能推理过程,并提供了结果展示界面。该系统涉及七个不同类别的皮肤疾病:痤疮与酒渣鼻斑丘疹、湿疹及真菌感染(如指甲上的onyx和疣)、健康皮肤以及其他未明确分类的皮肤病。在数据准备阶段,在获取高质量图像的同时实现了标准化处理以消除噪声并统一尺寸比例;为了提升模型性能,在训练过程中采用了大量标注的数据对网络参数进行了优化;通过深度学习技术中的卷积神经网络架构设计,在特征提取环节实现了高效的图像分析;经过持续优化后,在临床验证中证明了该系统具备良好的分类能力(即对于已知病例具有较高的准确性)并且能够较好地推广至未知病例(即具有较好的泛化性能)。

基于对比实验研究,在多种皮肤疾病分类任务中提出了一种深度学习模型,在不同类别的识别上达到了很高的准确度,并且具备了对不同类别的高度区分能力。此外,在图像质量变化及拍摄角度差异方面也表现出良好的抗干扰能力。系统结果表明,在临床应用层面该系统能够为临床医生提供精确的辅助诊断方案,并且显著提升了诊断效率与准确性

研究表明,在医学影像分析领域中应用深度学习开发出了一种自动化分析系统的先驱性研究。这种基于深度学习的皮肤疾病自动识别系统展现出广阔的应用前景,在辅助皮肤科医生诊断皮肤病、开展筛测试验以及实现疾病早期预警等方面具有显著的实际价值与应用潜力。研究结果表明,在皮肤病早期诊断方面这一系统提供了一个有效的解决方案,并非仅此而已:它还通过提升医疗机构与科研机构的工作效率与准确性的能力而带来了实质性的技术进步。展望未来:随着数据量持续增长以及算法技术的不断优化升级:这一技术有望在未来临床诊疗中发挥更加广泛的作用:成为皮肤病检测与治疗的重要辅助工具

算法流程

Tipps:全面解析项目的算法运行机制,并系统性地探究技术实现的关键环节。涵盖数据导入及预处理阶段直至核心算法的设计与优化过程, 最终至结果的可视化展示, 每一步都将通过清晰的组织架构和简明扼要的语言进行阐述

项目数据

Tipps:基于传统机器学习算法的研究中,在图像识别等领域的相关工作所需的数据量相对较少。然而,在运用卷积神经网络解决皮肤病诊断问题时,则关键在于构建合理的神经网络架构,并且必须拥有高质量、充足的训练数据集。通过持续迭代优化模型参数的过程中,在大量有标签数据的支持下才能实现预期分类效果。由此可见,在提升模型性能方面拥有高质量的数据集至关重要。

该数据集基于卷积神经网络构建的深度学习系统,并包含5598张图片。这些图片被划分为七个不同的类别:痤疮和酒渣鼻、湿疹、健康皮肤、指甲真菌感染、疣、软疣及其他、良性痣以及恶性痣。该数据集不仅可用于训练与验证深度学习系统以实现大米品质的自动分类诊断目的,并且还可以结合常见的数据增强手段(如图像翻转、裁剪以及噪声添加等)来提升模型性能。这些措施有助于为皮肤病的研究及临床诊断提供可靠的技术支撑。

数据集经过预标注处理后,在各类别下的图像样本数量较为平衡,并且确保了训练与验证过程的数据可靠性。该数据集经过分划得到两个子数据集:一个是训练集合

数据集划分
数据集已预先划分为两部分:训练集合测试集
(1)训练集合计为5598张图像中包含痤疮和酒渣鼻 672张图,良性痣 1152张图,湿疹 984张图,健康皮肤 131张图,恶性痣 958张图,指甲真菌感染 832张图,疣、软疣及其他 869张图。这些图像用于模型训练以最小化损失函数优化参数。
(2)测试集合计为1383张图像中包含痤疮和酒渣鼻 166张图,良性痣 286张 图,湿疹 244 张 图,健康皮肤 31 张 图,恶性痣 237 张 图,指甲真菌感染 206 张 图以及疣、软疣及其他类别的总计数为各分类中的最少数量即分别对应 Train 集中的各类别数量用于评估模型在未见数据上的表现

该划分方法旨在提升模型训练与评估过程中的可靠性和稳定性,并防止数据泄漏风险,并且避免模型过拟合

本实验中涉及的主要超参数设置具体说明如下:

  • 学习率设为0.0001,并采用Adam优化算法进行自动调整以提升性能。
  • 在训练阶段使用32批大小,在验证阶段采用64批大小以确保更好的稳定性与计算效率。
  • 采用了Adam优化算法,在处理稀疏数据与非凸优化问题方面表现出色。
  • 选择交叉熵损失函数(CrossEntropyLoss),该损失函数特别适用于多分类任务。
  • 配置为总共15个训练周期以确保模型充分收敛。
  • 基于预训练的VGG16和ResNet50模型权重进行了迁移学习以加速收敛并提升分类效果

这些超参数设置经过反复调试,以确保模型在验证集上表现良好。

硬件环境

我们采用了两套不同的硬件平台配置来进行系统的调试与训练;其中一项设备为外星人 Alienware M16笔记本电脑

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

上面的硬件环境配备了充足的计算资源,并能够处理大规模图像数据的训练以及高效计算的任务。GPU的应用将模型训练所需的时间大幅缩短。

实验过程与结果分析

Tipps:探讨VGG16与ResNet50在皮肤病分类任务中的实验效果表现。涉及训练阶段的损失函数值及模型准确率曲线的变化情况,并对两者的模型性能进行对比分析;通过混淆矩阵(热力图)进一步分析分类性能及其分布特点;针对过拟合与欠拟合问题展开讨论,并从计算效率的角度进行评估

为了观察模型在训练过程中的表现情况,在每个epoch收集了训练损失、训练准确率以及验证损失和验证准确率的数据指标。通过这些数据指标可以分析出模型是否能够稳定地收敛并判断是否存在过拟合或欠拟合的风险

1.1 VGG16模型训练过程
VGG16模型在训练过程中的损失和准确率曲线如下所示:

(1)总体而言,训练精度(Training Accuracy)持续提升表明模型在训练数据集上的表现稳步增强。
(2)同样地,在Validation Accuracy方面也呈现出上升的趋势。然而与Training Accuracy相比,在某些epoch期间Validation Accuracy会出现较大的起伏,并且会出现个别epoch的下降情况。不过整体上仍呈上升趋势,在最近几轮中逐步逼近Training Accuracy水平。

训练损失与验证损失:
(1)训练损失(Training Loss)持续减少表明模型在训练数据上的拟合程度不断提升。
(2)验证损失(Validation Loss)也持续减少,在中间几轮出现幅度较大的波动。这可能是因为模型对验证数据的适应能力不足或是由于验证集多样性较高导致模型偶尔表现出不稳定的表现。

总体趋势如下所示:(1)潜在过拟合现象可能与以下两个关键指标的变化轨迹密切相关:首先,在测试数据集上的性能持续提升的同时,在测试指标上出现的小幅度震荡可能预示着潜在的过拟合;其次,“尽管如此,在测试数据集上的表现并未同步提升。”这提示我们需要进一步关注模型在未见过的数据上的泛化能力。(2)随着训练过程的发展,“持续下降的趋势。”是衡量模型收敛程度的重要指标之一;与此同时,“表现出稳定的提升幅度。”特别是在最后几个 epoch 的阶段,“差距有所缩小”,反映出该模型正在逐渐向稳定状态趋近

总结:该模型在皮肤疾病识别任务中的学习效果具有一定的潜力。尽管该模型在验证集上出现了波动迹象,并且面临过拟合问题,但这些现象表明其泛化能力还有待进一步提升。

该系统在ResNet50模型的训练阶段展示了误差与精确度变化曲线

训练与验证准确性:
(1)基于Training Accuracy的数据表明,在模型不断接受新样本进行学习的过程中其准确性持续提高并且呈现出稳定的发展态势。
(2)相对于Training Accuracy而言Validation Accuracy的变化更为显著其波动程度也更高尤其是在初始阶段该指标数值偏低但随着时间推移其逐渐攀升至稳定水平最终呈现出明显的提升效果。
最终结果表明尽管Validation Accuracy未能赶上Training Accuracy但这种差异已经不再显著这提示我们可能面临过拟合问题较为严重地影响了模型在未知数据集上的表现能力

训练损失与验证损失:
(1)随着训练过程的推进,训练损失逐渐减小,并且模型对训练数据的拟合效果逐步增强。从整体趋势来看,尽管有轻微波动但总体表现为平稳下降的状态
(2)验证损失同样呈现出逐步下降的趋势,并且其下降速度较慢相较于训练损失的变化速度相比可能会出现一定的滞后现象。值得注意的是,在某些epoch周期中观察到一定程度的波动这可能预示着模型在某些阶段可能出现一定水平上的不稳定性从而为过拟合留下了一定的空间

总体趋势:
(1)过拟合迹象:观察到过拟合迹象时,在训练过程中记录了模型对训练集的性能变化情况。然而,在验证集上的性能指标(如准确率与损失值)却表现出较大的波动性特征。这可能暗示着一定程度的过拟合现象存在。具体来说,在后续的研究中可以通过引入正则化技术、数据增强策略以及早停机制来进一步改善模型性能。
(2)当模型进入后期阶段时,在测试阶段的表现也逐步提升。具体来说:

  • 其对应的训练与验证损失均趋于稳定状态;
  • 验证精度逐步提高;
  • 同时,在测试阶段的表现也逐步提升。

ResNet50 模型在皮肤疾病识别任务中展现了较高的训练效能;为进一步增强模型在未知数据上的适应能力, 可以通过进一步优化验证集的表现来提升模型性能, 并防止模型过度拟合问题。

通过分析训练过程中的损失曲线和准确率曲线可以看出 ResNet50 在收敛速度和稳定性方面均表现出显著优势 这一现象充分说明了其在复杂分类任务处理方面的卓越能力

模型性能对比分析

  • 训练与验证损失
  • (1)对于ResNet50模型而言:其 training loss持续下降,并且 validation loss也呈现稳定下降趋势。该模型在两个数据集上的表现均良好,在最终观察到较高的收敛性。
  • (2)对于VGG16网络而言:其 training loss持续下降;然而其 corresponding validation performance提升相对缓慢,并偶尔会出现一定的波动性。这可能暗示着VGG16网络在一定程度上过度拟合了 training data。

模型收敛速度
(1)针对 ResNet50 模型而言:该模型表现出良好的收敛性,在训练过程中训练损失迅速下降,在较少 epoch 内就实现了显著的优化效果,并且其验证精度很快达到了稳定的水平。
(2)对于 VGG16 模型而言:该模型的收敛速度相对较低,在训练初期就展现出一定的波动特征,并且需要经过较多 epoch 才能实现较为稳定的性能状态。

(1)ResNet50:由于其较大的计算资源消耗,在使用时可能会导致较长的训练所需时间。然而该模型凭借其深度网络架构以及残差模块的设计理念,在有效地防止了梯度消失问题的同时也显著提升了模型的整体性能。
(2)VGG16:相较于其他模型而言,在相同的硬件条件下该模型具有较低的计算资源消耗水平,并且能够较快速地完成整个模型的训练过程。但当应用于处理复杂的图像识别任务时,则可能面临较高的过拟合风险。

综合评估
(1)ResNet50:面对复杂度较高的任务场景下,在性能表现上展现出良好的水平。特别擅长降低过拟合风险并提升模型的一般化能力,在医疗影像中的各类病灶特征明显的问题分类中能持续保持较高水平的验证准确率。
(2)VGG16:尽管其在网络训练阶段表现出良好的效果,并且能在一定程度上适应各类图像分类任务的需求;然而其架构相对简洁,在面对那些具有复杂特性的任务时容易出现过度拟合问题;其验证集上的性能略逊于ResNet50的水平

总结:
(1)ResNet50对于皮肤疾病识别任务显示出更高的性能,在验证准确率和泛化能力方面均表现出色。
(2)尽管在训练集上的性能较为理想,但其验证精度存在较大的波动。

混淆矩阵分析(热力图)
为了更加全面地评估模型的分类性能,在生成混淆矩阵的基础上将其以热力图的形式进行呈现。这有助于我们更好地识别模型在各个类别上的正确分类情况及其可能出现的误判情况。

1.VGG16的热力图:

(1)优点:VGG16分别在健康皮肤和恶性痣这两个类别上展现出卓越的判别能力。
(2)改进方向:通过优化数据集质量或提升模型性能得以降低痤疮与酒渣鼻相关分类错误的可能性;同时需要更加深入地提高对不同类型痣的鉴别水平。

2.ResNet50的热力图:

(1)优点:ResNet50模型在大多数类别上的表现相对较好,尤其在湿疹(Eczema Photos)、良性痣(Benign Moles)和恶性痣(Malignant Moles)上有非常高的准确率。
(2)改进方向:对于Healthy(健康皮肤)类别,需要进一步优化分类器,以减少误分类。可能通过更高质量的训练数据或更多的类别区分特征来改善。

(1)与VGG16相比,在计算效率、训练时间、推理速度以及内存使用等方面表现更为卓越的是ResNet50模型。尽管其网络架构更为复杂(更深),但得益于残差连接设计的有效应用,在实际训练过程中梯度消失问题得到了显著缓解。这一特性使得ResNet50不仅能够更快地收敛于最优解,并且能够维持较高的模型性能水平。
(2)相比之下,VGG16模型因其规模较大以及较为浅薄的架构特点, 在训练阶段需要消耗更多计算资源以及内存存储空间, 同时其推理速度也相对较慢. 因此,对于那些受限于硬件资源的应用环境而言, ResNet50相较于传统VGG16模型展现出更为优异的表现.

当项目的成功与否主要取决于其运算性能时,在时间紧迫的情况下,ResNet50特别适合应用于那些涉及复杂数据处理的场景。

运行效果

– 运行 MainProgram.py
1.ResNet50模型运行:
(1)主界面

(2)痤疮和酒渣鼻

(3)良性痣

(4)湿疹

(5)健康皮肤

(6)恶性痣

(7)指甲真菌感染

(8)疣、软疣及其他

2.VGG16模型运行:
(1)主界面

(2)痤疮和酒渣鼻

(3)良性痣

(4)湿疹

(5)健康皮肤

(6)恶性痣

(7)指甲真菌感染

(8)疣、软疣及其他

3.检测结果保存

执行保存按钮的操作后, 当前选择的图检测结果会被保存. 检测的结果会被存储在 save_data 目录中.

图片文件保存的csv文件内容如下:

启动 train_resnet50.py 以导入指定路径下的训练集和测试集,并创建 MainProcess 实例进行 ResNet50 模型的训练(共设置15个周期)。

(1)train_dir = r"\D:\Dataset\train":指定训练数据文件夹的位置。
(2)test_dir = r"\D:\Dataset\test":指定测试数据文件夹的位置。

在模型路径设置部分:
(1)model_name0 = r"models/resnet50.pth":指定预定义目录下的训练模型文件路径...该模型文件位于...此文件被用作预训练 ResNet50 模型权重加载源...同时也可以作为训练完成后保存最终权重的目标...

创建MainProcess类实例:
(1)cnn = MainProcess(train_dir, test_dir, model_name0):基于输入的训练数据目录、测试数据目录以及模型文件路径生成实例cnn。该实例将执行数据加载、模型训练以及验证等功能。

通过调用主函数main进行模型训练:首先调用cnn对象的main方法进行参数配置与初始化操作;其中参数设置为epochs=15;表示模型将在每个epoch中遍历整个训练集一次;该方法将涵盖模型的训练过程、损失计算以及验证流程

训练日志结果
ResNet50日志结果

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

配置信息:
(1)经过15轮的训练后, 模型耗时总计为22.4分钟.
(2)本次训练采用了GPU设备, 具体型号为CUDA设备0.

训练损失:
(1)训练损失逐渐降低,在验证集上的准确率呈现出稳定的提升趋势。
(2)这表明模型通过优化降低了训练误差,并且在验证集上表现出更强的预测能力。

验证准确率从 epoch 0 的 0.810 增长至 epoch 15 的 0.893,并由此可观察到模型在验证集上展现出良好的性能表现及较强的泛化能力

训练速度:
(1)在整个训练过程中,“训练速度”的表现呈现一定的波动性特征。
(2)每个epoch中的每秒处理样本数量(it/s)存在差异,
这可能与硬件性能、数据加载效率等因素相关联。

(1)通过观察输出结果可以看出, 最终的训练损失达到了0.238, 并且验证准确率也达到了0.893. 这表明模型在训练集和验证集上都显示出良好的性能

完成情况:(1)流程完成状态为exit code 0:表明整个验证流程顺利完成,并未出现错误信息

总结:在训练过程中,模型性能持续优化,在最终测试时达到较高水平的验证准确率(约95%),这表明该深度学习系统具备出色的表现能力,在皮肤疾病识别领域展现出强大的分类效能。

执行该脚本将从指定路径加载训练数据集和测试数据集,并创建并初始化一个MainProcess对象,并使用VGG16架构进行模型训练。该操作将设定模型的训练迭代次数为15次。

请设置数据集路径:
(1)train_dir = r"D:\Dataset\train":指定训练数据集的位置。
(2)test_dir = r"D:\Dataset\test":确定测试数据集的位置。

模型路径设置:
(1)model_name0 = r"models/vgg16.pth":定义训练模型文件的位置。该位置存储的是 vgg16.pth 文件,在此位置可执行加载预训练权重并存储训练成果的操作。

实例化 MainProcess 类:
(1)cnn = MainProcess(train_dir, test_dir, model_name0):基于输入训练数据目录、测试数据目录以及模型文件路径生成 MainProcess 实例对象cnn。该类的主要职责包括数据加载、模型训练以及验证等操作。

启动主函数main以执行训练任务:
(1)CNN对象的主要方法调用:启动CNN对象的main方法以执行模型训练任务。参数设置为epochs=15表示每个周期遍历完整个训练数据集共进行15次循环。整个流程包括模型的参数更新过程、损失计算以及模型验证步骤等详细环节

训练日志结果
VGG16日志结果

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

配置信息:
(1)该模型经过了15轮的训练后,在整个过程总共消耗了27.39分钟。
(2)本次实验采用了基于CUDA架构的GPU装置。

训练损失:(1)经过 epoch 0 至 15 的学习过程后, 训练损失值从 0.744 下降至 0.337, 这一变化趋势反映了模型在训练阶段持续改进

(1)验证准确率从epoch 0的0.701增长至epoch 15的0.837,并较之前表现出明显提升。
(2)与ResNet50相比,在验证集上的表现稍逊于后者但仍显示出一定的进步。这可能源于VGG16模型在某些方面仍需进一步优化。

(1)在第6个到第12个 epoch期间内,在此阶段中训练损失持续下降,在此期间验证准确率稳步上升直至最终于第15个 epoch达到0.837的水平值表明训练过程已趋于收敛状态。
(2)进入后期阶段后,在此阶段中训练损失的下降幅度有所减缓;然而验证准确率则维持在较高水平并较为稳定的状态。

模型表现:
(1)经过训练后得到的损失值为-2\ln(1+e^{-y w^T x+b})平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为-2\ln(1+e^{-y w^T x+b})的平均值为 −2 \ln ( 1 + e^{ - y w^{ T }x + b } ) 的平均值是多少?

完成状态:(1)整个验证过程顺利完成无错误发生

总结:
GG16模型在该皮肤疾病识别任务中经过15个epoch的系统性训练过程,并通过逐步优化模型结构实现了较好的验证准确率目标。尽管其表现略逊于ResNet50模型,在实际应用中仍展现出较强的识别能力特征。为了进一步提高模型性能水平,可能需要采取调整模型结构或引入数据增强等技术手段以实现更好的效果

全部评论 (0)

还没有任何评论哟~