純粋なターゲット検出を実現(再現)するSwin Transformer

1. 環境設定(CUDA10.2、python3.6)

①Swin Transformerの純粋なターゲット検出用の新しい仮想環境を作成します

conda create --name swin python=3.6 -y
conda activate swin

仮想環境名とPythonバージョン3.6~3.8は自分で変更できます

②torchをインストールします。個人テストにはtorch1.5.0のバージョンを使用します。あまり高くないほうが良いです。

トーチ1.5.0、トーチビジョン0.6.0

pip install torch==1.5.0 torchvision==0.6.0 

③mmcv-fullをインストールする

インストール方法は 2 つあり、どちらも正常にインストールされており、自分でインストールすることもできます。

(1)

pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html

(2)

pip install -U openmim
mim install mmcv-full==1.7.0

④pycocotoolsをインストールする

sudo apt-get install cython
get clone https://github.com/cocodataset/cocoapi
make
pip install pycocotools

インストールできない場合は、以下の詳しいインストール方法をご参照ください。 

pycocotools ライブラリのインストール (個人的にテスト、解決済み)

⑤apexのインストール(何度もインストールして失敗しましたが完全に解決しました)

(1) ご自身のトーチが 1.8.0 以上の場合は、次の方法でインストールします。

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext

(2) 自分のトーチが 1.8.0 未満の場合は、次の方法でインストールします。

git clone https://github.com/NVIDIA/apex.git
cd apex
git reset --hard 3fe10b5597ba14a748ebb271a6ab97c09c5701ac
python setup.py install --cuda_ext --cpp_ext

 ⑥MM検出のインストール

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .

上記はインストールが難しい必要なライブラリです。他のライブラリに足りないものは何でもインストールできます。

2. 基本的な変更パラメータ

①カテゴリ名を変更する

1 つ: パス /mmdet/datasets/coco.py CLASSES  の 23 行目
2 つ: パス /mmdet/core/evaluation/class_names.py の 67 行目coco_classes  
は、独自のデータセットのカテゴリに変更されます
3 つ: setevaluation = dict(interval= 1, metric='bbox') から
評価 = dict(interval=1, metric='bbox', save_best='auto' )

② カテゴリ数を変更する

パス /configs/base/models/mask_rcnn_swin_fpn.py のnum_classesには、54 行目と 73 行目の 2 つの場所もあります。これらは、独自のデータセット内のカテゴリの数に変更されます。

③データセットのパスを変更する

パス /configs/base/datasets/coco_detection.py、2行目のdata_rootデータセットのルート ディレクトリ パス、 8 行目のimg_scaleは必要に応じて変更できます。また、次のトレインの特定のパス ann_file、test 、および valデータセットは、独自のデータセットに従って変更できます。

31行目のsamples_per_gpuはバッチサイズを示します。大きすぎるとメモリがオーバーフローします。32行
目のworkers_per_gpuは各GPUに対応するスレッド数を示します。必要に応じて2、4、6、8を変更します。

④トレーニングパラメータを変更する

パス /configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x(1x)-coco.py:
69 行目のmax_epochs必要に応じて、
3 行目の「.../base/datasets/coco_instance.py」を「.../base/datasets/coco_detection」に変更します。 .py'
行 69 max_epochs を必要に応じて変更

⑤ログパラメータの変更

パス /configs/base/default_runtime.py 内:  
行 1 の間隔 = 1 は、エポックごとに重み情報を保存することを意味します  
行 4の間隔 = 50 は、 50 回ごとにログ情報を出力することを意味します  
行 14 のload_from は、トレーニングされた重みをロードすることを意味します パス、設定できません。トレーニング中にターミナルで与えられます

⑥純粋なターゲット検出を実装しているため、マスク部分をコメントアウトします。

次のように、mask_rcnn_swin_fpn.py ファイルの 67 ~ 79 行目の内容をコメント アウトし、括弧内と一致することを忘れないでください。

        mask_roi_extractor=dict(
            type='SingleRoIExtractor',
            roi_layer=dict(type='RoIAlign', output_size=14, sampling_ratio=0),
            out_channels=256,
            featmap_strides=[4, 8, 16, 32]),
        mask_head=dict(
            type='FCNMaskHead',
            num_convs=4,
            in_channels=256,
            conv_out_channels=256,
            num_classes=80,
            loss_mask=dict(
                type='CrossEntropyLoss', use_mask=True, loss_weight=1.0))

3. トレーニングテストコマンド

①トレーニングコマンド

シングル カード トレーニング コマンド: sudo python tools/train.py configs/swin/select 対応する構成ファイルを選択します。たとえば、

sudo python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py --options "classwise=True"

マルチカード トレーニング コマンド: sudo tools/dist_train.sh configs/swin/select 対応する構成ファイル内の GPU の数を選択します。たとえば、

sudo tools/dist_train.sh configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py 6 --options "classwise=True"

上記の 6 は GPU の数を表しており、サーバー構成に応じて変更できます。

②テストコマンド

テスト イメージ コマンド: sudo python Demon/image_demo.py イメージ パス configs/swin/ 対応する構成ファイルを選択します。 重みに対応するパスを選択します。たとえば、次のようになります。

sudo python demo/image_demo.py demo/demo.jpg configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth

ビデオのテスト コマンド: sudo python Demon/video_demo.py ビデオ パス configs/swin/ 対応する構成ファイルを選択します。 重みに対応するパスを選択します。 --device cuda:0 --out パス/保存名を保存します。例:

sudo python demo/video_demo.py demo/CT.mp4 configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth --device cuda:0 --out predict/CT.mp4

ご質問がございましたら、コメント欄にてお気軽にお問い合わせください。

おすすめ

転載: blog.csdn.net/weixin_42715977/article/details/130167078