TensorRT統合によるUltralytics YOLOモデルの最適化

アビラミ・ヴィナ

5分で読める

2025年5月20日

リアルタイムアプリケーションのためにNVIDIA GPU上でより高速で効率的なAIパフォーマンスを実現するTensorRT統合を使用して、Ultralytics YOLOモデルをエクスポートする方法を学びます。

自動運転車が交通量の多い道路を移動する際、縁石から足を踏み外した歩行者を検知するのに数ミリ秒しかかからないことを考えてみよう。同時に、木に隠れた一時停止の標識を認識したり、近くの車が車線に割り込んできた場合に素早く反応する必要があるかもしれない。このような状況では、スピードとリアルタイムの応答が重要になる。

そこで重要な役割を果たすのが人工知能(AI)であり、特に機械が視覚データを解釈するのを助けるAIの一分野であるコンピュータビジョンである。コンピュータ・ビジョン・ソリューションが実環境で確実に機能するためには、多くの場合、情報を迅速に処理し、複数のタスクを同時に処理し、メモリを効率的に使用する必要がある。

これを実現する1つの方法は、ハードウェア・アクセラレーションで、グラフィック・プロセッシング・ユニット(GPU)のような専用デバイスを使ってモデルをより高速に実行することです。NVIDIA GPUは、低レイテンシと高スループットを実現する能力のおかげで、このようなタスクでは特によく知られています。

しかし、GPU上でモデルをそのまま実行しても、必ずしも最適なパフォーマンスが保証されるとは限りません。ビジョンAIモデルは通常、ハードウェア・デバイスの能力を十分に活用するための最適化が必要です。特定のハードウェアで性能をフルに発揮させるためには、そのハードウェア専用の命令セットを使用するようにモデルをコンパイルする必要があります。

例えば、TensorRTは、ハイエンドマシンでのパフォーマンスを向上させるためにNVIDIAによって開発されたエクスポートフォーマットと最適化ライブラリである。TensorRTは、精度を維持しながら推論時間を大幅に短縮する高度な技術を使用しています。

図 1.NVIDIA TensorRTは、様々なNVIDIAデバイス上でモデルを最適に実行することを可能にする。

この記事では、UltralyticsがサポートするTensorRTの統合について説明し、NVIDIAハードウェア上でより速く、より効率的に展開するためにYOLO11モデルをエクスポートする方法を説明します。さっそく始めましょう!

TensorRTの概要

TensorRTは、NVIDIAが開発したツールキットで、NVIDIA GPU上でAIモデルをより高速かつ効率的に実行するためのものです。TensorRTは、自動運転車や製造・製薬における品質管理など、スピードとパフォーマンスが重視される実世界のアプリケーション向けに設計されています。 

TensorRTには、コンパイラやモデル・オプティマイザのようなツールが含まれており、モデルが低レイテンシで実行され、より高いスループットに対応できるように、舞台裏で作業することができます。

UltralyticsがサポートするTensorRT統合は、精度を下げるなどの方法を使用して、GPU上でより効率的に実行されるようにYOLOモデルを最適化することで機能します。これは、16ビット浮動小数点(FP16)や8ビット整数(INT8)などの低ビットフォーマットを使用してモデルデータを表現することを指し、メモリ使用量を削減し、精度への影響を最小限に抑えながら計算を高速化します。 

また、最適化されたTensorRTモデルでは、互換性のあるニューラルネットワーク層が融合され、メモリ使用量が削減されるため、より高速で効率的な推論が可能になる。

図2.TensorRTのレイヤー融合技術の様子。

TensorRTエクスポートフォーマットの主な特徴

