Ultralytics YOLOv8 🚀を使った速度推定
速度推定とは?
速度推定は、与えられたコンテキスト内での物体の移動速度を計算するプロセスであり、コンピュータビジョンのアプリケーションでよく使用される。使用方法 Ultralytics YOLOv8を使用することで、距離や時間のデータと一緒にオブジェクトトラッキングを使用してオブジェクトの速度を計算することができます。速度推定の精度は、様々なアプリケーションの効率と信頼性に直接影響し、インテリジェントシステムとリアルタイム意思決定プロセスの進歩における重要な要素となっています。
見るんだ: による速度推定Ultralytics YOLOv8
ブログをチェック
速度推定に関するより深い洞察については、当社のブログ記事Ultralytics YOLOv8 for Speed Estimation in Computer Vision Projectsをご覧ください。
速度予測の利点は?
- 効率的な交通管理:正確な速度推定は、交通の流れを管理し、安全性を高め、道路の混雑を緩和します。
- 正確な自律走行ナビゲーション:自動運転車のような自律システムでは、信頼性の高い速度推定が安全で正確な車両ナビゲーションを実現します。
- 監視セキュリティの強化:監視分析における速度推定は、異常な行動や潜在的な脅威の特定に役立ち、セキュリティ対策の有効性を向上させます。
実世界での応用
交通 | 交通 |
---|---|
道路上での速度推定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 フォーマットにエクスポートする:
モデルのエクスポートについては、エクスポートに関するガイドをご覧ください。
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)