YOLOv8 からNCNN にエクスポートしてスムーズに展開する方法
コンピュータビジョンモデルを、モバイルや組み込みシステムのような計算能力の限られたデバイスに展開するのは、厄介なことです。最適なパフォーマンスが得られるように最適化されたフォーマットを使用する必要があります。これにより、処理能力が限られたデバイスでも、高度なコンピュータビジョンタスクを十分に処理できるようになります。
NCNN フォーマットへのエクスポート機能により、モデルを最適化できます。 Ultralytics YOLOv8モデルを最適化することができます。このガイドでは、モデルをNCNN フォーマットに変換する方法を説明します。これにより、さまざまなモバイルデバイスや組み込みデバイスで、モデルがより簡単に優れたパフォーマンスを発揮できるようになります。
なぜNCNN 。
テンセントが開発した NCNNNCNN は、Linux、Android、iOS、macOSなど、幅広いプラットフォームに対応している。
NCNN は、モバイルCPU上での高速処理で知られ、ディープラーニングモデルのモバイルプラットフォームへの迅速な展開を可能にします。これにより、スマートアプリの構築が容易になり、AIのパワーを指先ひとつで利用できるようになる。
NCNN モデルの主な特徴
NCNN モデルは、開発者がモバイル、組み込み、およびエッジデバイス上でモデルを実行できるようにすることで、オンデバイス機械学習を可能にする広範な主要機能を提供する:
-
効率的かつ高性能:NCNN モデルは効率的かつ軽量に作られており、Raspberry Pi のようなリソースの限られたモバイル機器や組み込み機器で動作するように最適化されています。また、様々なコンピュータビジョンベースのタスクにおいて、高い精度で高いパフォーマンスを達成することができます。
-
量子化:NCNN モデルは、モデルの重みと活性化の精度を下げる技術である量子化をサポートしていることが多い。これにより、パフォーマンスがさらに向上し、メモリフットプリントが削減されます。
-
互換性:NCNN モデルは、以下のような一般的なディープラーニングフレームワークと互換性があります。 TensorFlowやCaffeONNX.この互換性により、開発者は既存のモデルやワークフローを簡単に使用することができます。
-
使いやすさ:NCNN モデルは、一般的なディープラーニングフレームワークとの互換性により、さまざまなアプリケーションに簡単に統合できるように設計されています。さらに、NCNN は、異なるフォーマット間でモデルを変換するためのユーザーフレンドリーなツールを提供し、開発環境全体でスムーズな相互運用性を保証します。
配備オプションNCNN
YOLOv8 モデルをNCNN フォーマットにエクスポートするコードを見る前に、NCNN モデルが通常どのように使われるのかを理解しよう。
NCNN 効率とパフォーマンスを重視して設計されたモデルは、さまざまな配備プラットフォームに対応している:
-
モバイル展開:特にAndroidとiOS向けに最適化されているため、モバイルアプリケーションにシームレスに統合でき、デバイス上での効率的な推論が可能です。
-
組み込みシステムとIoTデバイス:Raspberry Pi上でUltralytics Guideを使って推論を実行しても十分な速度が得られない場合、NCNN エクスポートされたモデルに切り替えることで高速化できる可能性があります。NCNN は、Raspberry PiやNVIDIA Jetsonのようなデバイス、特にデバイス上で迅速な処理が必要な場合に最適です。
-
デスクトップとサーバーへの展開:Linux、Windows、macOSのデスクトップおよびサーバー環境に展開でき、より高い計算能力で開発、トレーニング、評価をサポートします。
NCNN へのエクスポート :YOLOv8 モデルの変換
YOLOv8 モデルをNCNN フォーマットに変換することで、モデルの互換性と配備の柔軟性を拡大できます。
インストール
必要なパッケージをインストールするには
インストールプロセスに関する詳細な説明とベストプラクティスについては、Ultralytics インストールガイドをご覧ください。YOLOv8 に必要なパッケージをインストールする際に、何らかの問題が発生した場合は、解決策やヒントについて、よくある問題ガイドを参照してください。
使用方法
使い方の説明に入る前に、Ultralytics YOLOv8 の全モデルでエクスポートが可能ですが、 ここで選択したモデルがエクスポート機能をサポートしているかどうかを確認することができます。
使用方法
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to NCNN format
model.export(format='ncnn') # creates '/yolov8n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO('./yolov8n_ncnn_model')
# Run inference
results = ncnn_model('https://ultralytics.com/images/bus.jpg')
サポートされているエクスポートオプションの詳細については、Ultralytics 配置オプションのドキュメントページを参照してください。
エクスポートされたYOLOv8 NCNN モデルの展開
Ultralytics YOLOv8 モデルをNCNN フォーマットにエクスポートすることに成功したら、それらをデプロイすることができます。NCNN モデルを実行するための最初のステップとして推奨されるのは、YOLO("./model_ncnn_model") メソッドを使用することです。しかしながら、他の様々な設定におけるNCNN モデルのデプロイに関する詳細な説明については、以下のリソースをご覧ください:
-
アンドロイド:このブログでは、Androidアプリケーションでオブジェクト検出などのタスクを実行するために、NCNN モデルを使用する方法について説明します。
-
マックオス:macOSでタスクを実行するためのNCNN モデルの使い方を理解する。
-
リナックス:このページでは、Raspberry Piやその他の類似デバイスのような限られたリソースのデバイスにNCNN 。
-
VS2017を使用したWindows x64:このブログでは、Visual Studio Community 2017を使用してWindows x64でNCNN モデルをデプロイする方法について説明します。
概要
このガイドでは、Ultralytics YOLOv8 モデルをNCNN フォーマットにエクスポートすることについて説明しました。この変換ステップは、YOLOv8 モデルの効率とスピードを向上させ、より効果的で限られたリソースのコンピューティング環境に適したものにするために非常に重要です。
詳しい使用方法については、 NCNN の公式ドキュメントを参照してください。
また、Ultralytics YOLOv8 のその他の統合オプションにご興味がある場合は、統合ガイドページをご覧ください。