文章图片
文章目录
- 前言
- 1. 数据集制作
-
- 1.1 标签文件制作
- 1.2 数据集划分
- 1.3 数据集信息文件制作
- 2. 修改参数文件
- 3. 训练
- 4. 评估
前言 【图像分类|保姆级使用PyTorch训练与评估自己的Wide ResNet网络教程】项目地址:https://github.com/Fafa-DL/Awesome-Backbones
操作教程:https://www.bilibili.com/video/BV1SY411P7Nd
Wide ResNet原论文:点我跳转
1. 数据集制作 1.1 标签文件制作
- 将项目代码下载到本地
文章图片
- 本次演示以花卉数据集为例,目录结构如下:
├─flower_photos
│├─daisy
││100080576_f52e8ee070_n.jpg
││10140303196_b88d3d6cec.jpg
││...
│├─dandelion
││10043234166_e6dd915111_n.jpg
││10200780773_c6051a7d71_n.jpg
││...
│├─roses
││10090824183_d02c613f10_m.jpg
││102501987_3cdb8e5394_n.jpg
││...
│├─sunflowers
││1008566138_6927679c8a.jpg
││1022552002_2b93faf9e7_n.jpg
││...
│└─tulips
││100930342_92e8746431_n.jpg
││10094729603_eeca3f2cb6.jpg
││...
- 在
Awesome-Backbones/datas/
中创建标签文件annotations.txt
,按行将类别名 索引
写入文件;
daisy 0
dandelion 1
roses 2
sunflowers 3
tulips 4
文章图片
1.2 数据集划分
- 打开
Awesome-Backbones/tools/split_data.py
- 修改
原始数据集路径
以及划分后的保存路径
,强烈建议划分后的保存路径datasets
不要改动,在下一步都是默认基于文件夹进行操作
init_dataset = 'A:/flower_photos'
new_dataset = 'A:/Awesome-Backbones/datasets'
- 在
Awesome-Backbones/
下打开终端输入命令:
python tools/split_data.py
- 得到划分后的数据集格式如下:
├─...
├─datasets
│├─test
││├─daisy
││├─dandelion
││├─roses
││├─sunflowers
││└─tulips
│└─train
│├─daisy
│├─dandelion
│├─roses
│├─sunflowers
│└─tulips
├─...
1.3 数据集信息文件制作
- 确保划分后的数据集是在
Awesome-Backbones/datasets
下,若不在则在get_annotation.py
下修改数据集路径;
datasets_path= '你的数据集路径'
- 在
Awesome-Backbones/
下打开终端输入命令:
python tools/get_annotation.py
- 在
Awesome-Backbones/datas
下得到生成的数据集信息文件train.txt
与test.txt
文章图片
- 每个模型均对应有各自的配置文件,保存在
Awesome-Backbones/models
下 - 由
backbone
、neck
、head
、head.loss
构成一个完整模型 - 找到Wide ResNet参数配置文件,可以看到
所有支持的类型
都在这
文章图片
- 在
model_cfg
中修改num_classes
为自己数据集类别大小 - 按照自己电脑性能在
data_cfg
中修改batch_size
与num_workers
- 若有预训练权重则可以将
pretrained_weights
设置为True
并将预训练权重的路径赋值给pretrained_weights
- 若需要冻结训练则
freeze_flag
设置为True
,可选冻结的有backbone, neck, head - 在
optimizer_cfg
中修改初始学习率,根据自己batch size
调试,若使用了预训练权重
,建议学习率调小
- 学习率更新详见
core/optimizers/lr_update.py
- 更具体配置文件修改可参考配置文件解释
- 确认
Awesome-Backbones/datas/annotations.txt
标签准备完毕 - 确认
Awesome-Backbones/datas/
下train.txt
与test.txt
与annotations.txt
对应 - 选择想要训练的模型,在
Awesome-Backbones/models/
下找到对应配置文件,以efficientnet_b0为例 - 按照
配置文件解释
修改参数 - 在
Awesome-Backbones
打开终端运行
python tools/train.py models/wide_resnet/wide_resnet50.py
4. 评估
- 确认
Awesome-Backbones/datas/annotations.txt
标签准备完毕 - 确认
Awesome-Backbones/datas/
下test.txt
与annotations.txt
对应 - 在
Awesome-Backbones/models/
下找到对应配置文件 - 在参数配置文件中
修改权重路径
,其余不变
ckpt = '你的训练权重路径'
- 在
Awesome-Backbones
打开终端运行
python tools/evaluation.py models/wide_resnet/wide_resnet50.py
推荐阅读
- 神经网络|【干货】新手炼丹经验总结
- 物联网专栏|图神经网络驱动的交通预测技术(探索与挑战)
- 深度学习|神经网络调参经验总结
- 炼丹经验贴|Deep Learning炼丹经验总结——减少对设备性能消耗的方法
- 炼丹笔记|深度学习炼丹失败率高达87%的TOP10原因
- Python如何比较数据框列和2D列表()
- 如何从JSON中提取嵌套的值()
- tuple()增加运行时间这么多是否正常()
- 使用JMESPath根据另一个查询结果过滤列表