コンピュータービジョンプロジェクトでの速度推定に向けたUltralytics YOLOv8
コンピュータービジョンプロジェクトでUltralytics YOLOv8モデルを速度推定に使用する方法をご紹介します。簡単なコード例で実際に試してみましょう。

速度制限の道路標識は、おそらく誰もが見たことがあるでしょう。中には、速度制限違反の自動通知を郵送やメールで受け取ったことがある方もいるかもしれません。人工知能(AI)を活用した交通管理システムは、コンピュータビジョンによって速度超過違反を自動的に検出できます。街灯や高速道路に設置されたカメラで撮影したリアルタイム映像は、速度推定や道路の安全性向上に活用されています。
速度推定は、高速道路の安全対策だけに限られません。スポーツ、自動運転車、その他さまざまな用途に利用できます。この記事では、コンピュータビジョンプロジェクトでUltralytics YOLOv8モデルを使って速度を推定する方法について説明します。また、実際に試せるように、コード例をステップごとに解説します。始めましょう。
速度推定によって交通管理が容易になります#
世界保健機関(WHO)によると、速度超過が原因で、道路交通事故により年間約119万人が亡くなっています。さらに、2,000万~5,000万人が死亡に至らない負傷を負っており、その多くが障害につながっています。速度推定が事故の防止、命の救助、道路の安全性と効率性の維持に役立つことから、交通安全の重要性はいくら強調してもし過ぎることはありません。
コンピュータビジョンを使用した速度推定では、動画フレーム内のオブジェクトを検出および追跡し、移動速度を計算します。Ultralytics YOLOv8のようなアルゴリズムは、連続するフレーム間で車両などのオブジェクトを識別して追跡できます。システムは、キャリブレーション済みのカメラや基準点を使用して、オブジェクトが移動した距離を測定し、実世界の距離を推定します。オブジェクトが2点間を移動するのにかかった時間を計測することで、距離と時間の比率から速度を算出します。

図1。Ultralytics YOLOv8モデルを使用した速度推定。
速度超過車両の検出以外にも、AIと統合された速度推定システムは、交通に関する予測を行うためのデータを収集できます。これらの予測は、信号のタイミングやリソース配分の最適化など、交通管理業務を支援できます。交通パターンや渋滞の原因に関するインサイトを活用すれば、交通渋滞を緩和するための新しい道路を計画できます。
さまざまな業界における速度推定の用途#
速度推定の用途は、道路の監視にとどまりません。アスリートのパフォーマンス監視、周囲を移動するオブジェクトの速度を自動運転車が把握するための支援、不審な行動の検出などにも役立ちます。カメラを使ってオブジェクトの速度を測定できる場所であれば、コンピュータビジョンによる速度推定を利用できます。
速度推定が利用されている分野の例をいくつか紹介します。
- Teslaの自動運転車は、衝突を回避するためにビジョンベースの速度推定を使用しています。
- トラック競技やフィールド競技のパフォーマンス分析を向上させるため、2024年オリンピックでコンピュータビジョンと速度推定が使用されます。
- スマートシティでは、歩行速度を監視し、都市の移動性と安全性を高めるために、歩行者の歩容分析が研究されています。これらのシステムは、歩行者の存在をドライバーに警告し、事故を防止できます。
- 動物行動監視システムは、速度推定を使用して動物の動きを追跡し、苦痛や病気の兆候を検出します。

