Nanny level は PyTorch を使用して独自の DaViT ネットワーク チュートリアルをトレーニングおよび評価します

ここに画像の説明を挿入

序文

プロジェクトアドレス: https://github.com/Fafa-DL/Awesome-Backbones

操作チュートリアル:https://www.bilibili.com/video/BV1SY411P7Nd

DaViT オリジナル論文:クリックしてジャンプ

ウェアハウスが 1 つのモデルのトレーニングのみをサポートしていると思われる場合、それは大きな間違いです.現在サポートされている 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公式 Web サイトに入り、 をクリックし install previous versions of PyTorch、1.7.1 を例として、公式 Web サイトで提供されているインストールは次のとおりです。適切な 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-小さな重みをデータ
  • 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.txt次の場所にあります。test.txt
    ここに画像の説明を挿入

2. パラメータファイルの修正

  • 各モデルは独自の構成ファイルに対応し、Awesome-Backbones/models次の場所に
  • 完全なモデルはbackboneneckheadによって形成されます。head.loss
  • DaViT パラメータ設定ファイルを見つけてください。所有支持的类型ここですべて見ることができます。且每个模型均提供预训练权重
    ここに画像の説明を挿入
  • 独自のデータ セット カテゴリ サイズに変更model_cfgします。num_classes
  • お使いのパソコンの性能に合わせて、data_cfg改造batch_size・改造してください。num_workers
  • トレーニング前の重みがある場合は、pretrained_weightsそれを設定してTrue、トレーニング前の重みのパスをに割り当てることができます。pretrained_weights
  • トレーニングを凍結する必要がある場合は、freeze_flag に設定しますTrue。凍結のオプションは、バックボーン、ネック、ヘッドです。
  • で初期学習率を変更します。独自のデバッグoptimizer_cfgに従ってbatch size若使用了预训练权重推奨されます。学习率调小
  • 詳細については、学習率の更新を参照しcore/optimizers/lr_update.py、ビデオ「画像分類」の学習率更新戦略|オプティマイザーも用意してください。
  • より具体的な構成ファイルの変更については、構成ファイルの説明を参照し、ビデオ「画像分類」構成ファイルの補足説明も用意してください。

3. トレーニング

  • Awesome-Backbones/datas/annotations.txtラベルの準備ができていることを確認する
  • Awesome-Backbones/datas/_確認しtrain.txt対応するtest.txtannotations.txt
  • トレーニングするモデルを選択し、Awesome-Backbones/models/以下の。例として davit_tiny を取り上げます
  • に従って配置文件解释パラメータを変更します
  • Awesome-Backbonesパスでターミナルを開き、実行します
python tools/train.py models/davit/davit_tiny.py

ここに画像の説明を挿入

4. 評価

  • Awesome-Backbones/datas/annotations.txtラベルの準備ができていることを確認する
  • 確認し対応Awesome-Backbones/datas/_test.txtannotations.txt
  • 以下でAwesome-Backbones/models/対応する構成ファイルを見つけます。
  • パラメータ設定ファイルで修改权重路径其余不变
ckpt = '你的训练权重路径'
  • Awesome-Backbonesパスでターミナルを開き、実行します
python tools/evaluation.py models/davit/davit_tiny.py

ここに画像の説明を挿入

  • 単一イメージ テストAwesome-Backbones、オープン ターミナルで実行
python tools/single_test.py datasets/test/dandelion/14283011_3e7452c5b2_n.jpg models/davit/davit_tiny.py

ここに画像の説明を挿入
これまでのところ、走っていない場合は、ステーションBに行って、私が走るように案内するビデオを見てください〜

5. その他のチュートリアル

上記に加えて、必要な操作チュートリアルも用意しました。それらはすべて GitHub プロジェクトのホームページに配置されており、便宜上ここに貼り付けられます。

更新は Github と Station B で通知されます。Star と Sanlian をフォローすることを忘れないでください~

おすすめ

転載: blog.csdn.net/zzh516451964zzh/article/details/129442263