Ultralytics YOLO27:
Get Started

Ultralytics YOLO26による距離計算#

距離計算とは?#

距離計算とは、画像またはビデオフレーム内で検出された2つの物体間の距離を測定するプロセスです。Ultralytics YOLO26では、ユーザーが指定したバウンディングボックスの距離を計算するために、バウンディングボックスの重心を使用します。



視聴: Ultralytics YOLO を使って検出された物体間の距離をピクセル単位で推定する方法 🚀

ビジュアル#

Ultralytics YOLO26による距離計算
Ultralytics YOLO26による距離計算

距離計算のメリット#

  • 位置特定の精度: コンピュータービジョンタスクにおける空間位置の正確な特定を向上させます。
  • サイズ推定: コンテキストをより適切に把握するために、物体のサイズを推定できます。
  • シーン理解: 自動運転車や監視システムなどのアプリケーションで、より適切な意思決定を実現するために、3Dシーンの理解を向上させます。
  • 衝突回避: 移動する物体間の距離を監視することで、システムが潜在的な衝突を検出できるようにします。
  • 空間分析: 監視対象の環境内における物体の関係や相互作用の分析を容易にします。
距離計算
  • マウスの左ボタンで任意の2つのバウンディングボックスをクリックすると、距離を計算できます。
  • マウスの右ボタンを使用すると、描画したすべての点を削除できます。
距離は推定値です

距離は推定値であり、深度情報のない2Dデータを使用して計算するため、完全に正確ではない場合があります。

YOLO26で距離を計算する#

DistanceCalculationソリューションはフレーム間で物体を追跡し、マウスで選択した任意の2つのバウンディングボックスの重心間のユークリッド距離をピクセル単位で測定します。以下の例を実行し、2つの物体を左クリックすると、それらを結ぶ線が描画されて距離が表示されます。右クリックすると選択が解除されます。

Ultralytics YOLOによる距離計算
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 動画ライター
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# 距離計算オブジェクトを初期化します
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # YOLO26モデルファイルへのパス。
    show=True,  # 出力を表示する
)

# 動画を処理
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # 出力にアクセスします

    video_writer.write(results.plot_im)  # 処理済みフレームを書き込みます。

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # 開いているすべてのウィンドウを破棄

DistanceCalculation()の引数#

DistanceCalculationの引数を以下の表に示します。

引数種類デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパスです。
line_widthint2Solutionが描画するボックス、キーポイント、カウント表示の線幅です。
verboseboolTrue各フレームの入力shape、クラス数、処理速度を記録するSolutionのログを有効にします。トラッキング呼び出し自体は常にログを出力しません。

DistanceCalculationソリューションでは、さまざまなtrack引数も使用できます。

引数種類デフォルト説明
trackerstr'tracktrack.yaml'使用するトラッキングアルゴリズムを指定します。組み込みのオプション:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25検出の信頼度しきい値を設定します。値を低くすると、より多くの物体を追跡できますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]を指定すると、指定したクラスのみを追跡します。
devicestrNone推論に使用するデバイスを指定します(例:cpu、cuda:0、0)。モデル実行に使用するCPU、特定のGPU、その他の計算デバイスを選択できます。
imgszint or tuple640推論時の入力画像サイズです。正方形の場合は整数、または(height, width)のペアを指定します。形状はモデルのストライドに合わせて調整されます。
max_detint300トラッキング前にフレームごとに保持する検出の最大数です。混雑したシーンでソリューションが処理する物体数を制限します。
quantizeint or strNone推論精度:PyTorchおよびTorchScriptモデルでは16(FP16)または32/未設定(FP32)を使用します。他の形式では、アーティファクトとランタイムで選択された精度で計算されます。非推奨のhalfフラグに代わるものです。

さらに、以下の可視化引数を使用できます。

引数種類デフォルト説明
showboolFalseTrueの場合、注釈付き画像または動画をウィンドウに表示します。開発やテスト中にすぐ視覚的なフィードバックを得るのに便利です。
show_confboolTrue各検出のラベルとともに信頼度スコアを表示します。各検出に対するモデルの確信度を確認できます。
show_labelsboolTrue可視化出力で各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。

実装の詳細#

DistanceCalculationクラスは、ビデオフレーム間で物体を追跡し、選択されたバウンディングボックスの重心間のユークリッド距離を計算します。2つの物体をクリックすると、ソリューションは次の処理を行います。

  1. 選択したバウンディングボックスの重心(中心点)を抽出します
  2. これらの重心間のユークリッド距離をピクセル単位で計算します
  3. 物体間を結ぶ線とともに、フレーム上に距離を表示します

実装ではmouse_event_for_distanceメソッドを使用してマウス操作を処理し、ユーザーが必要に応じて物体を選択したり選択を解除したりできるようにします。processメソッドは、フレームごとの処理、物体の追跡、距離の計算を行います。

用途#

YOLO26による距離計算には、さまざまな実用的な用途があります。

  • 小売分析: 顧客と商品との距離を測定し、店舗レイアウトの有効性を分析します
  • 産業安全: 作業員と機械の間の安全な距離を監視します
  • 交通管理: 車両間隔を分析し、車間距離不保持を検出します
  • スポーツ分析: 選手、ボール、フィールド上の重要な位置の間の距離を計算します
  • ヘルスケア: 待合エリアで適切な距離を確保し、患者の移動を監視します
  • ロボティクス: ロボットが障害物や人との適切な距離を保てるようにします

よくある質問#

  • Ultralytics YOLO26を使用して物体間の距離を計算するには、検出された物体のバウンディングボックスの重心を特定する必要があります。この処理では、UltralyticsのsolutionsモジュールからDistanceCalculationクラスを初期化し、モデルのトラッキング出力を使って距離を計算します。

  • Ultralytics YOLO26で距離計算を使用すると、次のようなメリットがあります。

    • 位置特定の精度: 物体の空間位置を正確に特定できます。
    • サイズ推定: 物理的なサイズの推定に役立ち、コンテキストをより適切に把握できます。
    • シーン理解: 3Dシーンの理解を深め、自動運転や監視などのアプリケーションでより適切な意思決定を支援します。
    • リアルタイム処理: 計算をその場で実行するため、ライブビデオ分析に適しています。
    • 統合機能: 物体追跡や速度推定など、他のYOLO26ソリューションとシームレスに連携します。
  • はい、Ultralytics YOLO26を使用して、リアルタイムのビデオストリームで距離を計算できます。この処理では、OpenCVでビデオフレームをキャプチャし、YOLO26で物体検出を実行してから、DistanceCalculationクラスを使用して連続するフレーム内の物体間の距離を計算します。実装の詳細については、ビデオストリームの例をご覧ください。

  • Ultralytics YOLO26による距離計算中に描画した点を削除するには、マウスを右クリックします。この操作ですべての描画点が消去されます。詳細については、距離計算の例の注記セクションをご覧ください。

  • Ultralytics YOLO26でDistanceCalculationクラスを初期化する際の主な引数は次のとおりです。

    • model: YOLO26モデルファイルへのパスです。
    • tracker: 使用するトラッキングアルゴリズムです(ソリューションのデフォルトはtracktrack.yamlです)。
    • conf: 検出の信頼度しきい値です。
    • show: 出力を表示するためのフラグです。

    すべての引数とデフォルト値については、DistanceCalculationの引数をご覧ください。

コメント