コンテンツへスキップ

Ultralytics YOLOv8 🚀を使った速度推定

速度推定とは?

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



見るんだ: による速度推定Ultralytics YOLOv8

ブログをチェック

速度推定に関するより深い洞察については、当社のブログ記事Ultralytics YOLOv8 for Speed Estimation in Computer Vision Projectsをご覧ください。

速度予測の利点は?

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

実世界での応用

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

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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

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

# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
    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 の速度によって異なる場合があります。

論争 SpeedEstimator

名称 タイプ デフォルト 説明
names dict None クラス名の辞書。
reg_pts list [(20, 400), (1260, 400)] 速度推定のための領域点のリスト。
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 物体追跡結果を表示する

よくあるご質問

Ultralytics YOLOv8 を使って物体の速度を推定するには?

Ultralytics YOLOv8 を使って物体の速度を推定するには、物体検出と追跡技術を組み合わせる必要があります。まず、YOLOv8 モデルを使って、各フレームでオブジェクトを検出する必要があります。次に、これらのオブジェクトをフレーム間で追跡し、時間的な動きを計算します。最後に、フレーム間のオブジェクトの移動距離とフレームレートを使って、オブジェクトの速度を推定します。

例

import cv2

from ultralytics import YOLO, solutions

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

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

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        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()

詳しくは、公式ブログ記事をご覧ください。

Ultralytics YOLOv8 を交通管理における速度推定に使用するメリットは?

Ultralytics YOLOv8 を速度推定に使用することは、交通管理において大きな利点をもたらす:

  • 安全性の向上:車速を正確に推定して速度超過を検知し、交通安全を向上させます。
  • リアルタイム監視:YOLOv8 のリアルタイム物体検知機能により、交通の流れや混雑を効果的に監視することができます。
  • 拡張性:エッジデバイスからサーバーまで、様々なハードウェアセットアップにモデルを展開することで、大規模な実装に対する柔軟でスケーラブルなソリューションを実現します。

その他の用途については、速度推定の利点を参照。

YOLOv8 は、TensorFlow やPyTorch のような他のAIフレームワークと統合できますか?

はい、YOLOv8 は、TensorFlow やPyTorch のような他のAIフレームワークと統合することができます。Ultralytics は、ONNX 、TensorRT 、CoreML のような様々なフォーマットへのYOLOv8 モデルのエクスポートをサポートし、他のMLフレームワークとのスムーズな相互運用性を保証します。

YOLOv8 モデルをONNX フォーマットにエクスポートする:

yolo export --weights yolov8n.pt --include onnx

モデルのエクスポートについては、エクスポートに関するガイドをご覧ください。

Ultralytics YOLOv8 を使った速度推定の精度は?

Ultralytics YOLOv8 を用いた速度推定の精度は、物体追跡の品質、映像の解像度とフレームレート、環境変数など、いくつかの要因に依存する。速度推定器は信頼できる推定値を提供するが、フレーム処理速度のばらつきやオブジェクトのオクルージョンのため、100%正確とは限らない。

注:常に誤差を考慮し、可能であれば地上真実データで推定値を検証すること。

さらなる精度向上のヒントについては 論争 SpeedEstimator セクション.

TensorFlow Object Detection API のような他のオブジェクト検出モデルではなく、Ultralytics YOLOv8 を選ぶ理由は?

Ultralytics YOLOv8 は、TensorFlow Object Detection API のような他のオブジェクト検出モデルと比較して、いくつかの利点があります:

  • リアルタイム性能:YOLOv8 はリアルタイム検出用に最適化されており、高い速度と精度を提供する。
  • 使いやすさ:ユーザーフレンドリーなインターフェースで設計されたYOLOv8 は、モデルのトレーニングと導入を簡素化します。
  • 汎用性:物体検出、セグメンテーション、姿勢推定など複数のタスクをサポート。
  • コミュニティとサポート:YOLOv8 は活発なコミュニティと広範なドキュメントに支えられており、開発者は必要なリソースを確保できる。

YOLOv8 のメリットについては、詳細モデルのページをご覧ください。



作成日:2024-01-05 更新日:2024-07-05
著者:glenn-jocher(7),IvorZhu331(1),RizwanMunawar(2),Burhan-Q(1),AyushExel(1)

コメント