栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用PyTorch训练与评估自己的AlexNet网络教程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用PyTorch训练与评估自己的AlexNet网络教程

文章目录
  • 前言
  • 1. 数据集制作
    • 1.1 标签文件制作
    • 1.2 数据集划分
    • 1.3 数据集信息文件制作
  • 2. 修改参数文件
  • 3. 训练
  • 4. 评估

前言

项目地址:https://github.com/Fafa-DL/Awesome-Backbones

操作教程:https://www.bilibili.com/video/BV1SY411P7Nd

AlexNet原论文:点我跳转

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

2. 修改参数文件
  • 每个模型均对应有各自的配置文件,保存在Awesome-Backbones/models下
  • 由backbone、neck、head、head.loss构成一个完整模型
  • 找到AlexNet参数配置文件
  • 在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
  • 更具体配置文件修改可参考配置文件解释
3. 训练
  • 确认Awesome-Backbones/datas/annotations.txt标签准备完毕
  • 确认Awesome-Backbones/datas/下train.txt与test.txt与annotations.txt对应
  • 选择想要训练的模型,在Awesome-Backbones/models/下找到对应配置文件
  • 按照配置文件解释修改参数
  • 在Awesome-Backbones打开终端运行
python tools/train.py models/alexnet/alexnet_.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/alexnet/alexnet_.py
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号