コンピュータビジョンプロジェクトにおける速度推定のための 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, solutionsStep 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ビジョンベースの速度推定における課題#
コンピュータビジョンによる速度推定を実装する際の課題を理解することも重要です。雨、霧、雪などの悪天候は、道路の視認性を妨げるため、システムに問題を引き起こす可能性があります。同様に、他の車両や物体によるオクルージョン(遮蔽)が発生すると、システムがターゲット車両の速度を正確に追跡・推定することが困難になる場合があります。影や太陽の光の反射を引き起こす劣悪な照明条件も、速度推定のタスクをさらに複雑にします。
計算能力に関する別の課題もあります。リアルタイムで速度を推定するには、高品質の交通カメラからの多くの視覚データを処理する必要があります。すべての処理を処理し、遅延なくすべてがすばやく動作するようにするには、ソリューションに高価なハードウェアが必要になる場合があります。
さらに、プライバシーの問題もあります。これらのシステムによって収集されたデータには、メーカー、モデル、ナンバープレート情報など、個人の車両の詳細が含まれる可能性があり、これらは本人の同意なしに収集されます。最新のHDカメラの中には、車内の乗員の画像を捉えられるものさえあります。このようなデータ収集は、細心の注意を払って処理する必要がある深刻な倫理的および法的問題を引き起こす可能性があります。
未来への加速#
速度推定にUltralytics YOLOv8モデルを使用すると、多くの用途に対して柔軟で効率的なソリューションが提供されます。過酷な条件での精度やプライバシー問題への対応などの課題はありますが、利点は多岐にわたります。コンピュータビジョンに対応した速度推定は、従来の方法と比較して、よりコスト効率が高く、適応性があり、正確です。交通、スポーツ、監視、自動運転車などのさまざまな分野で役立ちます。すべての利点とアプリケーションを備えた、将来のスマートシステムの主要な部分になる運命にあります。
AIに興味がありますか?コミュニティに参加しましょう!GitHubリポジトリを探索して、AIを使用してヘルスケアや農業などのさまざまな産業で革新的なソリューションを構築する方法の詳細を確認してください。私たちと一緒にコラボレーションし、革新し、学びましょう! 🚀






