Skip to main content

PaddleOCRとW&BでOCRモデルのトレーニング&デバッグ

PaddleOCRのW&B統合を使用してトレーニングと評価指数をモデルチェックポイントと共に追跡するためのクイックチュートリアル
Created on June 3|Last edited on June 3
このレポートは、Manan Goelによる「Train and Debug Your OCR Models with PaddleOCR and W&B」の翻訳です。



目次






PaddleOCRの紹介

PaddleOCRは、ユーザーがより優れたモデルをトレーニングし、PaddlePaddleの使用に役立つような、多言語で最先端の実用的なOCRツールの作成を目指しています。 ライブラリの W&B 統合により、トレーニング中のトレーニング & 検証セットの指標を、適切なメタデータを含むチェックポイントと共に追跡が可能です。
また、素晴らしいColabも用意しました!ご希望であれば、実行コードを使用して、OCRパイプラインのテキスト検出モジュールにPaddleOCRを使用することができます。

このチュートリアルでは、1000枚の画像入りトレーニングセットとウェアラブルカメラで取得した500枚の画像入りテストセットを含むICDAR2015データセット上のMobileNetV3バックボーンをトレーニングします。



セットアップ

W&B SDK のインストール

まず、インストールしてW&Bアカウントにログインしましょう:
pip install wandb
wandb login

PaddleOCRのインストール

次に、PaddlePaddleをインストールしましょう:
pip install paddlepaddle-gpu pyclipper attrdict -qqq
その後、パッケージをインストールするために PaddleOCR GitHub リポジトリのクローンを作成します。それから、実装済みモデルをトレーニングするためのトレーニング スクリプトを取得します:
git clone https://github.com/PaddlePaddle/PaddleOCR
cd PaddleOCR
pip install -e .
その後、パッケージをインストールするために PaddleOCR GitHub リポジトリのクローンを作成します。それから、実装済みモデルをトレーニングするためのトレーニング スクリプトを取得します:

ICDAR2015データセットのダウンロード方法

こちらからダウンロードできるICDAR2015データセットを使用していきます。 データは、使いやすいように W&B アーティファクトとしてログに記録されています:
import wandb
api = wandb.Api()
artifact = api.artifact("manan-goel/icdar2015/icdar2015-dataset:latest")
artifact.download(root="./train_data/icdar2015")

事前トレーニング済みの MobileNetV3 モデルのダウンロード

このチュートリアルでは、事前トレーニング済みの MobileNetV3 モデルをテキスト検出モデルのバックボーンとして使用します。 イメージ モデルの PaddlePaddle ライブラリからモデルのウエイトを取得します:
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV3_large_x0_5_pretrained.pdparams

モデルのトレーニング

トレーニング パイプラインの W&B を使用した実験の追跡を自動開始するには、次のスニペットを yaml 構成ファイルに追加し、トレーニング スクリプトへの入力として使用します:
wandb:
project: CoolOCR
entity: my_team
name: MyOCRModel
wandb.initへの入力として使用されるすべての引数以外は、yaml ファイルのwandbヘッダーの下に追加できます。 このチュートリアルの実験に使用する構成ファイルは、こちらからご利用いただけます。 ファイルの下部に上記の行を追加すると、W&Bロガーが有効になります。
この yaml ファイルを使用してモデルをトレーニングするには、PaddleOCR リポジトリで次のコマンドを使用してください:
python tools/train.py -c configs/det/det_mv3_db.yml \
-o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

トレーニングと検証指標の視覚化

これでやっと、10 のトレーニングステップごとに、評価ステップを使用して、5 エポックのモデルをトレーニングすることができます。

トレーニング指標




システム指標

W&Bは、実行ごとにGPUとCPU使用率の時間も自動的に追跡します!



検証指標




トレーニング済みモデルのダウンロードと使用

チェックポイントは、各エポックの終了時およびすべてのモデル保存ステップで、対応するメタデータとタグと共に、 W&B アーティファクトとしてログに記録されます。 次のスニペットを使用して、さらなるトレーニングと評価の目的でログをダウンロードすることが可能です。
import wandb
artifact = wandb.Api().artifact('manan-goel/text_detection/model-2138qk4h:best', type='model')
artifact_dir = artifact.download()
トレーニング済みのモデルをテキスト検出に使用するには、PaddleOCR リポジトリの推論スクリプトをご利用いただけます。
!python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./artifacts/model-2138qk4h:v9/model_ckpt"
これにより、./doc/imgs_en/フォルダ内のすべての画像に注釈が付けられ、画像は出力フォルダに保存されます。

ボーナス:注釈付き画像をW&Bダッシュボードに記録する

トレーニングの最後にモデルのパフォーマンスを視覚化するには、入力画像と出力画像をログに記録し、それらをW&Bダッシュボードに記録してください。それでは、新しいW&Bランを初期化して、画像へのパスをロードすることから始めましょう:
import wandb
import glob

wandb.init(project="text_detection")
wandb.use_artifact('manan-goel/text_detection/model-2138qk4h:best')
table = wandb.Table(columns=["Input Image", "Annotated Image"])

inp_imgs = sorted(glob.glob("./doc/imgs_en/*.jpg"), key=lambda x: x.split("/")[-1])
out_imgs = sorted(glob.glob("./output/det_db/det_results/*.jpg"), key=lambda x: x.split("/")[-1])
次に、イメージを wandb テーブルに追加し、W&B に記録します。
for inp in inp_imgs:
for out in out_imgs:
if out.split("/")[-1] != inp.split("/")[-1]:
continue
table.add_data(
wandb.Image(inp),
wandb.Image(out)
)
wandb.log({
"Predictions": table
})
wandb.finish()




まとめ

このチュートリアルでは、W&BをPaddleOCRと組み合わせて使用し、OCRモデル開発のすべてのニーズをサポートする方法を簡潔に説明しました。実行可能なコード付きのこのレポート版のColabを、是非チェックしてみてください。

関連する内容


Iterate on AI agents and models faster. Try Weights & Biases today.