コンテンツにスキップ

Ultralytics YOLO11を使用した距離計算

距離の計算とは何ですか?

2つのオブジェクト間のギャップを測定することは、指定された空間内での距離計算として知られています。Ultralytics YOLO11の場合、ユーザーによって強調表示されたバウンディングボックスの距離を計算するために、バウンディングボックスの中心が使用されます。



見る: Ultralytics YOLO11を使用した距離計算

ビジュアル

Ultralytics YOLO11を使用した距離計算
Ultralytics YOLO11 の距離計算

距離計算の利点

  • ローカリゼーションの精度: コンピュータビジョンタスクにおける正確な空間位置特定を強化します。
  • サイズ推定: より良い状況理解のために、オブジェクトのサイズを推定できます。
  • シーン理解: 自動運転車や監視システムなどのアプリケーションにおける、より良い意思決定のために3Dシーンの理解を向上させます。
  • Collision Avoidance: 移動物体の間の距離を監視することにより、潜在的な衝突を検出するシステムを可能にします。
  • 空間分析: 監視対象環境内でのオブジェクトの関係と相互作用の分析を容易にします。
距離の計算
  • 距離を計算するには、左マウスボタンで任意の2つのバウンディングボックスをクリックします
  • マウスの右クリックですべての描画されたポイントが削除されます
  • マウスの左クリックを使用してポイントを描画できます
距離は推定値です
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.

Ultralytics YOLOを使用した距離の計算

import cv2

from ultralytics import solutions

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

# Video writer
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))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo11n.pt",  # path to the YOLO11 model file.
    show=True,  # display the output
)

# Process video
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)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() 引数

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

引数 種類 デフォルト 説明
model str None Ultralytics YOLOモデルファイルへのパス。

さまざまなものを利用することもできます。 track の引数 DistanceCalculation ソリューション。

引数 種類 デフォルト 説明
tracker str 'botsort.yaml' 使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml.
conf float 0.3 検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。
iou float 0.5 Intersection over Union (IoU) の閾値を設定して、重複する検出結果をフィルタリングします。
classes list None クラスインデックスで結果をフィルタリングします。例: classes=[0, 2, 3] 指定されたクラスのみを追跡します。
verbose bool True 追跡結果の表示を制御し、追跡されたオブジェクトの視覚的な出力を提供します。
device str None 推論に使用するデバイスを指定します(例: cpu, cuda:0 または 0)。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。

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

引数 種類 デフォルト 説明
show bool False もし True)は、アノテーションが付けられた画像またはビデオをウィンドウに表示します。開発またはテスト中に、視覚的なフィードバックを即座に得るのに役立ちます。
line_width None or int None バウンディングボックスの線の太さを指定します。もし None場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。
show_conf bool True ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。
show_labels bool True 検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。

実装の詳細

The DistanceCalculation クラスは、ビデオフレーム全体のオブジェクトを追跡し、選択されたバウンディングボックスの重心間のユークリッド距離を計算することによって機能します。2つのオブジェクトをクリックすると、ソリューションは次のようになります。

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

この実装では、以下を使用します。 mouse_event_for_distance メソッドを使用してマウス操作を処理し、ユーザーが必要に応じてオブジェクトを選択したり、選択をクリアしたりできるようにします。ザ・ process メソッドは、フレームごとの処理、オブジェクトの追跡、および距離の計算を処理します。

アプリケーション

YOLO11を使用した距離の計算には、数多くの実用的な応用があります。

  • 小売分析: 製品に対する顧客の近接性を測定し、店舗レイアウトの有効性を分析します。
  • 産業安全: 作業員と機械の間の安全な距離を監視します
  • 交通管理: 車間距離を分析し、テールゲートを検出します
  • スポーツ分析: 選手、ボール、および主要なフィールドポジション間の距離を計算します
  • 医療: 待合室での適切な距離の確保や、患者の移動の監視。
  • ロボティクス: ロボットが障害物や人から適切な距離を維持できるようにします。

よくある質問

Ultralytics YOLO11を使用してオブジェクト間の距離を計算するにはどうすればよいですか?

オブジェクト間の距離を計算するには、以下を使用します。 Ultralytics YOLO11、検出されたオブジェクトのバウンディングボックスの中心を特定する必要があります。このプロセスでは、 DistanceCalculation Ultralytics' のクラス solutions モジュールと、モデルのトラッキング出力を使用して距離を計算します。

Ultralytics YOLO11で距離計算を使用する利点は何ですか?

Ultralytics YOLO11 で距離計算を使用すると、いくつかの利点があります。

  • ローカリゼーションの精度: オブジェクトの正確な空間位置を提供します。
  • サイズ推定: 物理的なサイズを推定するのに役立ち、より良い状況理解に貢献します。
  • シーン理解: 3Dシーンの理解を深め、自動運転や監視などのアプリケーションにおける意思決定の改善を支援します。
  • リアルタイム処理: 実行中に計算を行うため、ライブビデオ分析に適しています。
  • 統合機能: オブジェクト追跡速度推定など、他のYOLO11ソリューションとシームレスに連携します。

Ultralytics YOLO11を使用して、リアルタイムビデオストリームで距離計算を実行できますか?

はい、Ultralytics YOLO11を使用して、リアルタイムビデオストリームで距離計算を実行できます。このプロセスでは、ビデオフレームをキャプチャします。 OpenCV、YOLO11を実行することで 物体検出、そして以下を使用します。 DistanceCalculation 連続するフレーム内のオブジェクト間の距離を計算するクラス。詳細な実装については、こちらをご覧ください。 ビデオストリームの例.

Ultralytics YOLO11を使用して距離計算中に描画されたポイントを削除するにはどうすればよいですか?

Ultralytics YOLO11を使用した距離計算中に描画された点を削除するには、マウスの右クリックを使用します。この操作により、描画したすべての点がクリアされます。詳細については、距離計算の例の注記セクションを参照してください。

Ultralytics YOLO11でDistanceCalculationクラスを初期化するための主要な引数には何がありますか?

初期化するための重要な引数 DistanceCalculation Ultralytics YOLO11 のクラスには以下が含まれます:

  • model: YOLO11モデルファイルへのパス。
  • tracker: 使用する追跡アルゴリズム(デフォルトは 'botsort.yaml')。
  • conf: 検出の信頼度閾値。
  • show: 出力を表示するためのフラグ。

網羅的なリストとデフォルト値については、DistanceCalculationの引数を参照してください。



📅 1年前に作成 ✏️ 4か月前に更新

コメント