コンピュータビジョンプロジェクトにおける速度推定のための Ultralytics YOLOv8
コンピュータビジョンプロジェクトで Ultralytics YOLOv8 モデルを使用して速度推定を行う方法をご覧ください。簡単なコーディング例で実際に試してみましょう。

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

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

図2。速度推定によって人の歩行速度を測定できます。
Link to this sectionコンピュータビジョンによる速度推定のメリット#
ビジョンベースの速度推定システムは、精度向上、費用対効果、柔軟性という点から、従来のセンサーベースの手法に取って代わりつつあります。LiDARのような高価なセンサーに依存するシステムとは異なり、コンピュータビジョンでは一般的なカメラを使用してリアルタイムで速度を監視・分析します。コンピュータビジョンによる速度推定ソリューションは、既存の交通インフラにシームレスに統合可能です。また、これらのシステムは、車両タイプの識別や交通パターン分析など、複数の複雑なタスクを実行するように構築でき、全体的な交通の流れと安全性を向上させます。
Link to this section自分で試してみる:YOLOv8を使用した速度推定#
速度推定とその応用について明確に理解できたところで、コードを通じて速度推定をコンピュータビジョンプロジェクトに統合する方法を詳しく見ていきましょう。YOLOv8モデルを使用して、移動する車両を検出し、その速度を推定します。
この例では、インターネットからダウンロードした道路上の車の動画を使用します。同じ動画、または関連する任意の動画を使用できます。YOLOv8モデルは各車両の中心を識別し、その中心点がビデオフレーム内の水平線を通過する速さに基づいて速度を計算します。
始める前に注意点として、このケースでは距離計算はユークリッド距離に基づく近似値です。カメラのキャリブレーションは考慮されていないため、速度推定の精度は完全ではない可能性があります。また、推定速度はGPUの性能によって変動することがあります。
ステップ1: まず、Ultralyticsパッケージをインストールします。コマンドプロンプトまたはターミナルを開き、以下に示すコマンドを実行してください。
pip install ultralyticsインストール手順やベストプラクティスについては、Ultralyticsインストールガイドをご覧ください。YOLOv8に必要なパッケージのインストール中に問題が発生した場合は、一般的な問題に関するガイドに解決策と役立つヒントが記載されています。
ステップ2: 次に、必要なライブラリをインポートします。OpenCVライブラリを使用してビデオ処理を行います。
import cv2
from ultralytics import YOLO, solutionsステップ3: 次に、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.pyLink to this sectionビジョンベースの速度推定における課題#
コンピュータビジョンによる速度推定を実装する際の課題を理解することも重要です。雨、霧、雪などの悪天候は、道路の視認性を妨げるため、システムに問題を引き起こす可能性があります。同様に、他の車両や物体によるオクルージョン(遮蔽)が発生すると、システムがターゲット車両の速度を正確に追跡・推定することが困難になる場合があります。影や太陽の光の反射を引き起こす劣悪な照明条件も、速度推定のタスクをさらに複雑にします。
もう1つの課題は計算能力に関するものです。リアルタイムで速度を推定するには、高品質な交通カメラからの膨大な視覚データを処理する必要があります。これらすべてを処理し、遅延なく動作させるためには、高価なハードウェアが必要になる場合があります。
さらに、プライバシーの問題もあります。これらのシステムによって収集されたデータには、メーカー、モデル、ナンバープレート情報など、個人の車両の詳細が含まれる可能性があり、これらは本人の同意なしに収集されます。最新のHDカメラの中には、車内の乗員の画像を捉えられるものさえあります。このようなデータ収集は、細心の注意を払って処理する必要がある深刻な倫理的および法的問題を引き起こす可能性があります。
Link to this section未来への加速#
速度推定にUltralytics YOLOv8モデルを使用することは、多くの用途に対して柔軟で効率的なソリューションを提供します。厳しい条件下での精度やプライバシー問題への対応といった課題はありますが、その利点は多岐にわたります。コンピュータビジョンを活用した速度推定は、従来の手法と比較して費用対効果が高く、適応性があり、正確です。輸送、スポーツ、監視、自動運転車など、さまざまなセクターで役立ちます。多くのメリットと応用例があるため、将来のスマートシステムの重要な一部となることは間違いありません。
AIに興味がありますか?私たちのコミュニティに参加しましょう!GitHubリポジトリを探索して、私たちがどのようにAIを活用し、ヘルスケアや農業といったさまざまな業界で革新的なソリューションを創出しているかについて詳しく学んでください。共に協力し、革新し、学びましょう! 🚀






