保姆级使用PyTorch训练与评估自己的EVA网络教程
创始人
2024-06-01 00:22:17
0

在这里插入图片描述

文章目录

  • 前言
  • 0. 环境搭建&快速开始
  • 1. 数据集制作
    • 1.1 标签文件制作
    • 1.2 数据集划分
    • 1.3 数据集信息文件制作
  • 2. 修改参数文件
  • 3. 训练
  • 4. 评估
  • 5. 其他教程

前言

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

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

EVA原论文:点我跳转

如果你以为该仓库仅支持训练一个模型那就大错特错了,我在项目地址放了目前支持的42种模型(LeNet5、AlexNet、VGG、DenseNet、ResNet、Wide-ResNet、ResNeXt、SEResNet、SEResNeXt、RegNet、MobileNetV2、MobileNetV3、ShuffleNetV1、ShuffleNetV2、EfficientNet、RepVGG、Res2Net、ConvNeXt、HRNet、ConvMixer、CSPNet、Swin-Transformer、Vision-Transformer、Transformer-in-Transformer、MLP-Mixer、DeiT、Conformer、T2T-ViT、Twins、PoolFormer、VAN、HorNet、EfficientFormer、Swin Transformer V2、MViT V2、MobileViT、DaViT、RepLKNet、BEiT、EVA、MixMIM、EfficientNetV2),使用方式一模一样。且目前满足了大部分图像分类需求,进度快的同学甚至论文已经在审了

0. 环境搭建&快速开始

  • 这一步我也在最近录制了视频

最新Windows配置VSCode与Anaconda环境

『图像分类』从零环境搭建&快速开始

  • 不想看视频也将文字版放在此处。建议使用Anaconda进行环境管理,创建环境命令如下
conda create -n [name] python=3.6 其中[name]改成自己的环境名,如[name]->torch,conda create -n torch python=3.6
  • 我的测试环境如下
torch==1.7.1
torchvision==0.8.2
scipy==1.4.1
numpy==1.19.2
matplotlib==3.2.1
opencv_python==3.4.1.15
tqdm==4.62.3
Pillow==8.4.0
h5py==3.1.0
terminaltables==3.1.0
packaging==21.3
  • 首先安装Pytorch。建议版本和我一致,进入Pytorch官网,点击 install previous versions of PyTorch,以1.7.1为例,官网给出的安装如下,选择合适的cuda版本
# CUDA 11.0
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html# CUDA 10.2
pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2# CUDA 10.1
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html# CUDA 9.2
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html# CPU only
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
  • 安装完Pytorch后,再运行
pip install -r requirements.txt
  • 下载MobileNetV3-Small权重至datas
  • Awesome-Backbones文件夹下终端输入
python tools/single_test.py datas/cat-dog.png models/mobilenet/mobilenet_v3_small.py --classes-map datas/imageNet1kAnnotation.txt

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.txttest.txt
    在这里插入图片描述

2. 修改参数文件

  • 每个模型均对应有各自的配置文件,保存在Awesome-Backbones/models

  • backboneneckheadhead.loss构成一个完整模型

  • 找到EVA参数配置文件,可以看到所有支持的类型都在这,且每个模型均提供预训练权重
    在这里插入图片描述

  • model_cfg中修改num_classes为自己数据集类别大小

  • 按照自己电脑性能在data_cfg中修改batch_sizenum_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.txttest.txtannotations.txt对应
  • 选择想要训练的模型,在Awesome-Backbones/models/下找到对应配置文件,以eva_g _p14_headless为例
  • 按照配置文件解释修改参数
  • Awesome-Backbones路径下打开终端运行
python tools/train.py models/eva/eva_g _p14_headless.py

在这里插入图片描述

4. 评估

  • 确认Awesome-Backbones/datas/annotations.txt标签准备完毕
  • 确认Awesome-Backbones/datas/test.txtannotations.txt对应
  • Awesome-Backbones/models/下找到对应配置文件
  • 在参数配置文件中修改权重路径其余不变
ckpt = '你的训练权重路径'
  • Awesome-Backbones路径下打开终端运行
python tools/evaluation.py models/eva/eva_g _p14_headless.py

在这里插入图片描述

  • 单张图像测试,在Awesome-Backbones打开终端运行
python tools/single_test.py datasets/test/dandelion/14283011_3e7452c5b2_n.jpg models/eva/eva_g _p14_headless.py

