YOLO Vision 2025にご期待ください!
2025年9月25日
10:00 — 18:00(英国夏時間)
ハイブリッドイベント
Yolo Vision 2024

コンピュータビジョンプロジェクトにおける速度推定のためのUltralytics YOLOv8

Abirami Vina

5分で読めます

2024年5月23日

Ultralytics YOLOv8モデルをコンピュータビジョンプロジェクトの速度推定にどのように使用できるかを発見してください。簡単なコーディング例で試してみてください。

私たちは皆、制限速度の道路標識を見たことがあるでしょう。中には、郵便または電子メールで自動速度違反通知を受け取ったことがある人もいるかもしれません。人工知能(AI)交通管理システムは、コンピュータビジョンのおかげで、速度違反を自動的に検出できます。街灯や高速道路のカメラで撮影されたリアルタイム映像は、速度の推定や道路の安全性の強化に使用されます。

速度推定は、高速道路の安全性に限定されません。スポーツ、自動運転車、およびその他のさまざまなアプリケーションで使用できます。この記事では、コンピュータビジョンプロジェクトでUltralytics YOLOv8モデルを速度推定に使用する方法について説明します。また、実際に試せるように、コーディングの例をステップごとに説明します。始めましょう!

速度推定により、交通管理が容易になります

世界保健機関(WHO)によると、スピード違反の結果、毎年約119万人が交通事故で死亡しています。さらに、2,000万から5,000万人が死亡には至らないものの負傷し、その多くが障害につながっています。交通安全の重要性はいくら強調してもしすぎることはありません。特に、速度推定は事故防止、人命救助、道路の安全と効率の維持に役立ちます。 

コンピュータビジョンを使用した速度推定には、ビデオフレーム内の物体を検出および追跡して、それらがどれくらいの速さで移動しているかを計算することが含まれます。YOLOv8などのアルゴリズムは、連続するフレーム全体で車両などの物体を識別および追跡できます。システムは、較正されたカメラまたは参照ポイントを使用してこれらの物体が移動する距離を測定し、実際の距離を測定します。物体が2点間を移動するのにかかる時間を計時することにより、システムは距離と時間の比率を使用してそれらの速度を計算します。

Fig 1. Ultralytics YOLOv8モデルを使用した速度推定。

AI統合型速度推定システムは、スピード違反者を取り締まるだけでなく、データを収集して交通に関する予測を行うことができます。これらの予測は、信号のタイミングやリソース配分の最適化など、交通管理タスクをサポートできます。交通パターンと渋滞の原因に関する洞察は、交通渋滞を軽減するための新しい道路の計画に使用できます。

他産業における速度推定の応用

速度推定アプリケーションは、道路の監視にとどまりません。アスリートのパフォーマンスの監視、自動運転車が周囲を移動する物体の速度を理解するのに役立ち、不審な行動の検出などにも役立ちます。カメラを使用して物体の速度を測定できる場所ならどこでも、コンピュータビジョンを使用した速度推定を使用できます。 

以下に、速度推定が使用されている例をいくつか示します。

  • Teslaの自動運転車は、衝突を回避するために、画像認識による速度推定を使用しています。
  • コンピュータビジョンと速度推定は、陸上競技イベントのパフォーマンス分析を向上させるために、2024年オリンピックで使用されます。
  • スマートシティは、歩行速度を監視し、都市の移動性と安全性を高めるために、歩行者の歩行分析を研究しています。これらのシステムは、歩行者の存在をドライバーに警告し、事故を防ぐことができます。
  • 動物行動モニタリングシステムは、速度推定を用いて動物の動きを追跡し、苦痛や病気の兆候を検出します。
Fig 2. 速度推定は、人の歩行速度を測定できます。

コンピュータビジョンを用いた速度推定の利点

Visionベースの速度推定システムは、精度、費用対効果、および柔軟性が向上したため、従来のセンサーベースの方法に取って代わっています。LiDARのような高価なセンサーに依存するシステムとは異なり、コンピュータビジョンは標準カメラを使用してリアルタイムで速度を監視および分析します。速度推定のためのコンピュータビジョンソリューションは、既存の交通インフラストラクチャとシームレスに統合できます。また、これらのシステムは、車両タイプの識別や交通パターン分析などの多くの複雑なタスクを実行して、全体的な交通の流れと安全性を向上させるように構築できます。

自分で試す: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モジュールを使用して、入力ビデオファイルを開きます。また、ビデオの幅、高さ、および1秒あたりのフレーム数(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を活用してヘルスケア農業など、さまざまな業界で革新的なソリューションを創出する方法をご紹介しています。私たちと一緒にコラボレーションし、革新を起こし、学びましょう!🚀

AIの未来を
共に築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。

無料ではじめる
クリップボードにコピーしました