Ultralytics YOLO NCNNエクスポート#
モバイルデバイスや組み込みシステムなど、計算能力が限られたデバイスにコンピュータービジョンモデルをデプロイするには、形式を慎重に選択する必要があります。最適化された形式を使用することで、リソースに制約のあるデバイスでも、高度なコンピュータービジョンタスクを効率的に処理できます。
NCNN形式にエクスポートすると、軽量なデバイスベースのアプリケーション向けにUltralytics YOLO26モデルを最適化できます。このガイドでは、モバイルデバイスや組み込みデバイスでのパフォーマンスを向上させるために、モデルをNCNN形式に変換する方法を説明します。
NCNNにエクスポートする理由#
Tencentが開発したNCNNフレームワークは、携帯電話、組み込みデバイス、IoTデバイスなどのモバイルプラットフォーム向けに特化して最適化された、高性能なニューラルネットワーク推論コンピューティングフレームワークです。NCNNは、Linux、Android、iOS、macOSなど、幅広いプラットフォームに対応しています。
NCNNはモバイルCPU上での高速な処理速度で知られており、ディープラーニングモデルをモバイルプラットフォームに迅速にデプロイできます。そのため、AIを活用したアプリケーションの構築に適しています。
NCNNモデルの主な機能#
NCNNモデルには、デバイス上での機械学習を可能にする主要な機能が複数備わっており、開発者はモバイル、組み込み、エッジデバイスにモデルをデプロイできます。
-
効率性と高性能: NCNNモデルは軽量で、リソースが限られたRaspberry Piなどのモバイルデバイスや組み込みデバイス向けに最適化されている一方、コンピュータービジョンタスクで高い精度を維持します。
-
量子化: NCNNは、モデルの重みとアクティベーションの精度を下げてパフォーマンスを向上させ、メモリ使用量を削減する量子化に対応しています。
-
互換性: NCNNモデルは、TensorFlow、Caffe、ONNXなどの一般的なディープラーニングフレームワークと互換性があり、既存のモデルやワークフローを活用できます。
-
使いやすさ: NCNNは、形式間でモデルを変換するための使いやすいツールを提供し、異なる開発環境間でのスムーズな相互運用性を実現します。
-
Vulkan GPUアクセラレーション: NCNNはVulkanに対応しており、AMD、Intel、その他のNVIDIA以外のGPUを含む複数ベンダーのGPUでGPUアクセラレーション推論を実行できます。これにより、より幅広いハードウェアで高性能なデプロイが可能になります。
NCNNによるデプロイオプション#
NCNNモデルは、さまざまなデプロイプラットフォームに対応しています。
-
モバイルデプロイ: AndroidおよびiOS向けに最適化されており、効率的なデバイス上推論をモバイルアプリケーションにスムーズに統合できます。
-
組み込みシステムとIoTデバイス: Raspberry PiやNVIDIA Jetsonなど、リソースに制約のあるデバイスに適しています。Ultralytics Guideを使用したRaspberry Piでの標準推論では不十分な場合、NCNNによってパフォーマンスを大幅に向上できる可能性があります。
-
デスクトップおよびサーバーデプロイ: 開発、トレーニング、評価ワークフロー向けに、Linux、Windows、macOSへのデプロイに対応しています。
Vulkan GPUアクセラレーション#
NCNNはVulkanによるGPUアクセラレーションに対応しており、AMD、Intel、その他のNVIDIA以外のグラフィックスカードを含む幅広いGPUで高性能な推論を実行できます。これは特に次の用途で有用です。
- ベンダーをまたぐGPUサポート: NVIDIA GPUに限定されるCUDAとは異なり、Vulkanは複数のGPUベンダーに対応しています。
- マルチGPUシステム:
device="vulkan:0"、device="vulkan:1"などを使用して、複数のGPUを搭載したシステムで特定のVulkanデバイスを選択できます。 - エッジおよびデスクトップデプロイ: CUDAを利用できないデバイスでGPUアクセラレーションを活用できます。
Vulkanアクセラレーションを使用するには、推論の実行時にVulkanデバイスを指定します。
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")GPU用のVulkanドライバーがインストールされていることを確認してください。ほとんどの最新GPUドライバーには、デフォルトでVulkanサポートが含まれています。Linuxではvulkaninfoなどのツールを使用し、WindowsではVulkan SDKを使用して、Vulkanが利用可能か確認できます。
サポートされるタスク#
NCNNエクスポートは、Ultralyticsの7つすべてのタスクに対応しています。セマンティックセグメンテーションと深度推定はYOLO26でのみ利用できます。YOLO26は、これらのヘッドを搭載して出荷される唯一のファミリーです。
NCNNへのエクスポート: YOLO26モデルの変換#
YOLO26モデルをNCNN形式に変換することで、モデルの互換性とデプロイの柔軟性を高めることができます。
インストール#
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO26
pip install ultralytics詳細な手順とベストプラクティスについては、Ultralytics Installation guideを参照してください。問題が発生した場合は、解決策についてCommon Issues guideを確認してください。
使用方法#
すべてのUltralytics YOLO26モデルは、すぐにエクスポートできるよう設計されているため、任意のデプロイワークフローに簡単に統合できます。アプリケーションに最適な設定を選択するには、サポートされているエクスポート形式と設定オプションの全一覧を確認してください。
NCNN形式は、エクスポート、予測、検証モードに対応しています。モデルをエクスポートした後、エクスポート済みのモデルを読み込んで推論を実行するか、精度を検証します。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")エクスポート引数#
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'ncnn' | エクスポートされたモデルの対象形式で、さまざまなデプロイ環境との互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力に使用する画像サイズです。正方形画像の場合は整数、特定の寸法の場合はタプル(height, width)を指定できます。 |
quantize | intまたはstr | None | 量子化精度: 16(FP16)はエクスポートされる重みを半分にします。32/未指定の場合はFP32の重みをエクスポートしますが、NCNNのCPUランタイムは、ハードウェアが対応している場合、デフォルトでFP16を使用して計算します。非推奨となったhalfフラグを置き換えるものです。 |
batch | int | 1 | エクスポートするモデルのバッチ推論サイズ、またはpredictモードでエクスポート済みモデルが同時に処理する画像の最大数を指定します。 |
device | str | None | エクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)を指定できます。 |
エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。
エクスポート済みYOLO26 NCNNモデルのデプロイ#
Ultralytics YOLO26モデルをNCNN形式にエクスポートした後は、上記の使用例に示すYOLO("yolo26n_ncnn_model/")メソッドを使用してデプロイできます。プラットフォーム固有のデプロイ手順については、次のリソースを参照してください。
-
macOS: macOSシステムにNCNNモデルをデプロイします。
-
Linux: Raspberry Piなどの組み込みシステムを含むLinuxデバイスにNCNNモデルをデプロイします。
-
Windows x64: Visual Studioを使用して、Windows x64にNCNNモデルをデプロイします。
まとめ#
このガイドでは、リソースに制約のあるデバイスでの効率と速度を向上させるために、Ultralytics YOLO26モデルをNCNN形式にエクスポートする方法を説明しました。
詳細については、NCNN公式ドキュメントを参照してください。その他のエクスポートオプションについては、統合ガイドページをご覧ください。
FAQ#
Ultralytics YOLO26モデルをNCNN形式にエクスポートするには、次の手順を実行します。
-
Python: YOLOクラスの
exportメソッドを使用します。from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates 'yolo26n_ncnn_model' -
CLI:
yolo exportコマンドを使用します。yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
詳細なエクスポートオプションについては、エクスポートドキュメントを参照してください。
-
Ultralytics YOLO26モデルをNCNNにエクスポートすると、次のようなメリットがあります。
- 効率性: NCNNモデルはモバイルデバイスや組み込みデバイス向けに最適化されているため、計算リソースが限られていても高いパフォーマンスを実現できます。
- 量子化: NCNNは量子化などの技術に対応しており、モデルの速度を向上させ、メモリ使用量を削減できます。
- 幅広い互換性: NCNNモデルは、Android、iOS、Linux、macOSなど、複数のプラットフォームにデプロイできます。
- Vulkan GPUアクセラレーション: Vulkanを介してAMD、Intel、その他のNVIDIA以外のGPUでGPUアクセラレーションを活用し、推論を高速化できます。
詳細については、NCNNにエクスポートする理由のセクションを参照してください。
Tencentが開発したNCNNは、モバイルプラットフォーム向けに特化して最適化されています。NCNNを使用する主な理由は次のとおりです。
- 高性能: モバイルCPU上で効率的かつ高速に処理できるよう設計されています。
- クロスプラットフォーム: TensorFlowやONNXなどの一般的なフレームワークと互換性があり、異なるプラットフォーム間でモデルを変換およびデプロイしやすくなります。
- コミュニティサポート: 活発なコミュニティによるサポートにより、継続的な改善と更新が実現されています。
詳細については、NCNNモデルの主な機能のセクションを参照してください。
NCNNは汎用性が高く、さまざまなプラットフォームに対応しています。
- モバイル: Android、iOS。
- 組み込みシステムとIoTデバイス: Raspberry PiやNVIDIA Jetsonなどのデバイス。
- デスクトップとサーバー: Linux、Windows、macOS。
Raspberry Piでパフォーマンスを向上させるには、Raspberry Pi Guideで詳しく説明されているNCNN形式の使用を検討してください。
YOLO26モデルをAndroidにデプロイするには、次の手順を実行します。
- Android向けにビルド: NCNN Build for Androidガイドに従ってください。
- アプリと統合: NCNN Android SDKを使用して、効率的なデバイス上推論のためにエクスポート済みモデルをアプリケーションに統合します。
詳細な手順については、エクスポート済みYOLO26 NCNNモデルのデプロイを参照してください。
より高度なガイドとユースケースについては、Ultralyticsデプロイガイドをご覧ください。
NCNNは、AMD、Intel、その他のNVIDIA以外のGPUでのGPUアクセラレーションにVulkanを使用できます。Vulkanを使用するには、次の手順を実行します。
from ultralytics import YOLO # Load NCNN model and run with Vulkan GPU model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Use first Vulkan deviceマルチGPUシステムでは、デバイスインデックスを指定します(例: 2番目のGPUには
vulkan:1)。GPU用のVulkanドライバーがインストールされていることを確認してください。詳細については、Vulkan GPUアクセラレーションのセクションを参照してください。