記事ディレクトリ
序文
プロジェクトアドレス: 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
次の場所に - 完全なモデルは
backbone
、neck
、head
、によって形成されます。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.txt
annotations.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.txt
annotations.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 をフォローすることを忘れないでください~