コンテンツへスキップ

Neural Magicの DeepSparse エンジンを使ってYOLOv8 推論を最適化する。

Ultralytics'YOLOv8のようなオブジェクト検出モデルを様々なハードウェアに展開する場合、最適化などのユニークな問題にぶつかることがあります。そこでNeural Magicの DeepSparse Engine とYOLOv8の統合が必要になります。これは、YOLOv8 モデルの実行方法を変換し、CPU 上で直接 GPU レベルのパフォーマンスを可能にします。

このガイドでは、Neural Magic の DeepSparse を使用してYOLOv8 をデプロイする方法、推論を実行する方法、およびパフォーマンスが最適化されていることを確認するためのベンチマーク方法を示します。

Neural MagicのDeepSparse

Neural MagicDeepSparseの概要

Neural MagicDeepSparseは、CPU上でのニューラルネットワークの実行を最適化するために設計された推論ランタイムである。スパース、プルーニング、量子化などの高度なテクニックを適用し、精度を維持しながら計算量を劇的に削減します。DeepSparseは、さまざまなデバイスで効率的かつスケーラブルにニューラルネットワークを実行するための俊敏なソリューションを提供します。

Neural Magicの DeepSparse と統合するメリットYOLOv8

DeepSparseを使用したYOLOV8 の展開方法について説明する前に、DeepSparseを使用するメリットを理解しましょう。主な利点は以下のとおりです:

  • 推論速度の向上:最大525 FPS(YOLOv8n )を達成し、従来の手法と比較してYOLOv8 の推論機能を大幅に高速化。

推論スピードの向上

  • 最適化されたモデル効率:プルーニングと量子化を使用してYOLOv8 の効率を高め、精度を維持しながらモデルサイズと計算量を削減します。

最適化されたモデル効率

  • 標準的なCPUで高いパフォーマンス:CPU上でGPU並みのパフォーマンスを実現し、さまざまなアプリケーションに、よりアクセスしやすくコスト効率の高いオプションを提供します。

  • 合理化された統合と展開:画像やビデオの注釈機能など、YOLOv8 をアプリケーションに簡単に統合できるユーザーフレンドリーなツールを提供。

  • 様々なモデルタイプをサポート:標準モデルとスパース最適化YOLOv8 モデルの両方に対応し、配備の柔軟性を高めます。

  • コスト効率と拡張性に優れたソリューション:運用コストを削減し、高度な物体検出モデルをスケーラブルに展開。

Neural Magic 「DeepSparse」テクノロジーの仕組みとは?

Neural Magicのディープ・スパース・テクノロジーは、ニューラルネットワーク計算における人間の脳の効率性にインスパイアされている。脳から以下の2つの重要な原則を採用している:

  • スパース化:スパース化のプロセスでは、深層学習ネットワークから冗長な情報を刈り込み、精度を損なうことなく、より小さく高速なモデルを実現する。この手法により、ネットワークのサイズと計算量が大幅に削減される。

  • 参照の局所性:DeepSparseは独自の実行方法を採用し、ネットワークをTensor カラムに分割します。これらのカラムは深さ方向に実行され、CPUのキャッシュ内に完全に収まる。このアプローチは脳の効率を模倣しており、データの移動を最小限に抑え、CPUのキャッシュ使用を最大化します。

Neural Magic 「DeepSparse」テクノロジーの仕組み

Neural Magic 「DeepSparse」テクノロジーの仕組みの詳細については、彼らのブログ記事をご覧ください。

カスタムデータセットで訓練されたYOLOv8 のスパースバージョンの作成

Neural Magic によるオープンソースのモデルリポジトリである SparseZoo は、事前にスパース化されたYOLOv8 モデルのチェックポイントのコレクションを提供しています。Ultralytics とシームレスに統合されたSparseMLを使えば、ユーザは簡単なコマンドラインインタフェースを使用して、特定のデータセット上でこれらのスパースチェックポイントを簡単に微調整することができます。

詳細はNeural Magic の SparseMLYOLOv8 ドキュメントを参照してください。

使用方法DeepSparse を使用したYOLOV8 の展開

