PaddleDetectionとW&Bを使用したオブジェクト検出
すべてのメトリクスとモデルチェックポイントをW&Bでログに記録しながら、PaddleDetectionでYOLOXモデルを最初からトレーニングする方法を学びましょう。
Created on June 21|Last edited on October 31
Comment
目次(クリックすると開きます)
PaddleDetectionの概要
PaddleDetectionとは、 PaddlePaddleに基づくエンドツーエンドのオブジェクト検出開発キットです。ネットワークコンポーネント、データ拡張、損失などの構成可能なモジュールを備えたモジュラー設計で、さまざまな主要なオブジェクト検出、インスタンスセグメンテーション、追跡、およびキーポイント検出アルゴリズムを実行します。
現在、PaddleDetectionには、すべてのトレーニングと検証のメトリクス、およびモデルのチェックポイントとそれに対応するメタデータをログに記録するビルトインW&B統合が付属しています。
💡
次の2つの方法で、トレーニングジョブのW&Bロガーをアクティベートできます:
- コマンドライン:W&Bロガーへの引数の前に-oを付ける必要があります。各引数にはプレフィックス「wandb-」を含める必要があります。また、「--use_wandb」フラグを使用する必要があります。
python tools/train -c config.yml --use_wandb -o wandb-project=MyDetector wandb-entity=MyTeam wandb-save_dir=./logs
- YAMLファイル:次のように、 wandbヘッダーの下のYAML構成ファイルに引数を追加してください。
wandb:project: MyProjectentity: MyTeamsave_dir: ./logs
セットアップ
W&B SDKのインストール
wandb SDKをインストールしてから、W&Bアカウントにログインします:
pip install wandbwandb login
PaddleDetectionのインストール
次に、 PaddleDetectionライブラリのクローンを作成し、ソースからパッケージをインストールします。これをする理由は、さまざまな事前実装モデルの構成とともに、トレーニングスクリプトも含まれているからです。
pip install paddlepaddle-gpu pyclipper attrdict gdown -qqqgit clone https://github.com/PaddlePaddle/PaddleDetectioncd PaddleDetectionpip install -e .
COCOデータセットをダウンロードする方法
データセットは、簡単にダウンロードできるようにするために、W&Bアーティファクトとしてログに記録されています。これには、トレーニング用の1000枚の画像と、オブジェクト検出モデルのトレーニングに使用する、対応する注釈付きの検証用の250枚の画像が含まれています。
artifact = wandb.Api().artifact("manan-goel/PaddleDetectionYOLOX/COCOSubset:latest")path = artifact.download(root='./dataset/coco')
トレーニング
モデルのトレーニング
ここで、PaddleDetectionライブラリのトレーニングスクリプトからYOLOXモデルをトレーニングし、上記の構成でトレーニング中にW&Bログを追加します。また、 --evalフラグを追加して、5エポックごとに評価ステップを実行します。
CLIの使用
python tools/train.py -c configs/yolox/yolox_nano_300e_coco.yml --use_wandb -o wandb-project=PaddleDetectionYOLOX --eval
YAML構成ファイルの使用
トレーニングパイプラインのW&Bで実験の追跡を自動開始するために、次のスニペットをYAML構成ファイルに追加すれば、トレーニングスクリプトへの入力として使用することができます。
wandb:project: PaddleDetectionYOLOX
視覚化
トレーニングと検証メトリクスの追跡
トレーニング中、トレーニングセットと検証セットのメトリクスは、次のようなW&Bダッシュボードに記録されます。
追跡システムメトリクス
W&Bから最上級モデルのダウンロード💾
このモデルのチェックポイントは、W&Bアーティファクトとしてログに記録され、次のスニペットを使用すれば評価用にダウンロードすることができます。
import wandbartifact = wandb.Api().artifact('manan-goel/PaddleDetectionYOLOX/model-26oqc38r:best', type='model')artifact_dir = artifact.download()
画像のテスト
次のセルは、demoディレクトリ内のすべての画像に対してPaddleDetectionリポジトリの推論スクリプトを実行し、 W&Bから取得したYOLOXモデルを使用してそれらをinfer_outputディレクトリに保存します。
for i in $(ls demo/*.jpg)dopython tools/infer.py -c configs/yolox/yolox_nano_300e_coco.yml \--infer_img=$i \--output_dir=infer_output/ \--draw_threshold=0.5 \-o weights=./artifacts/model-26oqc38r:v1/modeldone
これにより、デモディレクトリ内の各jpgファイルが調べられ、ダウンロードされたモデルを使用してそれらのファイルに対して推論スクリプトが実行されます。その後、注釈付きの画像がinfer_outputディレクトリに保存されます。
ボーナス:注釈付き画像をW&Bダッシュボードへ記録
import globimport wandbwandb.init(project="PaddleDetectionYOLOX")wandb.use_artifact('manan-goel/PaddleDetectionYOLOX/model-26oqc38r:best')table = wandb.Table(columns=["Input Image", "Annotated Image"])inp_imgs = sorted(glob.glob("./demo/*.jpg"), key=lambda x: x.split("/")[-1])out_imgs = sorted(glob.glob("./infer_output/*.jpg"), key=lambda x: x.split("/")[-1])for inp in inp_imgs:for out in out_imgs:if out.split("/")[-1] != inp.split("/")[-1]:continuetable.add_data(wandb.Image(inp),wandb.Image(out))wandb.log({"Predictions": table})wandb.finish()
上記のスクリプトは、入力画像とラベル付けされた画像を取得し、次のようなW&Bテーブルに記録します:
まとめ
このチュートリアルでは、W&BをPaddleDetectionと組み合わせて使用し、すべてのオブジェクト検出モデル開発のニーズをサポートする方法について簡潔に説明しました。実行可能なコードを記載したこのレポートについては、Colabをご覧ください。
関連記事
YOLOv5 Object Detection on Windows (Step-By-Step Tutorial)
This tutorial guides you through installing and running YOLOv5 on Windows with PyTorch GPU support. Includes an easy-to-follow video and Google Colab.
Search and Rescue: Augmentation and Preprocessing on Drone-Based Water Rescue Images With YOLOv5
In this article, we look at achieving mAP scores of over 0.97 on large images with comparatively very small people, as used in drone-based water rescue.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.