モデルラボ / カーブミラー
カーブミラー YOLOX-Tiny
道路のカーブミラーを見つける物体検出モデルです。車に載せたスマートフォンで、前方を撮った画像を想定しています。
いまの状態
公開中
配布のときの名前
curve_mirror_yolox_tiny_v1
Hugging Face で重みを見る学習データ
Mapillaryに投稿された日本の道路の写真(CC BY-SA 4.0)に、鏡の位置を付けて学習させました。テストには、学習に使っていない地域の3,997枚を使っています。
しくみ
1枚の画像を、こう処理しています
- 1
長辺を1280に縮める
画像の縦横比を変えずに、長辺を1280ピクセルに縮めます。16:9の画像なら横1280×縦720になり、足りない下の16ピクセルは灰色で埋めます。
- 2
候補を出す
モデルは1枚につき200件の候補を、位置と確からしさで返します。候補ごとに、カーブミラーと鏡ではない物のうち、確からしさの高い方を選びます。
- 3
重なりをまとめ、しきい値で絞る
重なった候補を1つにまとめ、カーブミラーの確からしさが0.66以上のものを検出として扱います。
しくみ
入力と出力
- 見つけるもの
- カーブミラー(1種類)。オレンジ色の専用の支柱に付いた鏡は、鏡と支柱をまとめた縦長の枠で示します。それ以外の鏡は、鏡だけを枠で囲みます。丸い看板など、見た目が似ているが鏡ではない物も、別の種類として見分けます。
- 元にしたモデル
- YOLOX-Tinyと同じ構造で、一から学習させました。事前学習の重みは使っていません。
- 入力
- 横1280×縦736ピクセルのカラー画像(RGB)。画像は長辺を1280ピクセルに縮めて入れます。16:9の画像なら縦は720ピクセルになるので、下の16ピクセルを灰色で埋めます。
- 出力
- 1枚につき200件の候補を、位置(画素の座標)と、カーブミラー・鏡ではない物それぞれの確からしさで返します。重なった候補をまとめる処理は、使う側で行います。
- 形式
- PyTorch、ONNX、CoreML
- しきい値
- 0.66。カーブミラーの確からしさがこの値以上の候補を、検出として扱います。鏡の写っていない画像100枚あたりの誤検知が3件以下になるように、検証用の画像で決めました。
- ライセンス
- Apache-2.0
評価
いまの成績
| 指標 | テスト用(3,997枚・鏡465個) |
|---|---|
| AP50(検出の正確さをまとめた指標) | 0.618 |
| 適合率(検出したうち本物だった割合) | 0.661 |
| 再現率(本物のうち見つけられた割合) | 0.641 |
| 再現率(支柱ごと囲む鏡) | 0.710 |
| 再現率(鏡だけを囲む鏡) | 0.526 |
| 鏡の写っていない画像100枚あたりの誤検知 | 2.74 |
AP50以外は、しきい値0.66のときの値です。テスト用の画像は、学習に使っていない地域(奈良市の学園北、那覇市の首里など)で撮られたもので、この評価に使ったのは1回だけです。しきい値は、テスト用の画像を見る前に決めました。誤検知として数えた中には、正解を付けるときに見落とした本物の鏡が含まれている可能性があり、いま確かめています。
使うときの注意
- 近くで大きく写った鏡は見逃しやすくなります(大きく写った鏡の再現率は0.463)。
- 電柱に付いた鏡など、専用の支柱が写っていない鏡は、支柱ごと写った鏡より見逃しやすくなります。
- 配布したONNXとCoreMLは横1280×縦736の固定です。4:3の画像は小さく縮めて入れることになり、検証用の画像では見つける割合が下がりました(0.658から0.549)。スマートフォンの横向きの動画(16:9)では、この影響はありません。
- 丸い看板、街灯の丸い笠、標識の裏などを、鏡と取り違えることがあります。
- 点検や安全についての判断を、このモデルの結果だけで行わないでください。
お問い合わせ
まずは状況をお聞かせください
みちカルテの試験運用や検知モデルの構築について、依頼が固まっていない段階でも構いません。手元にある写真や動画の種類と、困っていることを書いていただければ、できることとできないことをお伝えします。
メールで相談する
返信はメールでお送りします。数日かかる場合もありますが、必ずお返事します。
