MMDetectionターゲット検出の例

MMDetectionターゲット検出の例

MMDetectionは、coocデータセット、ターゲット認識トレーニングのFaster-rcnnメソッドに基づいています



序文

ディープラーニングターゲット検出ツールボックスMMDetectionと1週間近く連絡を取りました。学習プロセスは非常に困難です。環境のインストールと構成に3日しかかかりませんでしたが、苦しみをゆっくりと克服する様子は本当に美しいです。
このツールボックスは、SenseTime(2018 COCO Target Detection Challenge Champion)と2018年の香港中文大学が共同でオープンソース化しているため、比較的新しく、学習するための詳細なチュートリアルがありません。そのため、これらのツールボックスに感謝します。プラットフォームでの経験を共有してください。
以下は私があなたと共有したい小さな例です(MMDetectionツールキットの環境を使用:Ubuntu + Pycharm)、MMDetectionを使用してディープラーニングターゲット検出のユニークな魅力を感じることもできれば幸いです。


1つは、MMDetectionのインストールです

インストールの面では、私の経験では、単純です:
1.ハードウェア構成(GPU
2. Linuxがしやすくなり、Windowsがよりインストール
を参照してください。3.上の指示Githubに、そしていくつかの依存ライブラリのバージョンが対応している必要があります

以下は、私の推奨ビデオやブログで
のmmdetectionコレクション
深い学習目標検出ツールボックスmmdetection、独自のデータを訓練します

2.データセットの概要

このビデオ基づいてこの例を作成しましたが、同じではない手順が多数あります。ツールボックスの更新が速すぎる可能性があります。pyファイルが表示されたり、静かに表示されたりする場合がありますが、一般的なプロセスは問題ありません。

ネットワークディスクにデータセットがあります。jku4に直接ダウンロードできます。ターゲット検出は「ポット」と「指示」で構成されています。それを感じるための写真を紹介します。

ここに画像の説明を挿入
データセットは3つのフォルダーで開きます。

ここに画像の説明を挿入

注釈フォルダーには2つのJSONファイルがあります。
ここに画像の説明を挿入

Instances_train2017では、タイプは「hu」と「shu」です(potとbookの意味である必要があります)。

ここに画像の説明を挿入

2.関連するpyファイルを作成および変更します

ここで使用したmmdetection-masterはGithubダウンロードされていることに注意してください。このツールボックスは非常に迅速に更新され、対応するpyファイルも更新される可能性がありますが、一般的なプロセスはほぼ同じです。

1.coco.pyの下のCLASSES =( 'hu'、 'shu')を変更します。JSON形式(上の図を参照)は 'hu'、 'shu'の順序であるため、順序を逆にしないでください。

class CocoDataset(CustomDataset):
	CLASSES=('hu','shu')

2. configs / faster-rcnn / faster_rcnn_r50_fpn_1x_coco.pyを変更して、依存する4つのpyファイルを見つけます。

ここに画像の説明を挿入

2.1 configs / base / models / faster_rcnn_r50_fpn.pyを変更します。

ステップ1:num_classes = 3を見つけます。pyファイルにはnum_classesが1つしかありません(実際、2か3か疑問に思っていましたが、元々は81でした。カテゴリの数を80と数えたので、背景はただし、初めてnum_classes = 2を設定しようとするときもトレーニングできます。更新:新しいデータセット、2つのカテゴリを試しましたが、num_classes = 3のときにエラーが報告されました。両方の方法を試すことができます) ステップ2:事前トレーニング済み=なし(上部)ですが、なぜそうなるのかわかりません。そのビデオを見ることができます。

ここに画像の説明を挿入
2.2 configs / base /datasets/coco_detection.pyを
変更して、ファイルの相対パスdata_rootおよびimage_scale()を変更します。

2.3schedule_1x.pyとdefault_runtime.pyを変更します

ステップ1:まず、torch.cuda.device_count()を使用してGPUの数を確認します。GPUの数が8の場合、lr = 0.02、GPUの数が4の場合、lr = 0.01、必要なGPUは1つだけなので、lr = 0.0025に設定します。ここで、total_epochs(反復の総数)を変更することもできます。
ここに画像の説明を挿入
ここに画像の説明を挿入

ステップ2:ここでの間隔= 11は、Val2017に合計11枚の写真があるためです。[更新:つまり、下の図に示すように、各セグメント間のギャップは、valに合計4000枚の写真がありますが12に設定すると、トレーニングプロセスこれを下の図に示します]
ここに画像の説明を挿入

load_from = 'faster_rcnn_r50_fpn_1x_3.pth'(以下に対応)
ここに画像の説明を挿入

3. mmdet / Evaluation / class_names.pyのcoco_classes()を変更します。

ここに画像の説明を挿入

4.mmdetection-masterディレクトリにchangefasterrcnnという名前のpyファイルを作成します。

ここでは、このディレクトリにチェックポイントを作成し、対応するpthをダウンロードする必要があります。これは公式にトレーニングされたウェイトファイルです。ダウンロードするリンクは、faster-rcnnフォルダーにあるように、対応するメソッドフォルダーのreadmeにあります。ここのreadmeからダウンロードするのは、私が提供したリンク抽出コードです:9iq1(公式アップデートのために利用できない可能性があり、「pthはチェックポイントではありません」などのエラーが発生します)。
ここに画像の説明を挿入

3、コンパイルトレーニング

Xshell(ターミナル)入力:

python changefasterrcnn.py

実行後、faster_rcnn_r50_fpn_1x_3.pthがmmdetection-masterディレクトリに生成されます。これは、2.3のステップ2で説明したp番目のファイル(load_from = 'faster_rcnn_r50_fpn_1x_3.pth')に対応します。
ここに画像の説明を挿入

これはトレーニングプロセスです。プロセスは約5分です(ここでは、事前にwork_dirsフォルダーを作成する必要があります。ここでは、トレーニングプロセスにログインするもの、各反復のjsonファイルとpthファイル、ここではlatest.pthに注意してください。これはリンクであり、pthファイルではありません。epoch_10.pthを使用して最後にテストできます):

python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py

ここに画像の説明を挿入
10回目の反復トレーニングの適合率と再現率:
ここに画像の説明を挿入

第四に、デモインスタンスを実行します

1.image_demo.pyを変更します

私が使用しているXshellはインターフェース表示に適していないため(Pycharmコミュニティバージョンはpyplotにアレルギーがあるようです)、つまり、最後のshow_result_pyplotメソッドは使用できません。可能であれば、変更しないでください。
ここに画像の説明を挿入
show_result_pyplot()の特定のコンテンツは次の場所にあります。
ここに画像の説明を挿入

plt.show()をplt.savefig( 'myfigure')に変更し、画像を保存して開いて表示し、飛び出さないようにします。
ここに画像の説明を挿入

2.端末操作

最初に写真(00000.bmp)をデモフォルダーに入れ、前のトレーニングで取得したepoch_10.pthをチェックポイントフォルダーに入れます。

python demo/image_demo.py demo/00000.bmp configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/epoch_10.pth

最後に、clang clang clangを実行すると、この苦労して獲得したmyfigureを取得できますが、検出効果は依然として良好です。
ここに画像の説明を挿入


総括する

このMMDetectionツールキットは非常に便利ですが、環境のインストール構成や後続のpyファイルの内容の変更に関係なく、忍耐と注意が十分にテストされています。誰もがそれから能力を発揮できることを願っています。バグが発生した場合は、以下にメッセージを残すこともできます。同じバグが発生した場合は、交換して話し合います。ターゲットの検出に興味がある場合は、Kaggle、Tianchi、および特別なココデータコンテストに参加することもできます。

おすすめ

転載: blog.csdn.net/weixin_45734379/article/details/112725000