コンテンツへスキップ

Ultralytics YOLOv8 🚀を使った距離計算

距離計算とは?

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



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

ビジュアル

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

距離計算の利点

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

YOLOv8 例を用いた距離計算

from ultralytics import YOLO
from ultralytics.solutions import distance_calculation
import cv2

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 = distance_calculation.DistanceCalculation()
dist_obj.set_args(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()
備考
  • マウス右クリックで描画されたすべての点を削除
  • マウスの左クリックで点を描画できる

オプションの引数 set_args

名称 タイプ デフォルト 説明
names dict None クラス名
view_img bool False カウント付きフレームを表示
line_thickness int 2 バウンディングボックスの厚みを増やす
line_color RGB (255, 255, 0) 2つのバウンディング・ボックスにマッピングされたセントロイドのライン・カラー
centroid_color RGB (255, 0, 255) 各外接ボックスの重心の色

論争 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 物体追跡結果を表示する


作成日:2024-01-05 更新日:2024-03-01
著者:chr043416@gmail.com(5),glenn-jocher(2),AyushExel(1)

コメント