Detectron2 0.3: Tutorials : Getting Started (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/03/2021 (0.3)
* 本ページは、Detectron2 ドキュメントの以下のページを翻訳した上で適宜、補足説明したものです:
- Tutorials : Getting Started with Detectron2
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- Windows PC のブラウザからご参加が可能です。スマートデバイスもご利用可能です。
人工知能研究開発支援 | 人工知能研修サービス | テレワーク & オンライン授業を支援 |
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。) |
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ |
Facebook: https://www.facebook.com/ClassCatJP/ |
Detectron2 : Tutorials : Getting Started
このドキュメントは detectron2 の組込みコマンドライン・ツールの使用方法の簡潔なイントロを提供します。
API による実際のコーディングを伴うチュートリアルについては、Colab ノートブック を見てください、これは既存のモデルでどのように推論を実行するか、そしてカスタムデータセット上で組込みモデルをどのように訓練するかをカバーします。
事前訓練モデルによる推論デモ
- モデル zoo からモデルとその config を選択します、例えば、mask_rcnn_R_50_FPN_3x.yaml です。
- demo.py を提供します、これは組込み config の実演をすることができます。それを以下で実行します :
cd demo/ python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input input1.jpg input2.jpg \ [--other-options] --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl
mask_rcnn_R_50_FPN_3x.yaml
_BASE_: "../Base-RCNN-DilatedC5.yaml" MODEL: WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl" MASK_ON: True RESNETS: DEPTH: 50 SOLVER: STEPS: (210000, 250000) MAX_ITER: 270000
config は訓練のために作成されますので、従って評価のためにモデル zooからモデルへの MODEL.WEIGHTS を指定する必要があります。このコマンドは推論を実行して OpenCV ウィンドウで可視化します。
コマンドライン引数の詳細については、demo.py -h を見るかその動作を理解するためにソースコードを見てください。幾つかの一般的な引数は :
- webcam 上で実行するには、–input ファイルを –webcam で置き換えます。
- 動画上で実行するには、–input ファイルを –video-input video.mp4 で置き換えます。
- cpu 上で実行するには、–opts の後に MODEL.DEVICE cpu を追加します。
- 出力を (画像のために) ディレクトリや (webcam や動画のために) ファイルにセーブするには、–output を使用します。
コマンドラインで訓練 & 評価
“tools/plain_train_net.py” と “tools/train_net.py” で 2 つのスクリプトを提供します、これらは detectron2 で提供される総ての config を訓練するために作成されました。貴方自身の訓練スクリプトを書くためのリファレンスとしてそれを使用することを望むかもしれません。
“train_net.py” と比較して、“plain_train_net.py” はより少ないデフォルト特徴をサポートします。それはまた少ない抽象を含みますので、従ってカスタムロジックを追加することが容易です。
“train_net.py” でモデルを訓練するには、datasets/README.md に従って最初に対応するデータセットをセットアップしてから、次を実行します :
cd tools/ ./train_net.py --num-gpus 8 \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml
mask_rcnn_R_50_FPN_1x.yaml
_BASE_: "../Base-RCNN-FPN.yaml" MODEL: WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl" MASK_ON: True RESNETS: DEPTH: 50
config は 8-GPU 訓練のために作成されています。1 GPU 上で訓練するには、幾つかのパラメータを変更する 必要があるかもしれません、e.g. :
./train_net.py \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \ --num-gpus 1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.0025
モデルのパフォーマンスを評価するには、次を使用します :
./train_net.py \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \ --eval-only MODEL.WEIGHTS /path/to/checkpoint_file
より多くのオプションについては、./train_net.py -h を見てください。
貴方のコードで Detectron2 API を使用する
以下を行なうために detectron2 API をどのように利用するかを学習するために Colab ノートブック を見てください :
- 既存のモデルで推論を実行する。
- カスタムデータセット上で組込みモデルを訓練する
detectron2 上で貴方のプロジェクトを構築するより多くの方法のために detectron2/projects を見てください。
補足
(訳注: 上記の説明は少し不親切なので demo.py を動作させるまでの手順を補足します。)
# install dependencies: !pip install pyyaml==5.1 import torch, torchvision print(torch.__version__, torch.cuda.is_available()) !gcc --version # opencv is pre-installed on colab
!pip install imgaug==0.2.6
# install detectron2: (Colab has CUDA 10.1 + torch 1.7) # See https://detectron2.readthedocs.io/tutorials/install.html for instructions import torch assert torch.__version__.startswith("1.7") #!pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu110/torch1.7/index.html !pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/torch1.7/index.html #exit(0) # After installation, you need to "restart runtime" in Colab. This line can also restart runtime
!git clone https://github.com/facebookresearch/detectron2
cd detectron2/demo
!wget http://images.cocodataset.org/val2017/000000439715.jpg -q -O input.jpg import cv2 im = cv2.imread("./input.jpg") cv2_imshow(im)
!python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input input.jpg --output output.jpg \ --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl
im_out = cv2.imread("./output.jpg") cv2_imshow(im_out)
!wget http://images.cocodataset.org/val2017/000000397133.jpg -q -O input2.jpg import cv2 im = cv2.imread("./input2.jpg") cv2_imshow(im)
!python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input input2.jpg --output output2.jpg \ --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl im_out2 = cv2.imread("./output2.jpg") cv2_imshow(im_out2)
!wget http://images.cocodataset.org/val2017/000000037777.jpg -q -O input3.jpg import cv2 im = cv2.imread("./input3.jpg") cv2_imshow(im)
!python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input input3.jpg --output output3.jpg \ --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl im_out3 = cv2.imread("./output3.jpg") cv2_imshow(im_out3)
im = cv2.imread("/content/COCO_val2014_000000224012.jpg") cv2_imshow(im)
!python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \ --input /content/COCO_val2014_000000224012.jpg --output output4.jpg \ --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl im_out4 = cv2.imread("./output4.jpg") cv2_imshow(im_out4)
以上