環境
- CUDA V10.0.130
- Python 3.7.3
- gcc 7.3.0
- Pytorch 1.2.0
セットアップ
git clone https://github.com/dbolya/yolact.git
cd yolact
pip install opencv-python pillow==6.2.1 pycocotools matplotlib
pip install cython
pip install torch==1.2.0 torchvision==0.4.0 # CUDA10.0で安定
yolact++を使用する場合、DCNv2をコンパイル
cd external/DCNv2
python setup.py develop
学習済みモデルで推論
-
学習済みモデルをダウンロード
https://drive.google.com/file/d/15id0Qq5eqRbkD-N3ZjDZXdCvRyIaHpFB/view?usp=sharing -
推論を実行
- 画像
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --images=path/to/input/folder:path/to/output/folder
- 動画
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --video_multiframe=4 --video=input_video.mp4:output_video.mp4
オリジナルデータで学習
- coco形式でデータセットを準備
dataset_name/
├── test
│ ├── test.json
│ └── images/
└── train
├── train.json
└── images/
-
学習前のモデルをダウンロード
-
configファイルを修正(2箇所)
まずデータベース定義を記入して、data/config.pytest_dataset = dataset_base.copy({ 'name': 'Test Dataset', 'train_images': '~/dataset_name/train/images/', 'train_info': '~/dataset_name/train/train.json', 'valid_images': '~/dataset_name/test/images/', 'valid_info': '~/dataset_name/test/test.json', 'has_gt': True, 'class_names': ('class_1', 'class_2', 'class_3', ...), # クラス名を定義 'label_map': {'class_id_1': 1, 'class_id_2': 2, ...} # class idの辞書 })
次にデフォルトのconfigファイルを変更して終了。
data/config.pyyolact_base_config = coco_base_config.copy({ 'name': 'yolact_base', # Dataset stuff # 'dataset': coco2017_dataset, # default 'dataset': test_dataset, # Original Dataset # 'num_classes': len(coco2017_dataset.class_names) + 1, 'num_classes': len(test_dataset.class_names) + 1, })
-
学習
- モデルに応じてconfigは変更
- save_folder内に初期モデル(resnet50-19c8e357.pth)を格納
python train.py --config=yolact_plus_resnet50_config --save_folder=/path/to/workspace/ --save_interval=1000
-
モデル精度評価
- 以下のコードで評価できる。
-
--output_coco_json
を末尾につけると、~/results/以下にjsonファイルを生成できる。
python eval.py --trained_model=weights/yolact_base_54_800000.pth