mmdetection使用ガイド
主にターゲット検出に関する使用記録,mmdetectionには分類ネットワーク,分割などの機能があるが,このブログは主にターゲット検出に注目し,その後分割に関わるともう1つのブログで記録する.
1.インストール
mmdetectionに必要な環境はcuda 10.0をベースとした環境であり、ドライババージョンにも一定の要求があり、cuda 8.0の私は終始配通せず、主なエラーはcudaに関連している.
インストール手順については、次を参照してください.https://blog.csdn.net/DD_PP_JJ/article/details/103055629
大体環境のインストールが完了したら、mmdetectionの構成を開始します.オペレーティングシステム:Linux Python 3.5+ PyTorch 1.0+またはPyTorch-nightly CUDA 9.0+ NCCL 2+ GCC 4.9+
次にcdはmmdetectionに入り、実行します.
コンパイルを行い、mmdetectionが別のマシンからコピーされた場合、buildフォルダが存在する限り、エラーが発生する可能性があります.直接
2.VOC形式データセットの準備
具体的なデータセットの構築は以下のとおりです. https://www.cnblogs.com/pprp/p/10863496.html#データセット構築 https://blog.csdn.net/weicao1990/article/details/93484603
いくつかのスクリプトをチェックして生成するライブラリがあります.
https://github.com/pprp/voc2007_for_yolo_torch
3.パーソナライズされた構成
トレーニングの前に、まず自分のデータセットに基づいてプロファイルを変更します.変更カテゴリ数num_classes=カテゴリ数+1 データセットアドレスの変更: データセットvoc.pyファイルの変更: 運転パラメータ処理: 4.訓練命令
トレーニングフォーマット:
オプションのパラメータ:
-validate:1 epochおきにevaluationを行い、mapなどの指標を測定します.
–work_dir:訓練の結果が保存される場所を指定します.一般的にデフォルトでいいです.
–resume_from:対応するウェイトファイルに指定する必要があります
–gpus:どのgpuを使用するかを指定します.
-autoscale-lr:GPU個数に応じた自動処理learning rate
例えば、cascade R-CNNを訓練して目標検出を行う.
5.テストコマンド
オプションのパラメータ:
-out:出力結果ファイル、results.pkl
–json_out:結果ファイルを出力し、接尾辞は不要
-eval:[‘proposal’,‘proposal_fast’,‘bbox’,‘segm’,‘keypoints’]のいずれかのモードを選択
-show:絵が飛び出して見せます
-tmpdir:いくつかの結果をtmpdirに書き込む
VOCデータセットでは、以下の方法でテストする必要があります.
結果をpklフォルダに出力し、計算を行います.
次の結果が得られます.
6.ツール
最初の取り付け:具体的なkeysは、jsonファイルにこのキー値が存在するかどうかを確認します. 分類誤差 を描く.は分類と回帰結果を描きpdf に出力する.同じ図で2つのモデルmap を比較する平均訓練速度 を計算するモデルトレーニングに必要なパラメータを取得:
7.問題
テスト中にエラーが発生しました.
File “tools/test.py”, line 224, in main() File “tools/test.py”, line 215, in main results2json(dataset, outputs, args.json_out) File “/home/cie320/mmdetection/mmdet/core/evaluation/coco_utils.py”, line 203, in results2json json_results = det2json(dataset, results) File “/home/cie320/mmdetection/mmdet/core/evaluation/coco_utils.py”, line 149, in det2json img_id = dataset.img_ids[idx] AttributeError: ‘VOCDataset’ object has no attribute ‘img_ids’
呼び出されたのはcocoで、これはあなたのコマンドの問題で、あなたは上記の方法を採用して、2つのステップに分けて計算するべきです.様results.pklファイル voc_を実行します.evalを解析し,最終結果を得た.
1.インストール
mmdetectionに必要な環境はcuda 10.0をベースとした環境であり、ドライババージョンにも一定の要求があり、cuda 8.0の私は終始配通せず、主なエラーはcudaに関連している.
インストール手順については、次を参照してください.https://blog.csdn.net/DD_PP_JJ/article/details/103055629
大体環境のインストールが完了したら、mmdetectionの構成を開始します.
次にcdはmmdetectionに入り、実行します.
python setup.py develop
コンパイルを行い、mmdetectionが別のマシンからコピーされた場合、buildフォルダが存在する限り、エラーが発生する可能性があります.直接
rm -rf build
、buildフォルダを削除して再実行すれば、スムーズに通過できる可能性があります.2.VOC形式データセットの準備
具体的なデータセットの構築は以下のとおりです.
いくつかのスクリプトをチェックして生成するライブラリがあります.
https://github.com/pprp/voc2007_for_yolo_torch
3.パーソナライズされた構成
トレーニングの前に、まず自分のデータセットに基づいてプロファイルを変更します.
dict(
type='SharedFCBBoxHead',
num_fcs=2,
in_channels=256,
fc_out_channels=1024,
roi_feat_size=7,
num_classes=2, # 81 -> 2
target_means=[0., 0., 0., 0.],
target_stds=[0.05, 0.05, 0.1, 0.1],
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0)),
# dataset settings
dataset_type = 'VOCDataset' # ,'CocoDataset' -> 'VOCDataset'
data_root = 'data/VOCdevkit/' # ,'data/coco/' -> 'data/VOCdevkit'
train=dict(
type=dataset_type,
ann_file=data_root + 'VOC2007/ImageSets/Main/train.txt', # data_root + 'annotations/instances_train2017.json' -> data_root + 'VOC2007/ImageSets/Main/train.txt'
img_prefix=data_root + 'VOC2007/', # 11/11, TC data_root + 'train2017/' -> data_root + 'VOC2007/'
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'VOC2007/ImageSets/Main/val.txt', # data_root + 'annotations/instances_train2017.json' -> data_root + 'VOC2007/ImageSets/Main/val.txt'
img_prefix=data_root + 'VOC2007/', # 11/11, TC data_root + 'val2017/' -> data_root + 'VOC2007/'
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'VOC2007/ImageSets/Main/test.txt', # data_root + 'annotations/instances_train2017.json' -> data_root + 'VOC2007/ImageSets/Main/test.txt'
img_prefix=data_root + 'VOC2007/', # data_root + 'test2017/' -> data_root + 'VOC2007/'
pipeline=test_pipeline))
@DATASETS.register_module
class VOCDataset(XMLDataset):
CLASSES = ('pos',) #
# ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car',
# 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse',
# 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train',
# 'tvmonitor')
def __init__(self, **kwargs):
super(VOCDataset, self).__init__(**kwargs)
if 'VOC2007' in self.img_prefix:
self.year = 2007
elif 'VOC2012' in self.img_prefix:
self.year = 2012
else:
raise ValueError('Cannot infer dataset year from img_prefix')
total_epochs = 20 # epoch
dist_params = dict(backend='nccl') #
log_level = 'INFO' #
work_dir = './work_dirs/libra_faster_rcnn_x101_64x4d_fpn_1x' # log
load_from = None # ,None
resume_from = None # ,None
workflow = [('train', 1)]
# ======================================================
# ,[('train', 1)] , ;
# [('train', 2), ('val', 1)] 2 epoch ,1 epoch
# ======================================================
トレーニングフォーマット:
python tools/train.py ${config_files}
オプションのパラメータ:
-validate:1 epochおきにevaluationを行い、mapなどの指標を測定します.
–work_dir:訓練の結果が保存される場所を指定します.一般的にデフォルトでいいです.
–resume_from:対応するウェイトファイルに指定する必要があります
–gpus:どのgpuを使用するかを指定します.
-autoscale-lr:GPU個数に応じた自動処理learning rate
例えば、cascade R-CNNを訓練して目標検出を行う.
python tools/train.py configs/cascade_rcnn_r101_fpn_1x.py --validate
5.テストコマンド
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show]
オプションのパラメータ:
-out:出力結果ファイル、results.pkl
–json_out:結果ファイルを出力し、接尾辞は不要
-eval:[‘proposal’,‘proposal_fast’,‘bbox’,‘segm’,‘keypoints’]のいずれかのモードを選択
-show:絵が飛び出して見せます
-tmpdir:いくつかの結果をtmpdirに書き込む
VOCデータセットでは、以下の方法でテストする必要があります.
python tools/test.py configs/retinanet_r101_fpn_1x.py work_dirs/retinanet_r101_fpn_1x/latest.pth --out ./result_retinanet.pkl
結果をpklフォルダに出力し、計算を行います.
python tools/voc_eval.py result_retinanet.pkl configs/retinanet_r101_fpn_1x.py
次の結果が得られます.
+-------+-----+------+--------+-----------+-------+
| class | gts | dets | recall | precision | ap |
+-------+-----+------+--------+-----------+-------+
| pos | 186 | 2356 | 0.801 | 0.063 | 0.398 |
+-------+-----+------+--------+-----------+-------+
| mAP | | | | | 0.398 |
+-------+-----+------+--------+-----------+-------+
6.ツール
最初の取り付け:
pip install seaborn
表示形式:python tools/analyze_logs.py plot_curve [--keys ${KEYS}] [--title ${TITLE}] [--legend ${LEGEND}] [--backend ${BACKEND}] [--style ${STYLE}] [--out ${OUT_FILE}]
python tools/analyze_logs.py plot_curve log.json --keys loss_cls --legend loss_cls
python tools/analyze_logs.py plot_curve log.json --keys loss_cls loss_reg --out losses.pdf
python tools/analyze_logs.py plot_curve log1.json log2.json --keys bbox_mAP --legend run1 run2
python tools/analyze_logs.py cal_train_time ${CONFIG_FILE} [--include-outliers]
python tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}]
7.問題
テスト中にエラーが発生しました.
File “tools/test.py”, line 224, in main() File “tools/test.py”, line 215, in main results2json(dataset, outputs, args.json_out) File “/home/cie320/mmdetection/mmdet/core/evaluation/coco_utils.py”, line 203, in results2json json_results = det2json(dataset, results) File “/home/cie320/mmdetection/mmdet/core/evaluation/coco_utils.py”, line 149, in det2json img_id = dataset.img_ids[idx] AttributeError: ‘VOCDataset’ object has no attribute ‘img_ids’
呼び出されたのはcocoで、これはあなたのコマンドの問題で、あなたは上記の方法を採用して、2つのステップに分けて計算するべきです.