GitHub - CAIC-AD/YOLOPv2: YOLOPv2: Better, Faster, Stronger for Panoptic driving Perception
この記事では、YOLOPv2を用いて、ドライブレコーダーの映像から、走行(可能)車線、白線、そして他車を同時に検知する方法を紹介します。
YOLOPv2とは
YOLOPv2は、自動運転での応用を見据え、ドライブレコーダーの映像を入力として、1つのネットワークで、走行車線、白線のセグメンテーション、そして他車の検知を同時に行うモデルです。
ネットワークは、入力画像から特徴量を抽出するタスク共通のエンコーダー(Backbone)と、タスクに応じた3つのデコーダー(Drivable area segment head, Lane segment head, Detect head)から構成されます。
3者を同時に推定するネットワーク構成の根本は、YOLOPやHybridNetsといった先行研究と変わらないものの、エンコーダーをE-ELANに変更し、(先行研究では走行車線と白線は共通であった)デコーダーを3タスク分それぞれ準備することで、精度の向上と高速化を実現しています。
デモ
それでは、Google Colaboratoryを使って実際に実行していきます。
なお、記事内で紹介したコードをすべて含むノートブックは、以下のリンクから直接参照することができます。
環境設定
はじめに、画面上部のメニューから、「ランタイム」、「ランタイムのタイプを変更」と進み、「ハードウェアアクセラレータ」を「GPU」に変更しておきます。これにより、推論時にGPUを利用することができます。
続いて、公式リポジトリのクローンとライブラリのインストールを行います。
# リポジトリのクローン !git clone https://github.com/CAIC-AD/YOLOPv2.git %cd YOLOPv2 # ライブラリのインストール !pip install -r requirements.txt
モデル設定
学習済みパラメータが公開されているので、ダウンロードします。
!wget -P data/weights https://github.com/CAIC-AD/YOLOPv2/releases/download/V0.0.1/yolopv2.pt
推論
colab上に推論対象のファイルをアップロードします。ファイルは静止画、動画のいずれでも大丈夫です。
demo.py
によって推論が実行され、YOLOPv2/runs/detect/exp
に入力ファイルと同じ名前で結果が保存されます。
# 対象ファイルの指定 source = 'アップロードしたファイルのパス' # 推論 !python demo.py --source $source
YouTube、PIXTAから取得したドライブレコーダーの映像に対して推論を実行した結果がこちらです。左がオリジナル、右が推論結果です。
夜間の結果がこちら。
colabも面倒だよ、という方は、以下のリンクからブラウザ上で簡単に試すこともできます。
まとめ
手元の動画に対しても、昼夜問わず精度良く検知できていることが確認できました。
自動運転の根幹をなす非常に重要な技術でありながら、比較的シンプルな作りなので、ぜひコードを追いながら試してみてください。
参考文献
GitHub - CAIC-AD/YOLOPv2: YOLOPv2: Better, Faster, Stronger for Panoptic driving Perception