PaddleOCRとW&BでOCRモデルのトレーニング&デバッグ
PaddleOCRのW&B統合を使用してトレーニングと評価指数をモデルチェックポイントと共に追跡するためのクイックチュートリアル
Created on June 3|Last edited on June 3
Comment
目次
目次PaddleOCRの紹介セットアップW&B SDK のインストールPaddleOCRのインストールICDAR2015データセットのダウンロード方法事前トレーニング済みの MobileNetV3 モデルのダウンロードモデルのトレーニングトレーニングと検証指標の視覚化トレーニング指標システム指標検証指標トレーニング済みモデルのダウンロードと使用ボーナス:注釈付き画像をW&Bダッシュボードに記録する まとめ関連する内容
PaddleOCRの紹介
PaddleOCRは、ユーザーがより優れたモデルをトレーニングし、PaddlePaddleの使用に役立つような、多言語で最先端の実用的なOCRツールの作成を目指しています。 ライブラリの W&B 統合により、トレーニング中のトレーニング & 検証セットの指標を、適切なメタデータを含むチェックポイントと共に追跡が可能です。
このチュートリアルでは、1000枚の画像入りトレーニングセットとウェアラブルカメラで取得した500枚の画像入りテストセットを含むICDAR2015データセット上のMobileNetV3バックボーンをトレーニングします。
セットアップ
W&B SDK のインストール
まず、インストールしてW&Bアカウントにログインしましょう:
pip install wandbwandb login
PaddleOCRのインストール
次に、PaddlePaddleをインストールしましょう:
pip install paddlepaddle-gpu pyclipper attrdict -qqq
その後、パッケージをインストールするために PaddleOCR GitHub リポジトリのクローンを作成します。それから、実装済みモデルをトレーニングするためのトレーニング スクリプトを取得します:
git clone https://github.com/PaddlePaddle/PaddleOCRcd PaddleOCRpip install -e .
その後、パッケージをインストールするために PaddleOCR GitHub リポジトリのクローンを作成します。それから、実装済みモデルをトレーニングするためのトレーニング スクリプトを取得します:
ICDAR2015データセットのダウンロード方法
import wandbapi = 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: CoolOCRentity: my_teamname: 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 wandbartifact = 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 wandbimport globwandb.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]:continuetable.add_data(wandb.Image(inp),wandb.Image(out))wandb.log({"Predictions": table})wandb.finish()
まとめ
このチュートリアルでは、W&BをPaddleOCRと組み合わせて使用し、OCRモデル開発のすべてのニーズをサポートする方法を簡潔に説明しました。実行可能なコード付きのこのレポート版のColabを、是非チェックしてみてください。
関連する内容
Information Extraction from Scanned Receipts: Fine-tuning LayoutLM on SROIE
An OCR demo with LayoutLM fine-tuned for information extraction on receipts data.
Information Extraction From Documents Using Machine Learning
In this article, we'll extract information from templated documents like invoices, receipts, loan documents, bills, and purchase orders, using a model.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.