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
ご質問がございましたら、コメント欄にてお気軽にお問い合わせください。!!