AIxBoard で OpenVINO™ を使用して YOLOv8 物体検出モデルを高速化する

この記事は、Medium に公開されている「Accelerating YOLOv8 Object Detection Model on AIxBoard with OpenVINO™」https://medium.com/openvino-toolkit/accelerating-yolov8-object-detection-model-on-aixboard-with-openvino-f989c9ed1d0d の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。

この記事の PDF 版は下記からご利用になれます。
https://www.isus.jp/wp-content/uploads/pdf/openvino_11_accelerating-yolov8-object-detection-model-on-aixboard-with-openvino.pdf
![openvino_11_figure1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/9663276d-479a-8fb9-462b-52cd02fa89d6.png)
【1. はじめに】
AIxBoard で OpenVINO™ ツールキットを使用して YOLOv8 分類モデルのデプロイメントと評価を行ってみましょう。この記事では、YOLOv8 物体検出モデルの高速化に注目します。

最初に、この記事で紹介しているサンプルコードのリポジトリーをダウンロードし、OpenVINO™ の推論エンジンを使用した YOLOv8 向けの開発環境をセットアップします。

GitHub* リポジトリー (英語)
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/230-yolov8-optimization

git clone コマンドを使用してコードのリポジトリーをクローンします。

【2. YOLOv8 物体検出 OpenVINO™ IR モデルをエクスポートする】
YOLOv8 には、以下の表に示すように、COCO データセットでトレーニングされた 5 つの異なる物体検出モデルがあります。
![openvino_11_figure2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/70030e87-e948-d2e0-9678-332f01182527.png)

次のコマンドを使用して YOLOv8n.onnx モデルをエクスポートします。

yolo export model=yolov8n.pt format=onnx

yolov8n.onnx モデルが生成されます。
![openvino_11_figure3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/1f6ae43f-9b47-36e6-6f36-31837b591ce9.png)
次のコマンドを使用して、FP16 精度で OpenVINO™ IR 形式モデルを最適化してエクスポートします。

mo -m yolov8n.onnx --compress_to_fp16
![openvino_11_figure4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/116e9eec-e5c0-cd26-d62c-21d02e3de68b.png)
【3. benchmark_app を使用して YOLOv8 物体検出モデルの推論パフォーマンスをテストする】
benchmark_app は、OpenVINO™ ツールキットで提供されている、AI モデルの推論パフォーマンスを評価するためのパフォーマンス・テスト・ツールです。同期モードまたは非同期モードで、異なる計算デバイスで前処理や後処理を行うことなく、純粋な AI モデルの推論パフォーマンスをテストできます。

次のコマンドを使用します。

benchmark_app -m yolov8n.xml -d GPU

AIxBoard (英語) https://mp.weixin.qq.com/s?__biz=MzI4OTQxODcxNQ%3D%3D&mid=2247483709&idx=1&sn=44654ce8dbc26554cc096eec692f28f6&scene=21#wechat_redirect の統合 GPU での yolov8n.xml モデルの非同期推論パフォーマンスが表示されます。
![openvino_11_figure5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/eaa9cbec-ac35-4aef-7b84-2c06fe6860e3.png)
【4. OpenVINO™ Python* API を使用して YOLOv8 物体検出モデルの推論プログラムを作成する】
次の図に示すように、Netron を使用して yolov8n.onnx を開きます。モデルの入力形状は [1,3,640,640]、出力形状は [1,84,8400] です。「84」は、cx、cy、h、w、および 80 クラスのスコアを表します。「8400」は、画像サイズが 640 の場合の YOLOv8 の 3 つの検出ヘッドの出力セル数を示します (80×80+40×40+20×20=8400)。
![openvino_11_figure6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/4b9ca134-d547-3aca-9cef-46d639f6dcfe.png)
OpenVINO™ Python* API を使用した YOLOv8 物体検出モデルのプログラム例を次に示します。

コアのソースコードは次のとおりです。

yolov8_od_ov_sync_infer_demo.py

yolov8_od_ov_sync_infer_demo.py の結果を次に示します。
![openvino_11_figure7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/45edabdc-4b30-c1e4-f034-07728f080972.png)
【5. まとめ】
AIxBoard (英語) https://mp.weixin.qq.com/s?__biz=MzI4OTQxODcxNQ%3D%3D&mid=2247483709&idx=1&sn=44654ce8dbc26554cc096eec692f28f6&scene=21#wechat_redirect の統合 GPU (24 実行ユニット) と OpenVINO™ を活用することで、YOLOv8 オブジェクト検出モデルのパフォーマンスを高速化できます。非同期処理 (英語)https://mp.weixin.qq.com/s?__biz=MzA3NDQ2NjAxMA%3D%3D&mid=2649749668&idx=2&sn=6d8a75351fadf0db0c59102ad6481c77&scene=21#wechat_redirect  と AsyncInferQueue (英語) https://mp.weixin.qq.com/s?__biz=MzA3NDQ2NjAxMA%3D%3D&mid=2649752637&idx=4&sn=ed8fa8033efa2b2b32f539218e18f03e&scene=21#wechat_redirect を使用すると、計算デバイスの使用率がさらに向上し、AI 推論プログラムのスループットを向上させることができます。

＜ OpenVINO™ ツールキットとは ＞
AI を加速する無償のツールである OpenVINO™ ツールキットは、インテルが無償で提供しているインテル製の CPU や GPU、VPU、FPGA などのパフォーマンスを最大限に活用して、コンピューター・ビジョン、画像関係をはじめ、自然言語処理や音声処理など、幅広いディープラーニング・モデルで推論を最適化し高速化する推論エンジン / ツールスイートです。

OpenVINO™ ツールキット・ページでは、ツールの概要、利用方法、導入事例、トレーニング、ツール・ダウンロードまでさまざまな情報を提供しています。ぜひ特設サイトにアクセスしてみてください。

https://www.intel.co.jp/content/www/jp/ja/internet-of-things/openvino-toolkit.html

◆法務上の注意書き

インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。

絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。

実際の費用と結果は異なる場合があります。

© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。

その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。