在这里插入图片描述
至此完毕,实在没运行起来就去B站看我手把手带大家运行的视频教学吧~

5. 其他教程

除开上述,我还为大家准备了其他一定用到的操作教程,均放在了GitHub项目首页,为了你们方便为也粘贴过来

  • 环境搭建
  • 数据集准备
  • 配置文件解释
  • 训练
  • 模型评估&批量检测/视频检测
  • 计算Flops&Params
  • 添加新的模型组件
  • 类别激活图可视化
  • 学习率策略可视化

有任何更新均会在Github与B站进行通知,记得Star与三连关注噢~

相关内容

热门资讯

你的晚安是我的早安是什么歌曲 你的晚安是我的早安是什么歌曲苏天伦《你的早安是我的晚安》“你的晚安是我的早安”是单小源的歌曲《东京遇...
积极进取的小故事 积极进取的小故事现代的普通人,不要名人的。不能与别人重复,尽快回答   啄木鸟的故事       啄...
熊出没之探险日记3什么时候播出... 熊出没之探险日记3什么时候播出?熊出没之探险日记3,春节前播放。熊出没只是探险日记三2020年5月4...
谁知道所有有关“七”的歌?拜托... 谁知道所有有关“七”的歌?拜托了各位 谢谢就是歌曲名里有“七”这个字的!谢谢七月七迅谈日晴 看我七十...
求一本小说 女主穿越了三次 每... 求一本小说 女主穿越了三次 每次都在福临身边 后来怀孕了孩子被打掉了那个 女主叫什么雯?那个女主就是...
如果记忆不说话,流年也会开出花... 如果记忆不说话,流年也会开出花的基本信息书 名:《如果记忆不弯饥好说话,流年也会开出花》埋铅 作 者...
你好,旧时光漫画版在哪里可以看... 你好,旧时光漫画版在哪里可以看?暂时在绘心上连载
一首英文歌,男的组合唱的,MV... 一首英文歌,男的组合唱的,MV是一个婚礼的过程。求歌名。是不是darin的can'tstoplove...
为什么很多人喜欢用胶片相机? 为什么很多人喜欢用胶片相机?有一种情怀叫做“怀旧“吧,现在数码相机越来越普遍了,已经到了”全民摄影“...
女主先爱上男主,男主却不喜欢女... 女主先爱上男主,男主却不喜欢女主或者是另有所爱,最后女主男主还是在一起的穿越小说。有木有再生缘:我的...
爱情失恋伤感句子 爱情失恋伤感句子越是美好的从前,越幸福的曾经,现在只能带来锥心的疼痛,痛到撕心裂肺,肝肠寸断,终于痛...
24岁穿这个会不会显老 24岁穿这个会不会显老有点显老,这个颜色款式,颜色有点暗,没有活力,属于那种气质佳,长得高雅的女人,...
哈尔的移动城堡英语版 哈尔的移动城堡英语版可以发给我吗度盘~请查收~
秦时明月之万里长城什么时候播 秦时明月之万里长城什么时候播据说是今年暑假开播别急,官网什么的信他你就输了,12年之前底应该会出,杭...
孩子会得抽动症吗? 孩子会得抽动症吗?我天生的气性比较大,有时跟别人斗嘴时候就会手脚哆嗦,麻木,我问一下这是不是抽动症就...
亨德尔一生为音乐献出了怎样的贡... 亨德尔一生为音乐献出了怎样的贡献?亨德尔一生写了歌剧41部,清唱剧21部,以及大量的管乐器与弦乐器的...
礼仪起源和发展的经典故事? 礼仪起源和发展的经典故事?一、礼仪的起源;1、天神生礼仪;2、礼为天地人的统一体;3、礼产生于人的自...
描写桂林山水的句子有哪些? 描写桂林山水的句子有哪些?天下风光数桂林有杨万里的“梅花五岭八桂林,青罗带绕碧玉簪”;有邹应龙的“无...
避免与强敌正面对决的成语 避免与强敌正面对决的成语避免与强敌正面对决的成语避实就虚 【近义】避重就轻、避难就易、声东击西【反义...
多愁善感类的成语 多愁善感类的成语心细如发【解释】:极言小心谨慎,考虑周密。亦作“心细于发”。【出自】:吴梅《题天香石...