TensorRT統合を使ってYOLO11をエクスポートする方法を説明する前に、TensorRTモデル・フォーマットの主な特徴を見てみましょう:

  • 簡単なフレームワーク統合:TensorRTは、PyTorch、Hugging Face、ONNXなどの一般的なAIフレームワークとの直接統合をサポートしており、最大6倍高速なパフォーマンスを提供します。また、MATLABもサポートしており、Jetson、NVIDIA DRIVE、データセンターなどのプラットフォーム上で高速AIエンジンを開発することができます。
  • Tritonによるスケーラブルな展開: TensorRTフォーマットで最適化されたモデルは、NVIDIA Triton Inference Serverを使用してスケーラブルに展開することができます。NVIDIA Triton Inference Serverは、入力のバッチ処理、モデルの同時実行、モデルアンサンブルのサポート、リアルタイムのオーディオ/ビデオストリーミングなどの機能によって効率を高めます。
  • デバイスを超えた柔軟性: 小さなエッジデバイスから強力なサーバーまで、TensorRTはNVIDIAエコシステム全体で動作し、ビデオ用のDeepStream、スピーチAI用のRiva、その他サイバーセキュリティ、レコメンデーションなどのツールをサポートします。

TensorRTの統合はどのように機能するのですか?

Ultralytics YOLO11のようなUltralytics YOLOモデルをTensorRTモデル形式にエクスポートするのは簡単です。その手順を説明しよう。

UltralyticsのPythonパッケージをインストールするには、「pip」のようなパッケージマネージャを使用します。これは、コマンドプロンプトまたはターミナルで「pip install ultralytics」コマンドを実行することで行うことができます。

Ultralytics Python Packageのインストールに成功すると、オブジェクト検出、分類、インスタンス分割など、さまざまなコンピュータビジョンタスクのモデルのトレーニング、テスト、微調整、エクスポート、デプロイができるようになります。パッケージのインストール中に何らかの問題が発生した場合は、「よくある問題」ガイドを参照して解決策やヒントを得ることができます。

次のステップでは、NVIDIAデバイスが必要です。以下のコード・スニペットを使用して、YOLOv11をロードし、TensorRTモデル・フォーマットにエクスポートします。これは、YOLO11モデルの事前学習済みnanoバリアント(yolo11n.pt)をロードし、TensorRTエンジンファイル(yolo11n.engine)としてエクスポートし、NVIDIAデバイス全体に展開できるようにします。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="engine") 

モデルをTensorRT形式に変換した後、様々なアプリケーションにデプロイすることができます。 

以下の例は、エクスポートされたYOLO11モデル(yolo11n.engine)をロードし、それを使って推論を実行する方法を示しています。推論では、学習されたモデルを使って新しいデータの予測を行います。今回は、モデルをテストするために犬の入力画像を使います。 

tensorrt_model = YOLO("yolo11n.engine")

results = tensorrt_model("https://images.pexels.com/photos/1254140/pexels-photo-1254140.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2.jpg", save=True)

このコードを実行すると、以下の出力画像がruns/detect/predictフォルダに保存される。

図3.TensorRT形式でエクスポートされたYOLO11モデルを使って推論を実行した結果。

TensorRTの統合を活用するタイミング

Ultralytics Pythonパッケージは、YOLOモデルをTorchScript、CoreML、ONNX、TensorRTのようなさまざまなフォーマットにエクスポートするためのさまざまな統合をサポートしています。では、どのような場合にTensorRT統合を使うべきでしょうか?

TensorRTモデルフォーマットが、他のエクスポート統合オプションと異なる点をいくつか挙げます:

  • モデルサイズの縮小:YOLOモデルをINT8精度でTensorRTフォーマットにエクスポートすると、モデルサイズを大幅に縮小できます。FP32からINT8に量子化することで、モデルサイズを4分の1にすることができ、ダウンロード時間の短縮、必要なストレージ容量の削減、デプロイ時のメモリフットプリントの削減が可能になります。
  • 消費電力の低減:INT8量子化は、モデルサイズを縮小するだけでなく、消費電力も削減します。INT8でエクスポートされたYOLOモデルの精度を下げた演算は、FP32モデルと比較して消費電力を削減できるため、ドローン、スマートフォン、エッジ・デバイスのようなバッテリー駆動のデバイスにとって特に有益です。
  • より高速なパフォーマンス:YOLOの効率的なアーキテクチャとTensorRTのINT8最適化を組み合わせることで、推論速度を向上させることができる。

YOLO11とTensorRTモデル形式のアプリケーション

