メインコンテンツまでスキップ

YOLOv8 物体検出モデルをデプロイする

この Wiki では、公式の YOLOv8 物体検出モデルの学習方法と、学習済みモデルを Grove Vision AI (V2) デバイスまたは XIAO ESP32S3 デバイスにデプロイする方法を紹介します。

データセットの準備

データセットには roboflow プラットフォームの使用を推奨します。このプラットフォームではデータセットのアノテーションや各種データ拡張戦略を実行でき、複数のデータセット形式でのエクスポートをサポートしています。

YOLOv8 コマンドラインツールのインストール

  • 既に python 環境と pip パッケージ管理ツールがあり、かつ python>=3.8 であることを前提とします。

ultralytics パッケージをインストールします。pip install -U ultralytics を実行してもかまいません。ultralytics パッケージの詳細については Python Package Index (PyPI) の https://pypi.org/project/ultralytics/ を参照してください。

# Install using pip
pip install ultralytics==8.2.8
# Chinese users can use mirror acceleration
# pip install ultralytics==8.2.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

Tips: YOLOv8 のコードに詳しくない場合は、pip または conda を使用してインストールすることを推奨します。

  • yolo コマンドラインツールが正しくインストールされているかどうかは、バージョン確認コマンドでテストできます。
# version query
yolo -v

学習

  • まず、ダウンロードしたデータセットのフォルダに移動します

  • 次のコマンドを実行してモデルの学習を開始します

yolo train detect model=yolov8n.pt data=./data.yaml imgsz=192

モデルを tflite にエクスポートする

  • 学習後、モデルは runs/train/exp*/weights/ フォルダ内に保存されます。モデルの評価指標が要件を満たしていることを確認してください。
  • 次のコマンドを使用して tflite モデルをエクスポートします
yolo export model=${your model path}  format=tflite imgsz=192 int8
  • その後、カレントフォルダの下に yolov8n_saved_model フォルダが生成され、その中に yolov8n_full_integer_quant.tflite モデルファイルが含まれます。このモデルファイルは Grove Vision AI(V2) または XIAO ESP32S3 デバイスにデプロイできます。

モデルグラフの最適化

  • Grove Vision AI (V2) は vela で最適化されたモデルをサポートしており、モデル推論を高速化することもできます。まず、次のコマンドを実行して vela コマンドラインツールをインストールします(XIAO ESP32S3 デバイスはまだ非対応です)

pip3 install ethos-u-vela
  • 次に、download から vela 関連の設定ファイルをダウンロードするか、以下の内容をファイルにコピーして vela_config.ini という名前で保存します
; file: my_vela_cfg.ini ; ----------------------------------------------------------------------------- 
; Vela configuration file ; -----------------------------------------------------------------------------
; System Configuration

; My_Sys_Cfg
[System_Config.My_Sys_Cfg]
core_clock=400e6
axi0_port=Sram
axi1_port=OffChipFlash
Sram_clock_scale=1.0
Sram_burst_length=32
Sram_read_latency=16
Sram_write_latency=16
Dram_clock_scale=0.75
Dram_burst_length=128
Dram_read_latency=500
Dram_write_latency=250
OnChipFlash_clock_scale=0.25
OffChipFlash_clock_scale=0.015625
OffChipFlash_burst_length=32
OffChipFlash_read_latency=64
OffChipFlash_write_latency=64
; -----------------------------------------------------------------------------
; Memory Mode
; My_Mem_Mode_Parent
[Memory_Mode.My_Mem_Mode_Parent]
const_mem_area=Axi1
arena_mem_area=Axi0
cache_mem_area=Axi0
  • 最後に、次のコマンドを使用してグラフを最適化します
vela --accelerator-config ethos-u55-64 \ 
--config vela_config.ini \
--system-config My_Sys_Cfg \
--memory-mode My_Mem_Mode_Parent \
--output-dir ${Save path of the optimized model} \
${The path of the tflite model that needs to be optimized}

実行後、--output-dir で指定したパスにグラフ最適化済みの tflite モデルが生成されます。

デプロイ

  • デプロイする必要があるモデルファイルは、上でエクスポートした tflite ファイルです。以下のチュートリアルに従って、モデルファイルをターゲットデバイスに書き込むことができます。

  • 学習済み tflite モデルをデバイスに書き込むには、弊社の Web ツールを使用することを強く推奨します。詳細な操作手順は Deployment Tutorial に記載されています。

Note: ESP32S3 デバイスは vela グラフ最適化後のモデルデプロイをサポートしていないため、モデルを XIAO ESP32S3 デバイスにデプロイしたい場合は tflite モデルのグラフ最適化を行う必要はありません。

Loading Comments...