Ultralytics YOLO NCNN エクスポート#
モバイルや組み込みシステムなどの計算能力が限られたデバイスにcomputer visionモデルをデプロイするには、慎重なフォーマットの選択が必要です。最適化されたフォーマットを使用することで、リソースが制限されたデバイスでも高度なコンピュータービジョンタスクを効率的に処理できるようになります。
NCNNフォーマットにエクスポートすることで、Ultralytics YOLO26モデルを軽量なデバイスベースのアプリケーション向けに最適化できます。このガイドでは、モバイルおよび組み込みデバイスでのパフォーマンスを向上させるために、モデルをNCNNフォーマットに変換する方法について説明します。
NCNNへエクスポートする理由#
Tencentによって開発されたNCNNフレームワークは、スマートフォン、組み込みデバイス、IoTデバイスなどのモバイルプラットフォーム向けに特別に最適化された、高性能なneural network推論コンピューティングフレームワークです。NCNNは、Linux、Android、iOS、macOSなど、幅広いプラットフォームと互換性があります。
NCNNはモバイルCPU上での高速な処理速度で知られており、deep learningモデルをモバイルプラットフォームへ迅速にデプロイできるため、AIを活用したアプリケーションの構築に最適です。
NCNNモデルの主な特徴#
NCNNモデルは、オンデバイスのmachine learningを可能にするいくつかの重要な機能を提供し、開発者がモバイル、組み込み、エッジデバイスにモデルをデプロイするのをサポートします。
-
効率的かつ高性能: NCNNモデルは軽量であり、リソースが限られたRaspberry Piなどのモバイルおよび組み込みデバイス向けに最適化されている一方で、コンピュータービジョンタスクにおいて高いaccuracyを維持します。
-
量子化: NCNNは量子化をサポートしています。これは、モデルの重みと活性化のprecisionを下げてパフォーマンスを向上させ、メモリフットプリントを削減する手法です。
-
互換性: NCNNモデルは、TensorFlow、Caffe、ONNXなどの人気のディープラーニングフレームワークと互換性があり、開発者は既存のモデルやワークフローを活用できます。
-
使いやすさ: NCNNは、異なるフォーマット間でモデルを変換するためのユーザーフレンドリーなツールを提供しており、さまざまな開発環境間でのスムーズな相互運用性を保証します。
-
Vulkan GPUアクセラレーション: NCNNは、AMD、Intel、その他の非NVIDIA GPUを含む複数のベンダー間でのGPUアクセラレーション推論にVulkanをサポートしており、より幅広いハードウェア上での高性能な展開を可能にします。
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のエクスポートは、7つのUltralyticsタスクすべてをサポートしています。セマンティックセグメンテーションと深度推定は、それらのヘッドを搭載している唯一のファミリーであるYOLO26でのみ利用可能です。
NCNNへのエクスポート:YOLO26モデルの変換#
YOLO26モデルをNCNNフォーマットに変換することで、モデルの互換性と展開の柔軟性を拡張できます。
インストール#
必要なパッケージをインストールするには、以下を実行してください。
# Install the required package for YOLO26
pip install ultralytics詳細な手順とベストプラクティスについては、Ultralytics Installation guideを参照してください。問題が発生した場合は、Common Issues guideを参照して解決策を確認してください。
使用方法#
すべての Ultralytics YOLO26 モデルは、標準でエクスポートをサポートするように設計されているため、お好みのデプロイワークフローに簡単に統合できます。サポートされているエクスポート形式と構成オプションの全リストを表示して、アプリケーションに最適なセットアップを選択できます。
NCNNフォーマットは、Export、Predict、およびValidateモードをサポートしています。モデルをエクスポートした後、エクスポートされたモデルをロードして推論を実行するか、精度を検証します。
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 です。非推奨となった half フラグを置き換えます。 |
batch | int | 1 | エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートされたモデルが同時に処理する画像の最大数を指定します。 |
device | str | None | エクスポートに使用するデバイスを指定します:GPU(device=0)、CPU(device=cpu)、Appleシリコン用MPS(device=mps)。 |
エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。
エクスポートされたYOLO26 NCNNモデルの展開#
Ultralytics YOLO26モデルをNCNNフォーマットにエクスポートした後、上記の使用例に示すように YOLO("yolo26n_ncnn_model/") メソッドを使用してデプロイできます。プラットフォーム固有のデプロイ手順については、次のリソースを参照してください。
-
Android: Androidアプリケーションでのobject detection向けにNCNNモデルをビルドし、統合します。
-
macOS: macOSシステムにNCNNモデルをデプロイします。
-
Linux: Raspberry Piや同様の組み込みシステムを含むLinuxデバイスにNCNNモデルをデプロイします。
-
Windows x64: Visual Studioを使用してWindows x64にNCNNモデルをデプロイします。
要約#
本ガイドでは、リソースに制約のあるデバイス上での効率と速度向上のため、Ultralytics YOLO26モデルをNCNNフォーマットへエクスポートする方法について解説しました。
詳細については、official NCNN documentationを参照してください。その他のエクスポートオプションについては、integration guide pageをご覧ください。
よくある質問 (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'
詳細なエクスポートオプションについては、Exportのドキュメントを参照してください。
-
Ultralytics YOLO26モデルをNCNNにエクスポートすることで、いくつかの利点が得られます。
- 効率性: NCNNモデルはモバイルおよび組み込みデバイス向けに最適化されており、限られた計算リソースでも高いパフォーマンスを保証します。
- 量子化: NCNNは、モデルの速度を向上させ、メモリ使用量を削減する量子化のような手法をサポートしています。
- 幅広い互換性: Android、iOS、Linux、macOSを含む複数のプラットフォームでNCNNモデルを展開できます。
- Vulkan GPUアクセラレーション: Vulkanを介してAMD、Intel、その他の非NVIDIA GPUでのGPUアクセラレーションを活用し、より高速な推論を実現します。
詳細については、Why Export to NCNN?セクションを参照してください。
Tencentが開発したNCNNは、モバイルプラットフォーム向けに特別に最適化されています。NCNNを使用する主な理由は以下の通りです。
- 高性能: モバイルCPU上で効率的かつ高速に処理できるように設計されています。
- クロスプラットフォーム: TensorFlowやONNXなどの一般的なフレームワークと互換性があり、異なるプラットフォーム間でのモデルの変換とデプロイが容易になります。
- コミュニティサポート: アクティブなコミュニティサポートにより、継続的な改善とアップデートが保証されています。
詳細については、Key Features of NCNN Modelsセクションを参照してください。
NCNNは多目的であり、さまざまなプラットフォームをサポートしています。
- モバイル: Android、iOS。
- 組み込みシステムおよびIoTデバイス: Raspberry PiやNVIDIA Jetsonなどのデバイス。
- デスクトップおよびサーバー: Linux、Windows、macOS。
Raspberry Piでのパフォーマンスを向上させるには、Raspberry Pi Guideで詳細に説明されているように、NCNNフォーマットの使用を検討してください。
Android上でYOLO26モデルを展開するには:
- Android向けビルド: NCNN Build for Androidガイドに従ってください。
- アプリへの統合: NCNN Android SDKを使用して、エクスポートされたモデルをアプリケーションに統合し、効率的なデバイス上での推論を実現します。
詳細な手順については、Deploying Exported YOLO26 NCNN Modelsを参照してください。
より高度なガイドとユースケースについては、Ultralytics deployment guideをご覧ください。
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 Accelerationセクションを参照してください。