项目地址:https://github.com/Fafa-DL/Awesome-Backbones
操作教程:https://www.bilibili.com/video/BV1SY411P7Nd
ShuffleNetV2原论文:点我跳转
如果你以为该仓库仅支持训练一个模型那就大错特错了,我在项目地址放了目前支持的35种模型(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),使用方式一模一样,一个仓库涵盖上述全部模型,且满足了大部分图像分类需求,进度快的同学甚至论文已经在审了
最新Windows配置VSCode与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
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
pip install -r requirements.txt
python tools/single_test.py datas/cat-dog.png models/mobilenet/mobilenet_v3_small.py --classes-map datas/imageNet1kAnnotation.txt
将项目代码下载到本地
本次演示以花卉数据集为例,目录结构如下:
├─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
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
├─...
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
构成一个完整模型所有支持的类型
都在这model_cfg
中修改num_classes
为自己数据集类别大小data_cfg
中修改batch_size
与num_workers
pretrained_weights
设置为True
并将预训练权重的路径赋值给pretrained_weights
freeze_flag
设置为True
,可选冻结的有backbone, neck, headoptimizer_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/
下找到对应配置文件,以shufflenet_v1为例配置文件解释
修改参数Awesome-Backbones
打开终端运行python tools/train.py models/shufflenet/shufflenet_v2.py
Awesome-Backbones/datas/annotations.txt
标签准备完毕Awesome-Backbones/datas/
下test.txt
与annotations.txt
对应Awesome-Backbones/models/
下找到对应配置文件修改权重路径
,其余不变
ckpt = '你的训练权重路径'
Awesome-Backbones
打开终端运行python tools/evaluation.py models/shufflenet/shufflenet_v2.py
Awesome-Backbones
打开终端运行python tools/single_test.py datasets/test/dandelion/14283011_3e7452c5b2_n.jpg models/shufflenet/shufflenet_v2.py
至此完毕,实在没运行起来就去B站看我手把手带大家运行的视频教学吧~
除开上述,我还为大家准备了其他一定用到的操作教程,均放在了GitHub项目首页,为了你们方便为也粘贴过来
有任何更新均会在Github与B站进行通知,记得Star与三连关注噢~