问题描述
要解决的是一个医学图像的二分类问题,有AK
和SK
两种病症,根据一定量数据,进行训练,对图像进行预测。
给定图片数据的格式:
解决思路
整体上采用迁移学习来训练神经网络,使用InceptionV3结构,框架采用keras.
具体思路:
- 读取图片数据,保存成
.npy
格式,方便后续加载 - 标签采用one-hot形式,由于标签隐藏在文件夹命名中,所以需要自行添加标签,并保存到
.npy
文件中,方便后续加载 - 将数据分为训练集、验证集、测试集
- 使用keras建立InceptionV3基本模型,不包括顶层,使用预训练权重,在基本模型的基础上自定义几层神经网络,得到最后的模型,对模型进行训练
- 优化模型,调整超参数,提高准确率
- 在测试集上对模型进行评估,使用精确率、召回率
- 对单张图片进行预测,并输出每种类别的概率
代码结构
具体代码
1. path.py ==> 定义项目根路径
1 | import os |
2. load_datasets.py ==> 读取原始数据,生成.npy文件
1 | import os |
3. load_train_test_data.py ==> 划分训练集、验证集、测试集
1 | from sklearn.model_selection import StratifiedKFold |
4. train.py ==> 建立网络模型,进行训练
1 | import os |
5. eval.py ==> 在测试集上对模型进行评估
1 | import os |
6. predict.py ==> 对单张图片进行预测
1 | import os |
运行结果
1. 训练结果
2. 评估结果
3. 预测结果
知识点总结
- 如何加载实际数据,如何保存成npy文件,如何打乱数据,如何划分数据,如何进行交叉验证
- 如何使用keras进行迁移学习
- keras中数据增强、回调函数的使用,回调函数涉及:学习速率调整、保存最好模型、tensorboard可视化
- 如何使用sklearn计算准确率,精确率,召回率,F1_score
- 如何对单张图片进行预测,并打印分类概率
- 如何指定特定GPU训练,如何指定使用GPU的内存情况