図2。速度推定によって人の歩行速度を測定できます。
コンピュータビジョンを使用した速度推定のメリット#
ビジョンベースの速度推定システムは、精度の向上、費用対効果、柔軟性を備えているため、従来のセンサーベースの手法に取って代わりつつあります。LiDARのような高価なセンサーに依存するシステムとは異なり、コンピュータビジョンでは標準的なカメラを使用して速度をリアルタイムで監視・分析します。速度推定のためのコンピュータビジョンソリューションは、既存の交通インフラにシームレスに統合できます。また、車両タイプの識別や交通パターンの分析など、複雑なタスクを実行できるように構築することで、交通全体の流れと安全性を改善できます。
実際に試してみましょう:Ultralytics YOLOv8を使用した速度推定#
速度推定とその用途について明確に理解できたところで、コードを通じて、コンピュータビジョンプロジェクトに速度推定を組み込む方法を詳しく見ていきましょう。Ultralytics YOLOv8モデルを使用して、移動する車両を検出し、その速度を推定します。
この例では、インターネットからダウンロードした道路上の車両の動画を使用します。同じ動画や、その他の関連する動画を使用できます。Ultralytics YOLOv8モデルは各車両の中心点を識別し、この中心点が動画フレーム内の水平線を通過する速さに基づいて速度を算出します。
始める前に、このケースでは距離の計算が近似値であり、ユークリッド距離に基づいていることに注意してください。カメラキャリブレーションは考慮されていないため、速度推定が完全に正確とは限りません。また、推定速度はGPUの速度によって変動する可能性があります。
ステップ1: まず、Ultralyticsパッケージをインストールします。コマンドプロンプトまたはターミナルを開き、以下に示すコマンドを実行します。
pip install ultralyticsインストール手順とベストプラクティスについては、Ultralyticsインストールガイドをご覧ください。YOLOv8に必要なパッケージのインストール中に問題が発生した場合は、一般的な問題のガイドで解決策と役立つヒントを確認できます。
ステップ2: 次に、必要なライブラリをインポートします。OpenCVライブラリは、動画処理に役立ちます。
import cv2
from ultralytics import YOLO, solutionsステップ3: 次に、Ultralytics YOLOv8モデルを読み込み、モデルが検出できるクラスの名前を取得します。
model = YOLO("yolov8n.pt")
names = model.model.namesプロジェクトに最適なモデルを理解するには、サポートしているすべてのモデルをご覧ください。
ステップ4: このステップでは、OpenCVのVideoCaptureモジュールを使用して入力動画ファイルを開きます。また、動画の幅、高さ、フレーム毎秒(fps)を取得します。
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))ステップ5: ここでは、速度推定の最終結果を保存するためにビデオライターを初期化します。出力動画ファイルは「speed_estimation.avi」として保存されます。
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))ステップ6: 次に、速度推定用のラインの点を定義します。入力動画では、このラインをフレーム中央に水平に配置します。入力動画に応じて、値を変更してラインを最適な位置に配置してみてください。
line_pts = [(0, 360), (1280, 360)]ステップ7: ここで、定義したラインの点とクラス名を使用して速度推定オブジェクトを初期化します。
speed_obj = solutions.SpeedEstimator(
reg_pts=line_pts,
names=names,
view_img=True,
)ステップ8: スクリプトの中心部分では、動画をフレームごとに処理します。各フレームを読み込み、オブジェクトを検出して追跡します。追跡対象のオブジェクトの速度を推定し、アノテーション付きのフレームを出力動画に書き込みます。
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)ステップ9: 最後に、ビデオキャプチャとライターのオブジェクトを解放し、OpenCVのウィンドウを閉じます。
cap.release()
video_writer.release()
cv2.destroyAllWindows()ステップ10: スクリプトを保存します。ターミナルまたはコマンドプロンプトから作業している場合は、次のコマンドを使用してスクリプトを実行します。
python your_script_name.pyビジョンベースの速度推定における課題#
コンピュータビジョンを使用した速度推定の実装に伴う課題を理解することも重要です。雨、霧、雪などの悪天候は道路の視認性を妨げるため、システムに問題を引き起こす可能性があります。同様に、他の車両やオブジェクトによるオクルージョンによって、対象車両の速度を正確に追跡・推定することが困難になる場合があります。影や太陽光のまぶしさを生じさせる照明条件の悪さも、速度推定をさらに複雑にする可能性があります。
もう1つの課題は、計算能力に関するものです。リアルタイムで速度を推定するには、高品質な交通カメラから得られる大量の視覚データを処理する必要があります。すべての処理を遅延なく高速に行うために、ソリューションには高価なハードウェアが必要になる場合があります。
さらに、プライバシーの問題もあります。これらのシステムが収集するデータには、メーカー、モデル、ナンバープレート情報など、本人の同意なく収集された個人の車両情報が含まれる可能性があります。最新のHDカメラの中には、車内の乗員の画像まで撮影できるものもあります。このようなデータ収集は、細心の注意を払って対処する必要がある重大な倫理的・法的問題を引き起こす可能性があります。
未来に向かって加速する速度推定#
Ultralytics YOLOv8モデルを速度推定に使用すると、多くの用途に対応できる柔軟で効率的なソリューションを実現できます。厳しい条件下での精度やプライバシー問題への対応などの課題はありますが、メリットは数多くあります。コンピュータビジョンを活用した速度推定は、従来の方法と比べて費用対効果、適応性、精度に優れています。輸送、スポーツ、監視、自動運転車など、さまざまな分野で役立ちます。数多くのメリットと用途があることから、将来のスマートシステムにおける重要な要素になるでしょう。
AIに関心がありますか?私たちのコミュニティに参加しましょう。GitHubリポジトリでは、医療や農業など、さまざまな業界でAIを活用して革新的なソリューションを生み出す方法について詳しく学べます。私たちと一緒に協力し、革新し、学びましょう!🚀









