Link to this sectionUltralytics YOLO26 を使用した距離計算#
Link to this section距離計算とは?#
距離計算は、画像またはビデオフレーム内で検出された2つのオブジェクト間の空間を測定するプロセスです。Ultralytics YOLO26 の場合、ユーザーがハイライトしたバウンディングボックスの距離を計算するために、バウンディングボックスの重心が使用されます。
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Link to this sectionビジュアル#
| Ultralytics YOLO26 を使用した距離計算 |
|---|
![]() |
Link to this section距離計算の利点#
- ローカライゼーションの精度: コンピュータビジョンタスクにおける正確な空間配置を強化します。
- サイズ推定: オブジェクトサイズの推定を可能にし、コンテキストの理解を向上させます。
- シーン理解: 自動運転車や監視システムなどのアプリケーションにおいて、意思決定を改善するために3Dシーンの理解を向上させます。
- 衝突回避: 移動するオブジェクト間の距離を監視することで、システムが潜在的な衝突を検出できるようにします。
- 空間分析: 監視環境内でのオブジェクトの関係や相互作用の分析を容易にします。
距離計算
- マウスの左ボタンで任意の2つのバウンディングボックスをクリックすると、距離が計算されます。
- 右ボタンを使用すると、描画されたすべてのポイントが削除されます。
- フレーム内の任意の場所を左クリックすると、新しいポイントが追加されます。
距離は推定値です
距離は推定値であり、深度情報を持たない2Dデータを使用して計算されるため、完全に正確ではない場合があります。
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 windowsLink to this sectionDistanceCalculation() の引数#
DistanceCalculation の引数表は以下の通りです。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパス。 |
You can also make use of various track arguments in the DistanceCalculation solution.
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.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 | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
Link to this section実装の詳細#
DistanceCalculation クラスは、ビデオフレーム全体でオブジェクトを追跡し、選択されたバウンディングボックスの重心間のユークリッド距離を計算することで機能します。2つのオブジェクトをクリックすると、このソリューションは以下を行います。
- 選択されたバウンディングボックスの重心(中心点)を抽出します
- ピクセル単位でこれらの重心間のユークリッド距離を計算します
- オブジェクト間に接続線を引いて、フレーム上に距離を表示します
この実装では、マウス操作を処理するために mouse_event_for_distance メソッドを使用しており、ユーザーがオブジェクトを選択したり、必要に応じて選択をクリアしたりできます。process メソッドは、フレームごとの処理、オブジェクトの追跡、および距離の計算を処理します。
Link to this sectionアプリケーション#
YOLO26 による距離計算には、多くの実用的な用途があります。
- 小売分析: 製品への顧客の近接度を測定し、店舗レイアウトの有効性を分析します
- 産業安全: 作業員と機械の間の安全な距離を監視します
- 交通管理: 車両の間隔を分析し、あおり運転を検出します
- スポーツ分析: 選手、ボール、フィールドの主要な位置間の距離を計算します
- ヘルスケア: 待合エリアでの適切な距離を確保し、患者の移動を監視します
- ロボティクス: ロボットが障害物や人から適切な距離を保てるようにします
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralytics YOLO26 を使用してオブジェクト間の距離を計算するにはどうすればよいですか?#
To calculate distances between objects using Ultralytics YOLO26, you need to identify the bounding box centroids of the detected objects. This process involves initializing the DistanceCalculation class from Ultralytics' solutions module and using the model's tracking outputs to calculate the distances.
Link to this sectionUltralytics YOLO26 で距離計算を使用する利点は何ですか?#
Ultralytics YOLO26 で距離計算を使用すると、いくつかの利点があります。
- ローカライゼーションの精度: オブジェクトの正確な空間配置を提供します。
- サイズ推定: 物理的なサイズを推定するのに役立ち、コンテキストの理解を深めるのに貢献します。
- シーン理解: 3Dシーンの理解を向上させ、自動運転や監視などのアプリケーションでの意思決定を支援します。
- リアルタイム処理: 計算を即座に実行するため、ライブビデオ分析に適しています。
- 統合機能: オブジェクト追跡や速度推定など、他の YOLO26 ソリューションとシームレスに連携します。
Link to this sectionUltralytics YOLO26 を使用してリアルタイムビデオストリームで距離計算を実行できますか?#
はい、Ultralytics YOLO26 を使用してリアルタイムのビデオストリームで距離計算を実行できます。このプロセスには、OpenCV を使用したビデオフレームのキャプチャ、YOLO26 オブジェクト検出の実行、および連続するフレーム内のオブジェクト間の距離を計算するための DistanceCalculation クラスの使用が含まれます。詳細な実装については、ビデオストリームの例を参照してください。
Link to this sectionUltralytics YOLO26 を使用した距離計算中に描画されたポイントを削除するにはどうすればよいですか?#
Ultralytics YOLO26 を使用した距離計算中に描画されたポイントを削除するには、マウスの右クリックを使用できます。この操作により、描画したすべてのポイントがクリアされます。詳細については、距離計算の例の下にある注記セクションを参照してください。
Link to this sectionUltralytics YOLO26 で DistanceCalculation クラスを初期化するための主要な引数は何ですか?#
Ultralytics YOLO26 で DistanceCalculation クラスを初期化するための主要な引数は以下の通りです。
model: YOLO26 モデルファイルへのパス。tracker: 使用する追跡アルゴリズム(デフォルトは 'botsort.yaml')。conf: 検出の信頼度しきい値。show: 出力を表示するためのフラグ。
網羅的なリストとデフォルト値については、DistanceCalculation の引数を参照してください。
