Real-time Inference
即時のAI予測を可能にするリアルタイム推論の力を説明します。Ultralytics YOLO26がエッジデバイスやロボティクス向けに低レイテンシの結果を提供する方法を紹介します。
リアルタイム推論とは、訓練済みの 機械学習 (ML) モデルがライブ入力データを受け取り、ほぼ瞬時に予測を生成するプロセスを指します。後でデータをまとめて収集・分析するオフライン処理とは異なり、リアルタイム推論はその場で実行されるため、システムは周囲の環境に迅速かつ柔軟に反応できます。この機能は、現代の 人工知能 (AI) アプリケーションの中核であり、デバイスが数ミリ秒以内にデータを認識、解釈し、対応できるようにします。
低レイテンシの重要性#
リアルタイム性能を評価する主要な指標は、推論レイテンシ です。これは、データがモデルに入力される時点(ビデオカメラからのフレームなど)から、モデルが出力(バウンディングボックスや分類ラベルなど)を生成する時点までの時間遅延を測定します。アプリケーションが「リアルタイム」と見なされるには、入力データストリームの速度に対応できるほどレイテンシが低くなければなりません。
たとえば、毎秒30フレーム(FPS)で動作する ビデオ理解 タスクでは、システムが各フレームを処理するための時間予算は約33ミリ秒に限られます。推論にそれ以上の時間がかかると、システムに遅延が生じ、フレームの欠落や応答の遅延につながる可能性があります。これを実現するには、GPU や NVIDIA Jetson などの専用 エッジ AI デバイスを使用したハードウェアアクセラレーションが必要になることがよくあります。
リアルタイム推論とバッチ推論#
リアルタイムワークフローと バッチ処理 を区別すると理解しやすくなります。どちらも予測の生成を伴いますが、目的とアーキテクチャは大きく異なります。
- リアルタイム推論: 低レイテンシを優先します。単一のデータポイント(または非常に小さなバッチ)を、到着するとすぐに処理します。これは、適切なタイミングでブレーキをかけるために車が歩行者を瞬時に検出する必要がある 自動運転車 など、インタラクティブなアプリケーションに不可欠です。
- バッチ推論: 高スループットを優先します。大量のデータを収集し、すべてを一度に処理します。これは、毎晩の在庫レポートの生成や、過去の ビッグデータ の傾向分析など、緊急性のないタスクに適しています。
実世界での利用例#
一瞬で意思決定を行える能力は、動的な環境での自動化を可能にし、さまざまな業界を変革してきました。
- スマート製造: 製造業における AI では、コンベヤーベルト上に設置されたカメラがリアルタイム推論を使用して自動品質管理を実行します。物体検出 モデルは、高速で移動する製品内の欠陥や異物を瞬時に識別できます。異常が検出されると、システムはロボットアームを作動させて対象物を直ちに取り除き、高品質な製品だけが梱包工程に進むようにします。
- 監視とセキュリティ: 現代のセキュリティシステムは、境界を監視するために コンピュータビジョン に依存しています。これらのカメラは映像を記録するだけでなく、リアルタイムの 人物検出 や 顔認識 を実行し、不正アクセスが発生した瞬間にセキュリティ担当者へ警告します。
- ロボティクス: ロボティクスにおける AI の分野では、ロボットが 姿勢推定 を使用して複雑な物理空間を移動します。倉庫ロボットは、安全かつ効率的に経路を計画するために、障害物や作業員の位置を継続的に推論する必要があります。
最適化とデプロイ#
リアルタイムアプリケーション向けにモデルをデプロイするには、対象ハードウェア上で効率的に動作するよう最適化が必要になることがよくあります。モデル量子化 などの手法では、モデルの重みの精度(float32 から int8 など)を下げることで、メモリ使用量を削減し、精度 への影響を最小限に抑えながら推論速度を向上させます。
開発者は、Ultralytics Platformを活用して、このプロセスを効率化できます。このプラットフォームにより、トレーニングが簡素化され、ユーザーはNVIDIA GPU向けのTensorRT、Intel CPU向けのOpenVINO、モバイルデプロイメント向けのTFLiteなど、最適化された形式にモデルをエクスポートできます。
コード例#
次の Python スニペットは、ultralytics ライブラリを使用して、Webカメラの映像に対してリアルタイム推論を実行する方法を示します。エッジデバイス上での高速なパフォーマンスを実現するために特別に設計された YOLO26 Nanoモデルを使用します。
from ultralytics import YOLO
# Load the YOLO26 Nano model, optimized for speed and real-time tasks
model = YOLO("yolo26n.pt")
# Run inference on the default webcam (source="0")
# 'stream=True' returns a generator for memory-efficient processing
# 'show=True' displays the video feed with bounding boxes in real-time
results = model.predict(source="0", stream=True, show=True)
# Iterate through the generator to process frames as they arrive
for result in results:
# Example: Print the number of objects detected in the current frame
print(f"Detected {len(result.boxes)} objects")








