コンテンツへスキップ

による距離計算Ultralytics YOLOv8

距離計算とは?

2つの物体の間隔を測定することは、指定された空間内での距離計算として知られている。の場合 Ultralytics YOLOv8の場合、ユーザーがハイライトしたバウンディングボックスの距離を計算するために、バウンディングボックスのセントロイドが採用される。



見るんだ: による距離計算Ultralytics YOLOv8

ビジュアル

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

距離計算の利点

  • ローカリゼーションの精度:コンピュータビジョンタスクにおける正確な空間位置決めを強化します。
  • サイズの推定:物理的な大きさを推定することで、文脈の理解を深めることができます。
  • シーンの理解:意思決定を改善するために、環境の3D理解に貢献する。
距離計算
  • 任意の2つのバウンディングボックスをマウスの左クリックでクリックし、距離を計算する。

YOLOv8 例を用いた距離計算

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.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
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)
    im0 = dist_obj.start_process(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
  • マウス右クリックですべての描画点を削除
  • マウスの左クリックで点を描画できる

論争 DistanceCalculation()

Name Type Default 説明
names dict None クラス名の辞書。
pixels_per_meter int 10 ピクセルからメートルへの変換係数。
view_img bool False ビデオストリームを表示するかどうかを示すフラグ。
line_thickness int 2 画像に描かれる線の太さ。
line_color tuple (255, 255, 0) 画像に描かれた線の色(BGR形式)。
centroid_color tuple (255, 0, 255) 描画されるセントロイドの色(BGR形式)。

論争 model.track

名称 タイプ デフォルト 説明
source im0 None 画像またはビデオのソース・ディレクトリ
persist bool False フレーム間のトラックの持続
tracker str botsort.yaml トラッキングメソッド「bytetrack」または「botsort
conf float 0.3 信頼閾値
iou float 0.5 借用書のしきい値
classes list None つまり、class=0、またはclass=[0,2,3]。
verbose bool True 物体追跡結果を表示する

よくあるご質問

Ultralytics YOLOv8 を使ってオブジェクト間の距離を計算するには?

オブジェクト間の距離を計算するには Ultralytics YOLOv8検出されたオブジェクトのバウンディングボックスのセントロイドを特定する必要があります。この処理には DistanceCalculation class fromUltralytics' solutions モジュールを使って、モデルのトラッキング出力を使って距離を計算する。実装は 距離計算の例.

Ultralytics YOLOv8 を使った距離計算の利点は?

Ultralytics YOLOv8 を使った距離計算にはいくつかの利点がある:

  • ローカリゼーションの精度:オブジェクトの正確な空間位置決めを提供します。
  • サイズの推定:物理的なサイズを推定し、より良い文脈理解に貢献します。
  • シーン理解:3Dシーンの理解を強化し、自律走行や監視などのアプリケーションにおける意思決定の改善を支援する。

Ultralytics YOLOv8 を使って、リアルタイムのビデオストリームで距離計算を行うことはできますか?

Ultralytics YOLOv8 を使えば、リアルタイムのビデオストリームで距離計算を行うことができます。このプロセスでは、OpenCVを使用してビデオフレームをキャプチャし、YOLOv8 オブジェクト検出を実行します。 DistanceCalculation クラスを使用して、連続するフレームのオブジェクト間の距離を計算します。詳細な実装については ビデオ・ストリームの例.

Ultralytics YOLOv8 を使って距離計算中に描かれたポイントを削除するには?

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

Ultralytics YOLOv8 でDistanceCalculationクラスを初期化する際の主な引数は?

を初期化するための主要な引数である。 DistanceCalculation クラスをUltralytics YOLOv8 に含む:

  • names:クラスインデックスとクラス名を対応付ける辞書。
  • pixels_per_meter:ピクセルからメートルへの変換係数。
  • view_img:ビデオストリームを表示するかどうかを示すフラグ。
  • line_thickness:画像に描かれる線の太さ。
  • line_color:画像に描かれた線の色(BGR形式)。
  • centroid_color:セントロイドの色(BGRフォーマット)。

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



作成 2024-01-05 更新 2024-07-14
著者RizwanMunawar(5),glenn-jocher(7),IvorZhu331(1),AyushExel(1)

コメント