Yolo 深圳
深セン
今すぐ参加

Ultralytics YOLOv8 コンピュータビジョンプロジェクトの速度推定用

Abirami Vina

5分で読めます

2024年5月23日

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ステップ1:まず、Ultralytics パッケージをインストールします。コマンドプロンプトまたはターミナルを開き、以下のコマンドを実行する。

pip install ultralytics 

インストールプロセスのステップバイステップの手順とベストプラクティスについては、Ultralytics インストールガイドを ご覧ください。YOLOv88に必要なパッケージのインストール中に問題が発生した場合は、「よくある問題」ガイドに解決策と役立つヒントが掲載されています。

ステップ2:次に、必要なライブラリをインポートする。OpenCV ライブラリーは、ビデオ処理の手助けをしてくれる。

import cv2
from ultralytics import YOLO, solutions

ステップ3:次に、YOLOv8 モデルをロードし、モデルがdetectできるクラスの名前を取得する。

model = YOLO("yolov8n.pt")
names = model.model.names

プロジェクトに最適なモデルを理解するために、サポートしているすべてのモデルを確認してください。

ステップ4:このステップでは、OpenCVVideoCaptureモジュールを使って入力ビデオファイルを開きます。また、動画の幅、高さ、フレーム/秒(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:スクリプトの中核は、ビデオをフレームごとに処理する。各フレームを読み取り、オブジェクトをdetect track する。追跡されたオブジェクトの速度が推定され、注釈が付けられたフレームが出力ビデオに書き込まれる。

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


ビジョンベースの速度推定の課題

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

もう一つの課題は、計算能力に関するものです。リアルタイムで速度を推定するには、高品質の交通カメラからの大量の視覚データを処理する必要があります。お客様のソリューションでは、これらすべてを処理し、遅延なくすべてが迅速に動作するように、高価なハードウェアが必要になる場合があります。

次に、プライバシーの問題があります。これらのシステムによって収集されたデータには、個人の車両の詳細(メーカー、モデル、ナンバープレート情報など)が含まれる可能性があり、これらは本人の同意なしに収集されます。一部の最新HDカメラは、車内の乗員の画像さえキャプチャできます。このようなデータ収集は、細心の注意を払って対処する必要がある深刻な倫理的および法的問題を引き起こす可能性があります。

未来へ加速

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

AIにご興味がありますか?ぜひ私たちのコミュニティにご参加ください!GitHubリポジトリでは、私たちがAIを活用してヘルスケア農業など、さまざまな業界で革新的なソリューションを創出する方法をご紹介しています。私たちと一緒にコラボレーションし、革新を起こし、学びましょう!🚀

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

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

無料ではじめる