コンテンツへスキップ

Ultralytics YOLOv8 🚀を使った速度推定

速度推定とは?

速度推定は、与えられたコンテキスト内での物体の移動速度を計算するプロセスであり、コンピュータビジョンのアプリケーションでよく使用される。使用方法 Ultralytics YOLOv8を使用することで、距離や時間のデータと一緒にオブジェクトトラッキングを使用してオブジェクトの速度を計算することができます。速度推定の精度は、様々なアプリケーションの効率と信頼性に直接影響し、インテリジェントシステムとリアルタイム意思決定プロセスの進歩における重要な要素となっています。

速度予測の利点は?

  • 効率的な交通管理:正確な速度推定は、交通の流れを管理し、安全性を高め、道路の混雑を緩和します。
  • 正確な自律走行ナビゲーション:自動運転車のような自律システムでは、信頼性の高い速度推定が安全で正確な車両ナビゲーションを実現します。
  • 監視セキュリティの強化:監視分析における速度推定は、異常な行動や潜在的な脅威の特定に役立ち、セキュリティ対策の有効性を向上させます。

実世界での応用

交通 交通
道路上での速度推定Ultralytics YOLOv8 橋の速度推定Ultralytics YOLOv8
道路上での速度推定Ultralytics YOLOv8 橋の速度推定Ultralytics YOLOv8

YOLOv8 例を用いた速度推定

from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
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("speed_estimation.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = speed_estimation.SpeedEstimator()
speed_obj.set_args(reg_pts=line_pts,
                   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 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
スピードは見積もり

速度は推定値であり、完全に正確であるとは限りません。また、推定値はGPUの速度によって異なる場合があります。

オプションの引数 set_args

名称 タイプ デフォルト 説明
reg_pts list [(20, 400), (1260, 400)] リージョン・エリアを定義するポイント
names dict None クラス名
view_img bool False カウント付きフレームを表示
line_thickness int 2 バウンディングボックスの厚みを増やす
region_thickness int 5 オブジェクトのカウンター領域またはラインの太さ
spdl_dist_thresh int 10 速度検査ラインのユークリッド距離のしきい値

論争 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-01-15
著者:glenn-jocher(2),AyushExel(1),chr043416@gmail.com(1)

コメント