Ultralytics YOLO27:

Ultralytics YOLOのNCNNエクスポート#

モバイルデバイスや組み込みシステムなど、計算能力に制限のあるデバイスにコンピュータービジョンモデルをデプロイするには、形式を慎重に選ぶ必要があります。最適化された形式を使用すれば、リソースに制約のあるデバイスでも高度なコンピュータービジョンタスクを効率的に処理できます。

NCNN形式にエクスポートすると、軽量なデバイスベースのアプリケーション向けにUltralytics YOLO26モデルを最適化できます。このガイドでは、モバイルデバイスや組み込みデバイスでの性能向上を目的として、モデルをNCNN形式に変換する方法を説明します。

NCNNにエクスポートする理由#

NCNN high-performance neural network inference framework

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で推論を高速化できます。これにより、より幅広いハードウェアで高性能なデプロイが可能になります。

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システム: 複数のGPUを搭載したシステムでは、device="vulkan:0"、device="vulkan:1"などを使って、特定のVulkanデバイスを選択できます。
  • エッジおよびデスクトップへのデプロイ: CUDAを利用できないデバイスでも、GPUアクセラレーションを活用できます。

Vulkanアクセラレーションを使用するには、推論の実行時にVulkanデバイスを指定します。

Vulkan推論
from ultralytics import YOLO

# エクスポートしたNCNNモデルを読み込む
ncnn_model = YOLO("./yolo26n_ncnn_model")

# Vulkan GPUアクセラレーションを使って推論を実行します(最初のVulkanデバイス)。
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# マルチGPUシステムで2番目のVulkanデバイスを使用します。
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")
Vulkanの要件

GPU用のVulkanドライバーがインストールされていることを確認してください。最新のGPUドライバーの多くは、デフォルトでVulkanをサポートしています。Linuxではvulkaninfoなどのツールを、WindowsではVulkan SDKを使って、Vulkanが利用可能かどうかを確認できます。

対応タスク#

NCNNへのエクスポートは、Ultralyticsの7つすべてのタスクをサポートしています。セマンティックセグメンテーションと深度推定は、これらのヘッドを搭載する唯一のファミリーであるYOLO26でのみ利用できます。

タスクYOLOv8YOLO11YOLO26
検出✅✅✅
セグメンテーション✅✅✅
セマンティック❌❌✅
深度❌❌✅
分類✅✅✅
姿勢推定✅✅✅
OBB✅✅✅

NCNNへのエクスポート: YOLO26モデルの変換#

YOLO26モデルをNCNN形式に変換すると、モデルの互換性とデプロイの柔軟性を高めることができます。

インストール#

必要なパッケージをインストールするには、次を実行します。

インストール
# Install the required package for YOLO26
pip install ultralytics

詳しい手順とベストプラクティスについては、Ultralytics Installationガイドをご覧ください。問題が発生した場合は、解決策についてCommon Issuesガイドをご確認ください。

使用方法#

すべてのUltralytics YOLO26モデルは、追加設定なしでエクスポートできるように設計されているため、希望するデプロイワークフローに簡単に統合できます。アプリケーションに最適な設定を選ぶには、対応するエクスポート形式と設定オプションの一覧をご覧ください。

NCNN形式は、Export、Predict、Validateの各モードをサポートしています。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。

エクスポート
from ultralytics import YOLO

# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")

# モデルをNCNN形式にエクスポート
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
推論
from ultralytics import YOLO

# エクスポートしたNCNNモデルを読み込む
model = YOLO("./yolo26n_ncnn_model")

# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")
検証
from ultralytics import YOLO

# エクスポートしたNCNNモデルを読み込む
model = YOLO("./yolo26n_ncnn_model")

# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")

エクスポート引数#

引数種類デフォルト説明
formatstr'ncnn'エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化精度: 16(FP16)はエクスポートされる重みのサイズを半分にします。32を指定するか未設定にするとFP32の重みがエクスポートされますが、NCNNのCPUランタイムは、ハードウェアが対応している場合、引き続きデフォルトでFP16を使って計算します。非推奨のhalfフラグを置き換えます。
batchint1エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートモデルが同時に処理する画像の最大数を指定します。
devicestrNoneエクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)から選択します。

エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。

エクスポートしたYOLO26 NCNNモデルのデプロイ#

Ultralytics YOLO26モデルをNCNN形式にエクスポートした後は、上記の使用例に示すYOLO("yolo26n_ncnn_model/")メソッドを使ってデプロイできます。プラットフォーム固有のデプロイ手順については、次のリソースをご覧ください。

  • Android: Androidアプリケーションでの物体検出に向けて、NCNNモデルをビルドして統合します。

  • macOS: macOSシステムにNCNNモデルをデプロイします。

  • Linux: Raspberry Piなどの組み込みシステムを含むLinuxデバイスにNCNNモデルをデプロイします。

  • Windows x64: Visual Studioを使ってWindows x64にNCNNモデルをデプロイします。

概要#

このガイドでは、リソースが限られたデバイスで効率と速度を向上させるため、Ultralytics YOLO26モデルをNCNN形式にエクスポートする方法を説明しました。

詳細については、NCNN公式ドキュメントをご覧ください。その他のエクスポートオプションについては、統合ガイドページをご覧ください。

よくある質問#

  • Ultralytics YOLO26モデルをNCNN形式にエクスポートするには、次の手順を実行します。

    • Python: YOLOクラスのexportメソッドを使います。

      from ultralytics import YOLO
      
      # YOLO26モデルを読み込みます
      model = YOLO("yolo26n.pt")
      
      # NCNN形式にエクスポート
      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のアクセラレーションを活用し、推論を高速化できます。

    詳細については、NCNNにエクスポートする理由のセクションをご覧ください。

  • Tencentが開発したNCNNは、モバイルプラットフォーム向けに特化して最適化されています。NCNNを使う主な理由は次のとおりです。

    • 高いパフォーマンス: モバイルCPUで効率的かつ高速に処理できるように設計されています。
    • クロスプラットフォーム: TensorFlowやONNXなどの一般的なフレームワークと互換性があり、異なるプラットフォーム間でのモデル変換とデプロイを容易にします。
    • コミュニティサポート: 活発なコミュニティによるサポートを通じて、継続的な改善と更新が行われます。

    詳しくは、NCNNモデルの主な機能のセクションをご覧ください。

  • NCNNは汎用性が高く、さまざまなプラットフォームをサポートしています。

    • モバイル: Android、iOS。
    • 組み込みシステムとIoTデバイス: Raspberry PiやNVIDIA Jetsonなどのデバイス。
    • デスクトップおよびサーバー: Linux、Windows、macOS。

    Raspberry Piでパフォーマンスを高めるには、Raspberry Piガイドで説明しているNCNN形式の使用をご検討ください。

  • YOLO26モデルをAndroidにデプロイするには、次の手順を実行します。

    1. Android向けにビルド: Android向けNCNNビルドガイドに従ってください。
    2. アプリに統合: NCNN Android SDKを使ってエクスポート済みモデルをアプリケーションに統合し、効率的なオンデバイス推論を実現します。

    詳しい手順については、エクスポートしたYOLO26 NCNNモデルのデプロイをご覧ください。

    より高度なガイドやユースケースについては、Ultralyticsのデプロイガイドをご覧ください。

  • NCNNは、AMD、Intel、その他のNVIDIA以外のGPUでVulkanによるGPUアクセラレーションをサポートしています。Vulkanを使用するには、次の手順を実行します。

    from ultralytics import YOLO
    
    # NCNNモデルを読み込み、Vulkan GPUで実行
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # 最初のVulkanデバイスを使用

    マルチGPUシステムでは、デバイスインデックス(例: 2番目のGPUにはvulkan:1)を指定します。GPU用のVulkanドライバーがインストールされていることを確認してください。詳しくは、Vulkan GPUアクセラレーションのセクションをご覧ください。

コメント