TensorRT形式にエクスポートされたUltralytics YOLOモデルは、実世界のさまざまなシナリオに展開できます。これらの最適化されたモデルは、高速で効率的なAIパフォーマンスが鍵となる場合に特に有用です。YOLOモデルの興味深い使用例をいくつか見てみましょう。

小売店のスマート・レジカウンター

小売店では、バーコードのスキャン、商品の計量、商品の梱包など、さまざまな作業がいまだに従業員によって手作業で行われている。しかし、従業員だけに頼っていると、業務が滞り、特にレジでは顧客の不満につながる可能性がある。長蛇の列は、買い物客にとっても店主にとっても不便だ。スマートなセルフレジは、この問題を解決する素晴らしいソリューションだ。

これらのカウンターは、コンピュータ・ビジョンとGPUを使用して処理を高速化し、待ち時間の短縮に貢献している。コンピュータ・ビジョンは、物体検出のようなタスクを通じて、これらのシステムが環境を見て理解することを可能にする。YOLO11のような高度なモデルは、TensorRTのようなツールで最適化されると、GPUデバイス上でより高速に実行できる。

これらのエクスポートされたモデルは、エッジAIアプリケーションのために特別に設計されたNVIDIA Jetson Nanoのようなコンパクトでありながら強力なハードウェアデバイスを使用するスマート小売セットアップに適しています。

図4.スマート・レジカウンターの例。

製造における自動欠陥検出

YOLO11のようなコンピュータビジョンモデルは、製造業で不良品を検出するためにカスタムトレーニングすることができる。一度訓練されたモデルは、高性能AIシステムを備えた施設に配備するために、TensorRT形式にエクスポートすることができます。 

製品がベルトコンベア上を移動する際、カメラが画像をキャプチャし、TensorRTフォーマットで動作するYOLO11モデルがリアルタイムで解析して欠陥を発見する。このセットアップにより、企業は問題を迅速かつ正確にキャッチし、ミスを減らして効率を向上させることができる。

同様に、医薬品などの業界では、医療用パッケージの欠陥を特定するためにこの種のシステムを使用している。実際、スマート欠陥検出システムの世界市場は、2026年までに50億ドルに成長すると見られている。

図5.製薬業界における欠陥検出のためのYOLOの使用。

TensorRTを使用する際の留意点

TensorRTの統合は、推論速度の高速化や待ち時間の短縮など、多くの利点をもたらすが、ここで留意すべきいくつかの制限がある:

  • 精度のわずかな低下:TensorRT形式でモデルをエクスポートすると、エクスポートされたモデルは元のモデルほど正確でないかもしれません。精度、リコール、モデルがオブジェクトを検出する度合い(mAPスコア)のようなパフォーマンス指標は、わずかに低下する可能性があります。これは、量子化の際に代表的なデータセットを使用することで軽減できます。 
  • デバッグの複雑さの増加:TensorRTによる最適化によって、エラーをトレースしたり、予期しない動作を理解したりするのが難しくなる可能性があります。
  • バッチサイズの感度: TensorRTの性能向上は、バッチサイズが大きいほど顕著になる。単一の画像や小さなバッチを処理するアプリケーションでは、性能の向上はそれほど顕著ではないかもしれません。

要点

Ultralytics YOLOモデルをTensorRTフォーマットにエクスポートすることで、より高速かつ効率的に実行できるようになり、工場の欠陥検出、スマートチェックアウトシステム、混雑した都市部の監視などのリアルタイムタスクに最適です。 

この最適化により、NVIDIA GPU上で、予測を高速化し、メモリと消費電力を削減することで、モデルのパフォーマンスが向上します。いくつかの制限はありますが、パフォーマンスが向上するため、TensorRTの統合は、NVIDIAハードウェア上で高速なコンピュータビジョンシステムを構築する人にとって最適な選択肢となります。

AIについてもっと知りたいですか?GitHubリポジトリを探索し、私たちのコミュニティとつながり、あなたのコンピュータビジョンプロジェクトをジャンプスタートするためのライセンスオプションをチェックしてください。製造業におけるAIや 物流業界におけるコンピュータビジョンなどのイノベーションについては、ソリューションページをご覧ください。

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう

無料で始める
クリップボードにコピーされたリンク