Ultralytics YOLO11を使用した速度推定 🚀
Speed Estimationとは何ですか?
速度推定は、与えられたコンテキスト内でオブジェクトの移動速度を計算するプロセスであり、コンピュータビジョンアプリケーションでよく使用されます。Ultralytics YOLO11を使用すると、物体追跡と距離および時間データを使用してオブジェクトの速度を計算できるようになりました。これは、交通監視や監視などのタスクに不可欠です。速度推定の精度は、さまざまなアプリケーションの効率と信頼性に直接影響し、インテリジェントシステムとリアルタイムの意思決定プロセスの進歩における重要な要素となっています。
見る: Ultralytics YOLO11を使用した速度推定
ブログをチェック
速度推定に関するより深い洞察については、ブログ記事「コンピュータービジョンプロジェクトにおけるUltralytics YOLO11による速度推定」をご覧ください。
速度推定の利点
- 効率的な交通制御: 正確な速度推定は、交通の流れを管理し、安全性を高め、道路の混雑を軽減するのに役立ちます。
- 高精度な自動ナビゲーション: 自動運転車のような自動システムでは、信頼性の高い速度推定が安全で正確な車両ナビゲーションを保証します。
- 監視セキュリティの強化: 監視分析における速度推定は、異常な行動や潜在的な脅威を特定するのに役立ち、セキュリティ対策の有効性を向上させます。
現実世界のアプリケーション
輸送 | 輸送 |
---|---|
![]() |
![]() |
Ultralytics YOLO11を使用した道路上の速度推定 | Ultralytics YOLO11を使用した橋梁上の速度推定 |
速度は推定値です
速度は推定であり、完全に正確ではない場合があります。また、推定はカメラの仕様や関連要因によって異なる場合があります。
Ultralytics YOLOを使用した速度推定
# Run a speed example
yolo solutions speed show=True
# Pass a source video
yolo solutions speed source="path/to/video.mp4"
# Adjust meter per pixel value based on camera configuration
yolo solutions speed meter_per_pixel=0.05
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
fps=fps, # adjust speed based on frame per second
# max_speed=120, # cap speed to a max value (km/h) to avoid outliers
# max_hist=5, # minimum frames object tracked before computing speed
# meter_per_pixel=0.05, # highly depends on the camera configuration
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
SpeedEstimator
引数
の表を以下に示します。 SpeedEstimator
引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLOモデルファイルへのパス。 |
fps |
float |
30.0 |
速度計算に使用される1秒あたりのフレーム数。 |
max_hist |
int |
5 |
速度/方向計算のために、オブジェクトごとに追跡する最大履歴ポイント数。 |
meter_per_pixel |
float |
0.05 |
ピクセル距離を現実世界の単位に変換するために使用されるスケーリングファクター。 |
max_speed |
int |
120 |
ビジュアルオーバーレイの最大速度制限(アラートで使用)。 |
The SpeedEstimator
ソリューションでは、以下を使用できます。 track
パラメータ:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml . |
conf |
float |
0.3 |
検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou |
float |
0.5 |
Intersection over Union (IoU) の閾値を設定して、重複する検出結果をフィルタリングします。 |
classes |
list |
None |
クラスインデックスで結果をフィルタリングします。例: classes=[0, 2, 3] 指定されたクラスのみを追跡します。 |
verbose |
bool |
True |
追跡結果の表示を制御し、追跡されたオブジェクトの視覚的な出力を提供します。 |
device |
str |
None |
推論に使用するデバイスを指定します(例: cpu , cuda:0 または 0 )。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
さらに、以下の可視化オプションがサポートされています。
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
show |
bool |
False |
もし True )は、アノテーションが付けられた画像またはビデオをウィンドウに表示します。開発またはテスト中に、視覚的なフィードバックを即座に得るのに役立ちます。 |
line_width |
None or int |
None |
バウンディングボックスの線の太さを指定します。もし None 場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。 |
show_conf |
bool |
True |
ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。 |
show_labels |
bool |
True |
検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。 |
よくある質問
Ultralytics YOLO11を使用してオブジェクトの速度を推定するにはどうすればよいですか?
Ultralytics YOLO11でオブジェクトの速度を推定するには、オブジェクト検出と追跡技術を組み合わせる必要があります。まず、YOLO11モデルを使用して各フレーム内のオブジェクトを検出する必要があります。次に、これらのオブジェクトをフレーム間で追跡して、時間の経過に伴う動きを計算します。最後に、フレーム間のオブジェクトの移動距離とフレームレートを使用して、速度を推定します。
例:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.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
speedestimator = solutions.SpeedEstimator(
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
詳細については、公式ブログ記事をご覧ください。
交通管理における速度推定にUltralytics YOLO11を使用する利点は何ですか?
Ultralytics YOLO11 を使用して速度推定を行うと、交通管理において大きな利点があります。
- 安全性の向上: 車両速度を正確に推定して、速度超過を検出し、道路の安全性を向上させます。
- リアルタイム監視: YOLO11のリアルタイム物体検出機能を活用して、交通の流れと混雑を効果的に監視します。
- スケーラビリティ: エッジデバイスからサーバーまで、さまざまなハードウェア構成にモデルをデプロイし、大規模実装のための柔軟でスケーラブルなソリューションを保証します。
より多くのアプリケーションについては、速度推定の利点を参照してください。
YOLO11を、TensorFlowやPyTorchのような他のAIフレームワークと統合できますか?
はい、YOLO11はTensorFlowやPyTorchなどの他のAIフレームワークと統合できます。Ultralyticsは、YOLO11モデルをONNX、TensorRT、CoreMLなどのさまざまな形式にエクスポートするサポートを提供し、他のMLフレームワークとのスムーズな相互運用性を保証します。
YOLO11モデルをONNX形式にエクスポートするには:
yolo export model=yolo11n.pt format=onnx
モデルのエクスポートに関する詳細は、エクスポートに関するガイドをご覧ください。
Ultralytics YOLO11を使用した速度推定の精度はどのくらいですか?
Ultralytics YOLO11を使用した速度推定の精度は、オブジェクト追跡の品質、ビデオの解像度とフレームレート、および環境変数を含むいくつかの要因に依存します。速度推定器は信頼できる推定を提供しますが、フレーム処理速度とオブジェクトのオクルージョンのばらつきにより、100%正確ではない場合があります。
注: 可能な場合は、常に誤差を考慮し、実測データで推定値を検証してください。
精度向上のためのヒントは、以下をご覧ください。 引数 SpeedEstimator
セクション.