PyTorchからTFLiteへの変換
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
PyTorchからTFLiteへの変換
この章では、PyTorchモデルをTFLiteモデルに変換してエクスポートする方法について説明します。
準備
環境構成
トレーニングステップと同様に、モデルエクスポートフェーズでは仮想環境で作業することをお勧めします。sscma
仮想環境内で、インストール - 前提条件 - 追加依存関係のインストールステップが完了していることを確認してください。
仮想環境を構成したがまだ有効化していない場合は、以下のコマンドで有効化できます。
conda activate sscma
モデルと重み
モデルをエクスポートする前に、PyTorchモデルとその重みを準備する必要があります。モデルについては、Configセクションで事前に設定されています。重みについては、以下の手順を参照してモデルの重みを取得してください。
トレーニングセクションを参照し、モデルを選択してトレーニングを行い、モデルの重みを取得します。
または、SSCMA公式の事前トレーニング済みの重みをGitHub Releases - Model Zooからダウンロードします。
TFLiteモデルをエクスポートするには、代表的なデータセットとしてトレーニングセットが必要です。見つからない場合、プログラムが自動的にダウンロードします。ただし、大規模なデータセットの場合、時間がかかることがありますので、しばらくお待ちください。
モデルのエクスポート
モデル変換(変換とエクスポート)のための関連コマンドといくつかの一般的なパラメータを以下に示します。
python3 tools/export.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--target tflite
TFLiteエクスポート例
以下に、いくつかのモデル変換例(int8
精度)を示します。参考にしてください。
- FOMOモデル変換
- PFLDモデル変換
- SWIFT-YOLOモデル変換
python3 tools/export.py \
configs/fomo/fomo_mobnetv2_0.35_x8_abl_coco.py \
"$(cat work_dirs/fomo_mobnetv2_0.35_x8_abl_coco/last_checkpoint)" \
--target tflite \
--cfg-options \
data_root='datasets/mask'
python3 tools/export.py \
configs/pfld/pfld_mbv2n_112.py \
"$(cat work_dirs/pfld_mbv2n_112/last_checkpoint)" \
--target tflite \
--cfg-options \
data_root='datasets/meter'
python3 tools/export.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
"$(cat work_dirs/swift_yolo_tiny_1xb16_300e_coco/last_checkpoint)" \
--target tflite
--cfg-options \
data_root='datasets/digital_meter'
モデルの検証
モデルのエクスポートプロセス中に、SSCMAはモデルのプルーニングや蒸留などのツールを使用してモデルを最適化します。トレーニングプロセス中にモデルの重みをテストおよび評価していますが、エクスポートされたモデルを再度検証することをお勧めします。
python3 tools/inference.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--show \
--cfg-options "<CFG_OPTIONS>"
サポートされるその他のパラメータについては、ソースコードtools/inference.py
を参照するか、python3 tools/inference.py --help
を実行してください。
モデル検証例
以下に、変換されたモデル(int8
精度)を検証するための例を示します。参考にしてください。
- FOMOモデル検証
- PFLDモデル検証
- SWIFT-YOLOモデル検証
python3 tools/inference.py \
configs/fomo/fomo_mobnetv2_0.35_x8_abl_coco.py \
"$(cat work_dirs/fomo_mobnetv2_0.35_x8_abl_coco/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/mask'
python3 tools/inference.py \
configs/pfld/pfld_mbv2n_112.py \
"$(cat work_dirs/pfld_mbv2n_112/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/meter'
python3 tools/inference.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
"$(cat work_dirs/swift_yolo_tiny_1xb16_300e_coco/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/digital_meter'