INFRA INTELLIGENCE お問い合わせ

カーブミラーをAIで検知する 走りながら撮った画像から鏡を見つけるモデル

車に載せたスマートフォンで前方を撮った画像から、道路のカーブミラーを見つける検出モデルを公開しました。専用の支柱に付いた鏡と、電柱などに付いた鏡で検出範囲(枠の取り方)を変えています。

坂道の左の斜面に立つ、オレンジ色の支柱のカーブミラー

車に載せたスマートフォンで前方を撮った画像から、道路のカーブミラーを見つける検出モデルを、モデルラボで公開しました。オレンジ色の専用の支柱に付いた鏡は、鏡と支柱を含めた縦長の枠で検出し、電柱などに付いた鏡は、鏡面だけを検出します。重みは開発者向けに Apache-2.0 で公開していて、業務のシステムにも組み込めます。

坂道の斜面に立つオレンジ色の支柱のカーブミラーが、鏡から支柱の根元までの縦長の枠で囲まれている
写真: Kamikou / Mapillary(CC BY-SA 4.0)

カーブミラーは、何のためにある?

見通しの悪いカーブや交差点で、建物や塀の陰から来る車や人を映すための鏡です。住宅地の細い道の角や、坂の途中の曲がり角によく立っています。多くはオレンジ色の支柱の上に丸い鏡が付いた形で、電柱や塀に取り付けた鏡もあります。

鏡は向きがずれたり、汚れて映らなくなったり、支柱が傾いたりします。それに気づくには、まずどこに鏡があるかが分かっている必要があります。

なぜ、このモデルを作った?

道路の管理では、点検の計画を立てたり、道路附属物の台帳を作り直したりする作業の中で、鏡の位置を一つずつ確かめなければならない場面があります。現地を回って目視で探すと、細い道の多い地域ほど手間がかかります。

走りながら撮った画像から鏡を抽出できれば、現地確認の前の洗い出しを車1台で進められます。そのために、YOLOX-Tiny と同じ構造のモデルを一から学習させました。事前学習の重みは使っていません。

誰が使う?

  • 道路を管理する自治体の、カーブミラーの点検や道路附属物の台帳の担当
  • 点検や台帳の作成を請け負う会社
  • 走行映像から地図や道路のデータを作る会社や研究者
左はオレンジの支柱に付いた鏡を支柱ごと縦長の枠で囲んだ例、右は電柱の横の鏡を鏡だけ囲んだ例
写真: 左 Kamikou、右 24kawa / Mapillary(CC BY-SA 4.0)

どうやって見つけている?

検出対象はカーブミラーの1クラス(種類)で、検出範囲(枠の取り方)だけを支柱のあるなしで変えています。丸い看板のように見た目が鏡に似た物は、別のクラスとして見分けるように学習させています。モデルが返すスコアも、カーブミラーと鏡に似た物の2クラス分です。

1枚の画像は、長辺を1280ピクセルに縮め、16:9の画像なら縦720ピクセルになるので、下の16ピクセルを灰色で埋めて横1280×縦736にします。モデルは1枚につき200件の候補を、位置とスコア(確からしさ、0〜1)で返します。

処理の3段階。長辺を1280に縮める、下の16ピクセルを灰色で埋めて1280×736にする、候補をまとめて0.66以上を残す
写真: Kamikou / Mapillary(CC BY-SA 4.0)

重複した候補を1つにまとめ、カーブミラーのスコアが0.66以上のものを検出として扱います。この0.66は、鏡の写っていない画像100枚あたりの誤検知が3件以下になるように、検証用の画像で決めた値です。重複した候補をまとめる処理(NMS)は、モデルを組み込む開発者の側で行います。

同じ坂の鏡に近づく2枚。遠くではスコア0.88、近くでは0.78で検出している
写真: Kamikou / Mapillary(CC BY-SA 4.0)

どのくらい見つけられる?

学習に使っていない地域で撮られたテスト用の3,997枚(鏡465基)で数えた結果です。しきい値は、テスト用の画像を見る前に決めました。

  • 再現率(見逃さずに検出できた割合): 0.641
  • 適合率(検出が正しかった割合): 0.661
  • 鏡の写っていない画像100枚あたりの誤検知: 2.74件

検出範囲で分けると、再現率は支柱を含めて検出する鏡が0.710、鏡面だけを検出する鏡が0.526でした。近くで大きく写った鏡は0.463と、さらに下がります。誤検知として数えた中には、アノテーション(正解の枠を付ける作業)で付け忘れた、実際にある鏡が含まれている可能性があり、今確かめています。

再現率の棒グラフ。支柱を含めて検出する鏡0.710、鏡面だけを検出する鏡0.526、近くで大きく写った鏡0.463
再現率の棒グラフ。支柱を含めて検出する鏡0.710、鏡面だけを検出する鏡0.526、近くで大きく写った鏡0.463

何に使える?

走行中に撮りためた画像を入力して、鏡が写っているフレームを抽出する使い方が向いています。撮影位置と合わせれば、どの角に鏡があるかを示す台帳の下書きになります。テストでの再現率は0.641なので、検出できなかった鏡は目視で補います。

ライセンスと形式は?

重みとコードは Apache-2.0 で公開しています。業務のシステムにも製品にも組み込めて、改変して再配布することもできます。形式は PyTorch、ONNX、CoreML の3つで、CoreML なら iPhone の中で動かせます。

使うときの注意は?

配布した ONNX と CoreML は、入力が横1280×縦736で固定です。4:3の画像は小さく縮めて入れることになり、検証用の画像では再現率が0.658から0.549に下がりました。スマートフォンの横向きの動画(16:9)なら、この影響はありません。

丸い看板、街灯の丸い笠、標識の裏面などを、鏡と誤検知することがあります。電柱に付いた鏡のように専用の支柱が写っていない鏡は、見逃しやすくなります。点検や安全についての判断を、このモデルの結果だけで行わないでください。


モデルの詳しい説明(入力と出力、評価の結果、実際の写真で検出した動画): カーブミラー YOLOX-Tiny

重みの公開先: Hugging Face

同じように、決まった目印や設備を映像から見つけるモデル作りの相談も受けています: 検知AIモデルの構築

見出し画像と図の写真: Kamikou、24kawa / Mapillary(CC BY-SA 4.0)

お問い合わせ