- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
前言
猴痘(Mpox)是由猴痘病毒(Monkeypox virus, MPXV)引起的一种人畜共患传染病,其临床表现与天花相似,包括发热、皮疹和淋巴结肿大等症状。自2022年以来,猴痘在全球范围内呈现多国暴发趋势,被世界卫生组织(WHO)列为国际关注的突发公共卫生事件(PHEIC)。传统的猴痘诊断主要依赖流行病学调查、临床症状观察以及实验室检测(如PCR和病毒分离),但这些方法存在检测周期长、对医疗资源依赖度高、基层医疗机构普及性不足等问题,尤其在疫情快速扩散时可能延误早期诊断与隔离治疗。
近年来,随着深度学习技术的快速发展,基于医学图像的智能辅助诊断系统在皮肤病识别领域展现出显著潜力。卷积神经网络(CNN)能够从皮肤病变图像中自动提取多层次特征,实现快速、非侵入式的初步筛查,为猴痘的早期识别提供了新的技术路径。
实验概述
实验目标
- 训练过程中保存效果最好的模型参数。
- 加载最佳模型参数识别本地的一张图片。
- 调整网络结构使测试集accuracy到达88%
实验重点
通过调整网络结构,实现猴痘病图像的精准分类,使测试集准确率达到 88% 以上。
自定义深层CNN:输入 (3, H, W) → 4层卷积 → 全局平均池化 → 展平 → 全连接分类
训练集accuracy达到88%
我的环境
● 语言环境:Python3.8
● 编译器:Jupyter Lab
● 深度学习环境:Pytorch
实现代码
一、前期准备
1.设置GPU
2.导入数据
pathlib.Path()函数:将字符串型文件路径转化为对象
glob()方法:获取路径对象下的所有文件夹路径
list():以列表形式存储
split()函数:将data_paths中每个文件路径进行切割,获取每个文件的名称
total_data.class_to_idx:存储数据集类别与对应数字索引。
在PyTorch的ImageFolder数据加载器中,根据数据集文件夹的组织结构,每个文件夹代表一个类别,class_to_idx字典将每个类别名称映射为一个数字索引。
3.划分数据集
torch.utils.data.DataLoader():允许小批次迭代数据集
二、模型构建
构建简单的CNN网络
三、训练模型
1.设置超参数
2.编写训练函数
3.编写测试函数
测试函数和训练函数大致相同,但是由于不进行梯度下降对网络权重进行更新,所以不需要传入优化器
4.正式训练
四、结果可视化
1.Loss与Accuracy图
2.指定图片进行预测
torch.squeeze():对数据的维度进行压缩,去掉维数为1的的维度
torch.unsqueeze():对数据维度进行扩充,给指定位置加上维数为一的维度