Ultralytics YOLO26 を使用した距離計算#
距離計算とは?#
距離計算は、画像またはビデオフレーム内の検出された2つのオブジェクト間の空間を測定するプロセスです。Ultralytics YOLO26の場合、ユーザーによってハイライトされたbounding boxの重心を使用して、境界ボックスの距離を計算します。
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
ビジュアル#
| Ultralytics YOLO26 を使用した距離計算 |
|---|
![]() |
距離計算の利点#
- ローカライゼーションPrecision: computer visionタスクにおける正確な空間位置決めを強化します。
- サイズ推定: オブジェクトサイズの推定を可能にし、コンテキストの理解を向上させます。
- シーン理解: autonomous vehiclesや監視システムなどのアプリケーションにおける意思決定を向上させるため、3Dシーンの理解を改善します。
- 衝突回避: 移動するオブジェクト間の距離を監視することで、システムが潜在的な衝突を検出できるようにします。
- 空間分析: 監視環境内でのオブジェクトの関係や相互作用の分析を容易にします。
距離計算
- マウスの左ボタンで任意の2つのバウンディングボックスをクリックすると、距離が計算されます。
- 右ボタンを使用すると、描画されたすべてのポイントが削除されます。
- フレーム内の任意の場所を左クリックすると、新しいポイントが追加されます。
距離は推定値です
距離は推定値であり、深度情報を持たない2Dデータを使用して計算されるため、完全に正確ではない場合があります。
YOLO26による距離計算#
DistanceCalculationソリューションは、フレーム間でオブジェクトを追跡し、マウスで選択した任意の2つの境界ボックスの重心間のユークリッド距離をピクセル単位で測定します。以下の例を実行し、左クリックして2つのオブジェクトを選択して接続線を引いて距離を読み取り、右クリックして選択をクリアします。
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="yolo26n.pt", # path to the YOLO26 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 windowsDistanceCalculation()の引数#
以下はDistanceCalculationの引数を示す表です。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパス。 |
また、DistanceCalculationソリューション内で様々なtrack引数を利用することもできます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 使用するトラッキングアルゴリズムを指定します。ビルトインオプション: botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.1 | 検出の信頼度しきい値を設定します。低い値を設定するとより多くの物体を追跡できますが、誤検知が含まれる可能性があります。 |
iou | float | 0.7 | 重なり合う検出をフィルタリングするための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 | int or None | None | バウンディングボックスの線の太さを指定します。None の場合、画像のサイズに基づいて線の太さが自動的に調整されます。明瞭さのための視覚的なカスタマイズを提供します。 |
show_conf | bool | True | 各検出の信頼度スコアをラベルと一緒に表示します。各検出に対するモデルの確信度を把握できます。 |
show_labels | bool | True | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
実装の詳細#
DistanceCalculationクラスは、ビデオフレーム間でオブジェクトを追跡し、選択された境界ボックスの重心間のユークリッド距離を計算することで機能します。2つのオブジェクトをクリックすると、ソリューションは以下の処理を行います。
- 選択されたバウンディングボックスの重心(中心点)を抽出します
- ピクセル単位でこれらの重心間のユークリッド距離を計算します
- オブジェクト間に接続線を引いて、フレーム上に距離を表示します
この実装では、mouse_event_for_distanceメソッドを使用してマウスインタラクションを処理し、ユーザーがオブジェクトを選択したり必要に応じて選択をクリアしたりできるようにしています。processメソッドは、フレームごとの処理、オブジェクトの追跡、および距離の計算を処理します。
アプリケーション#
YOLO26 による距離計算には、多くの実用的な用途があります。
- 小売分析: 製品への顧客の近接度を測定し、店舗レイアウトの有効性を分析します
- 産業安全: 作業員と機械の間の安全な距離を監視します
- 交通管理: 車両の間隔を分析し、あおり運転を検出します
- スポーツ分析: 選手、ボール、フィールドの主要な位置間の距離を計算します
- ヘルスケア: 待合エリアでの適切な距離を確保し、患者の移動を監視します
- ロボティクス: ロボットが障害物や人から適切な距離を保てるようにします
よくある質問 (FAQ)#
Ultralytics YOLO26 を使用してオブジェクト間の距離を計算するにはどうすればよいですか?#
Ultralytics YOLO26を使用してオブジェクト間の距離を計算するには、検出されたオブジェクトのバウンディングボックスのセントロイドを特定する必要があります。このプロセスには、UltralyticsのsolutionsモジュールからDistanceCalculationクラスを初期化し、モデルのトラッキング出力を使用して距離を計算することが含まれます。
Ultralytics YOLO26 で距離計算を使用する利点は何ですか?#
Ultralytics YOLO26 で距離計算を使用すると、いくつかの利点があります。
- ローカライゼーションの精度: オブジェクトの正確な空間配置を提供します。
- サイズ推定: 物理的なサイズを推定するのに役立ち、コンテキストの理解を深めるのに貢献します。
- シーン理解: 3Dシーンの理解を向上させ、自動運転や監視などのアプリケーションでの意思決定を支援します。
- リアルタイム処理: 計算を即座に実行するため、ライブビデオ分析に適しています。
- 統合機能: object trackingやspeed estimationなどの他のYOLO26ソリューションとシームレスに連携します。
Ultralytics YOLO26 を使用してリアルタイムビデオストリームで距離計算を実行できますか?#
はい、Ultralytics YOLO26を使用すると、リアルタイムのビデオストリームで距離計算を実行できます。このプロセスには、OpenCVを使用してビデオフレームをキャプチャし、YOLO26のobject detectionを実行し、DistanceCalculationクラスを使用して連続するフレーム内のオブジェクト間の距離を計算することが含まれます。詳細な実装については、video stream exampleを参照してください。
Ultralytics YOLO26 を使用した距離計算中に描画されたポイントを削除するにはどうすればよいですか?#
Ultralytics YOLO26を使用した距離計算中に描画されたポイントを削除するには、マウスの右クリックを使用できます。この操作により、描画したすべてのポイントがクリアされます。詳細については、distance calculation exampleの注記セクションを参照してください。
Ultralytics YOLO26 で DistanceCalculation クラスを初期化するための主要な引数は何ですか?#
Ultralytics YOLO26でDistanceCalculationクラスを初期化するための主要な引数は次のとおりです。
model: YOLO26モデルファイルへのパス。tracker: 使用する追跡アルゴリズム(デフォルトは 'botsort.yaml')。conf: 検出の信頼度しきい値。show: 出力を表示するフラグ。
網羅的なリストとデフォルト値については、arguments of DistanceCalculationを参照してください。
