#author("2024-01-11T12:16:01+09:00","default:ait-survey","ait-survey") #author("2024-01-11T12:16:29+09:00","default:ait-survey","ait-survey") カスタムデータでDetectron2を使うのなら[[こちら:https://www.ait-survey.com/?%E8%BB%A2%E7%A7%BB%E5%AD%A6%E7%BF%92-cityscapes%2C+cityscapesscripts%2C+Mask+R-CNN%2C+Detectron2]]が参考になるかも.~ 下記は,あくまでもDestectron2にある学習済みモデル(の重み)を利用した推論を行うための方法です(ちょっと学習のステップもあるかも).~ &color(red){[[detectron2:https://github.com/facebookresearch/detectron2]]};(ディレクトリ構成の内容(位置づけ)は[[こちら:https://chat.openai.com/share/b592facc-6d4f-4618-8922-b2caed44f3fd]])の物体検出系で学習させるデータは,基本的に,&color(red){Coco};フォーマットか?~ (なお,detectron2は&color(red){python3.7};で動くことは確認しました.3.8だとエラーが出ました)~ ----- 本研究室の場合,labelmeで作成したアノテーション情報が記載されたjsonファイルからCocoフォーマットへの変換がよくある流れ.~ (デフォルトの変換ツールだと,バウンディングボックスの構造によってエラーが出たかも)~ labelme/examples/instance_segmentation/labelme2coco.py~ **Mask R-CNN [#d7005fcb] demoフォルダにある&color(blue){demo.py};を使用する.~ そして[[Model Zoo:https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md]]がいい。~ 設定ファイル(yaml形式)たちはconfigsにある。~ -python &color(blue){demo.py}; &color(red){--config-file}; ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml &color(red){--video-input}; /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/demo/GX070226s.mp4 &color(red){--output}; /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/demo/outputs2.mp4 &color(red){--opts MODEL.WEIGHTS}; detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl~ [[Cityscapes:https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md#cityscapes--pascal-voc-baselines]] (Mask R-CNN)~ -python &color(blue){demo.py}; &color(red){--config-file}; ../configs/Cityscapes/mask_rcnn_R_50_FPN.yaml &color(red){--video-input}; /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/video_nakatsugawa.mp4 &color(red){--output}; /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/demo/nakatsu_cityscape_outputs.mp4 &color(red){--opts MODEL.WEIGHTS}; detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl~ -python tools/train_net.py --eval-only --config-file configs/Cityscapes/mask_rcnn_R_50_FPN.yaml MODEL.WEIGHTS https://dl.fbaipublicfiles.com/detectron2/Cityscapes/mask_rcnn_R_50_FPN/142423278/model_final_af9cf5.pkl~ **Faster R-CNN [#i9da4ee4] 動かしたいが,情報が少ない..~ 例えば,[[これ:https://chat.openai.com/share/6ce7a2fa-533e-4830-b44e-b073769f657d]]~ -python demo.py --config-file ../configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml --video-input /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/demo/video_nakatsugawa.mp4 --output /mnt/c/Users/survey/Documents/GitHub/detectron2_wkk/demo/video_nakatsugawa_output.mp4 --opts MODEL.WEIGHTS detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl Detectron2のModel Zooには多くの学習済みモデルがありますが、一般的な物体検出タスクにおいてよく使用されるモデルは、COCOデータセットでの性能が高いものが多いです。特にFaster R-CNNに関しては、ResNetやResNeXtをバックボーンとして使用したモデルがあります。 もし特別な要件(例: 推論速度の最適化、モデルサイズの制限など)がなければ、以下のモデルをおすすめします: - **Faster R-CNN with ResNeXt-101**: このモデルは、精度と速度のバランスが取れており、多くのタスクで高い性能を発揮します。 それでは、上記の手順にこのモデルを組み込んだ具体的な手順を示します。 1. **必要なライブラリのインストール**: - Detectron2をインストールします。 - 必要な依存関係を確認して、関連するパッケージもインストールします。 2. **アノテーションデータの変換**: - Labelmeで作成したJSON形式のアノテーションデータを、Detectron2が読み込めるCOCO形式に変換します。 3. **データセットの登録**: - 上記で変換したCOCO形式のデータセットを、Detectron2の`DatasetCatalog`に登録します。 4. **学習済みモデルのダウンロード**: - Detectron2のModel Zooから、**Faster R-CNN with ResNeXt-101**の学習済みモデルをダウンロードします。 5. **設定の変更**: - Detectron2の設定 (`cfg`) をダウンロードしたモデルとカスタムデータセットに合わせて変更します。 - データセットのパス、バッチサイズ、学習率などのパラメータを調整します。 6. **モデルのトレーニング**: - 上記の設定を使用して、モデルの転移学習を開始します。 7. **評価とテスト**: - 学習したモデルを使用して、検証データセットでのパフォーマンスを評価します。 - 必要に応じて、テストデータセットでの予測結果を可視化します。 8. **モデルの保存**: - 転移学習を完了したモデルを保存します。 ***転移学習 [#h4fe7042] &color(red){転移学習};:tools/train_net.pyを使えばいい(Imagenetでの学習済みモデルが使用可能)みたい.詳細は[[転移学習-cityscapes, cityscapesscripts, Mask R-CNN, Detectron2]]~ **評価 [#yac9491e] detectron2では物体検出において下記のような評価結果が出力される.ここでAPはAverage Precision.~ COCOで定められている[[評価法:https://cocodataset.org/#detection-eval]]を使用しているようです. #ref(eval_s.jpg)~ AP(Average Precision)はIoUを0.5から0.95までの0.05ピッチでとりまとめ,それを「正」とした平均適合率(精度).~ APs(area<32x32),APm(<32x32<area<96x96),APl(96x96<area)も上記の判定で求めたもの.~ APs(area<32x32),APm(32x32<area<96x96),APl(96x96<area)も上記の判定で求めたもの.~ #ref(pre_s.jpg)~ #ref(AR_s.jpg)~ [[AI Tips]]