Neural Magic の DeepSparse を使用してYOLOv8 を展開するには、いくつかの簡単な手順が必要です。使用方法の説明に入る前に、 Ultralytics が提供するYOLOv8 モデルの範囲を必ず確認してください。これにより、プロジェクトの要件に最適なモデルを選択できます。以下に、その方法を説明します。

ステップ1:インストール

必要なパッケージをインストールするには

インストール

# Install the required packages
pip install deepsparse[yolov8]

ステップ 2:YOLOv8 をONNX 形式にエクスポートする

ONNX DeepSparse Engineでは、YOLOv8 形式のモデルが必要です。モデルをこの形式にエクスポートすることは、DeepSparseとの互換性のために不可欠です。YOLOv8 モデルをエクスポートするには、以下のコマンドを使用します:

モデル輸出

# Export YOLOv8 model to ONNX format
yolo task=detect mode=export model=yolov8n.pt format=onnx opset=13

このコマンドは yolov8n.onnx モデルをディスクに保存する。

ステップ3:推論の展開と実行

ONNX 形式のYOLOv8 モデルがあれば、DeepSparse を使用して推論を展開および実行できます。これは、DeepSparseの直感的なAPI(Python )を使って簡単に行うことができます:

推論の展開と実行

from deepsparse import Pipeline

# Specify the path to your YOLOv8 ONNX model
model_path = "path/to/yolov8n.onnx"

# Set up the DeepSparse Pipeline
yolo_pipeline = Pipeline.create(
    task="yolov8",
    model_path=model_path
)

# Run the model on your images
images = ["path/to/image.jpg"]
pipeline_outputs = yolo_pipeline(images=images)

ステップ4:パフォーマンスのベンチマーク

YOLOv8 モデルが DeepSparse 上で最適に動作していることを確認することが重要です。モデルのパフォーマンスをベンチマークして、スループットと待ち時間を分析できます:

ベンチマーキング

# Benchmark performance
deepsparse.benchmark model_path="path/to/yolov8n.onnx" --scenario=sync --input_shapes="[1,3,640,640]"

ステップ5:追加機能

DeepSparseは、画像注釈やデータセット評価などのアプリケーションにYOLOv8 を実用的に統合するための追加機能を提供する。

その他の特徴

# For image annotation
deepsparse.yolov8.annotate --source "path/to/image.jpg" --model_filepath "path/to/yolov8n.onnx"

# For evaluating model performance on a dataset
deepsparse.yolov8.eval --model_path "path/to/yolov8n.onnx"

annotateコマンドを実行すると、指定した画像が処理され、オブジェクトが検出され、バウンディングボックスと分類とともにアノテーションされた画像が保存されます。アノテーションされた画像は、annotation-resultsフォルダに保存されます。これは、モデルの検出能力を視覚的に表現するのに役立ちます。

画像アノテーション機能

evalコマンドを実行すると、precision、recall、mAP(mean Average Precision)などの詳細な出力メトリクスが得られます。これにより、データセット上でのモデルのパフォーマンスを包括的に見ることができます。この機能は、特定のユースケースに対してYOLOv8 モデルを微調整・最適化し、高い精度と効率を確保するために特に有用です。

概要

このガイドでは、Ultralytics'YOLOv8 とNeural Magic's DeepSparse Engine の統合について検討しました。この統合が、CPU プラットフォームにおけるYOLOv8 のパフォーマンスをどのように向上させ、GPU レベルの効率性と高度なニューラル・ネットワークのスパース技術を提供するかを強調しました。

詳細な情報と高度な使用法については、Neural Magicの DeepSparse ドキュメントを参照してください。また、YOLOv8 との統合に関するNeural Magic'のドキュメントや、これに関する素晴らしいセッションもご覧ください。

さらに、YOLOv8 の様々な統合をより広く理解するために、Ultralytics 統合ガイドのページをご覧ください。ここでは、他のエキサイティングな統合の可能性を幅広く発見することができます。



作成日:2023-12-30 更新日:2024-01-05
作成者:glenn-jocher(1),abirami-vina(1)

コメント