グリーンチェック
クリップボードにコピーされたリンク

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

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

制限速度の道路標識を見たことがあるだろう。中には、郵便やEメールで自動速度制限違反通知を受け取ったことがある人もいるだろう。人工知能(AI)交通管理システムは、コンピューター・ビジョンのおかげで自動的に速度違反のフラグを立てることができる。街灯や高速道路のカメラで撮影されたリアルタイムの映像は、速度推定や交通安全の強化に利用されている。

速度推定は高速道路の安全性だけにとどまらない。スポーツ、自律走行車、その他様々なアプリケーションで使用することができます。この記事では、コンピュータビジョンプロジェクトで速度推定にUltralytics YOLOv8 モデルを使用する方法について説明します。また、自分で試せるように、コーディングの例を順を追って説明します。さっそく始めましょう!

速度推定が交通管理を容易にする

世界保健機関(WHO)によると、年間約119万人がスピード違反による交通事故で死亡している。さらに、2,000万~5,000万人が非致死的な負傷を負い、その多くが障害を負っている。交通安全の重要性はいくら強調してもしすぎることはない。特に速度推定が事故を防ぎ、命を救い、道路を安全かつ効率的に保つのに役立つのであれば。 

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

図1.Ultralytics YOLOv8 モデルによる速度推定

AIを統合した速度推定システムは、スピード違反者を捕まえる以外にも、データを収集して交通に関する予測を立てることができる。これらの予測は、信号のタイミングや資源配分の最適化といった交通管理タスクをサポートすることができる。交通パターンや渋滞の原因に関する洞察は、渋滞を緩和するための新しい道路の計画に利用できる。

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

速度推定の用途は、道路の監視にとどまらない。アスリートのパフォーマンスを監視したり、自律走行車が周囲を移動する物体の速度を把握したり、不審な行動を検出したりするのにも便利だ。カメラを使って物体の速度を測定できる場所ならどこでも、コンピューター・ビジョンを使った速度推定が利用できる。 

速度推定が使用されている例をいくつか紹介しよう:

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

コンピュータ・ビジョンによる速度推定の利点

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

自分でやってみようを使ったスピード推定YOLOv8

速度推定とその応用について明確に理解したところで、コードを通してコンピュータビジョンプロジェクトに速度推定を組み込む方法を詳しく見ていきましょう。移動する車両を検出し、YOLOv8 モデルを使って速度を推定します。

この例では、インターネットからダウンロードした道路を走る車のビデオを使用しています。同じビデオや関連するビデオを使用することができます。YOLOv8 モデルが各車両の中心を特定し、この中心がビデオフレーム内の水平線を横切る速さに基づいて速度を計算します。 

図3.道路を走る車の入力映像

その前に、この場合、距離計算はユークリッド距離による近似値であることに注意することが重要だ。カメラのキャリブレーションは考慮されていないため、速度の推定は完全に正確とは限りません。また、推定速度は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:        
    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

コードが正常に実行されると、出力ビデオファイルは次のようになります。

図4.YOLOv8 を使用した速度推定の出力。


視覚に基づく速度推定の課題

また、コンピュータ・ビジョンを使って速度推定を実施する際の課題を理解することも重要だ。雨、霧、雪などの悪天候は、道路の視界を妨げるため、システムに問題を引き起こす可能性があります。同様に、他の車両や物体によるオクルージョンも、これらのシステムが対象車両の速度を正確に追跡・推定することを困難にします。また、影ができたり、太陽の光がまぶしく感じられたりするような劣悪な照明条件も、速度推定のタスクをさらに複雑にします。

もうひとつの課題は、計算能力に関するものだ。リアルタイムで速度を推定するためには、高画質の交通カメラから得られる多くのビジュアルデータを処理しなければならない。あなたのソリューションでは、これらすべてを処理し、遅延なく迅速に動作させるために、高価なハードウェアが必要になるかもしれません。

そして、プライバシーの問題がある。これらのシステムによって収集されるデータには、車種やナンバープレート情報など、個人の車の詳細情報が含まれる場合があり、これらは本人の同意なしに収集される。最近のHDカメラの中には、車内の乗員の画像まで撮影できるものもある。このようなデータ収集は深刻な倫理的・法的問題を引き起こす可能性があり、最大限の注意を払って対処する必要がある。

未来へのスピード

Ultralytics YOLOv8 モデルを速度推定に使用することで、多くの用途に柔軟かつ効率的なソリューションを提供できる。厳しい条件下での精度やプライバシーの問題への対応など課題はありますが、利点は多岐にわたります。コンピュータビジョンを利用した速度推定は、旧来の方法と比較して、費用対効果が高く、適応性があり、正確です。交通機関、スポーツ、監視、自動運転車など様々な分野で役立ちます。このような利点と応用により、コンピュータ・ビジョンは将来のスマート・システムの重要な一部となる運命にある。

AIに興味がありますか?私たちのコミュニティとつながりましょう!GitHubリポジトリでヘルスケアや 農業など様々な業界でAIを使ってどのように革新的なソリューションを生み出しているかをご覧ください。私たちと協力し、革新し、学びましょう!🚀

Facebookのロゴツイッターのロゴリンクトインのロゴコピー・リンク・シンボル

このカテゴリの続きを読む

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう