道路標識
道路標識 YOLOX-Tiny
日本の道路標識の板を見つけ、形と色で5つに分ける物体検出モデルです。車に載せたスマートフォンやドライブレコーダーで、前方を撮った画像を想定しています。
写真: 24kawa、pika_sky、Kamikou、y24、okadatsuneo / Mapillary(CC BY-SA 4.0)
1枚の画像を、こう処理しています
- 1
長辺を1280に縮める
画像の縦横比を変えずに、長辺を1280ピクセルに縮めます。16:9の画像なら横1280×縦720になり、足りない下の16ピクセルは灰色で埋めます。
- 2
候補を出す
モデルは1枚につき200件の候補を、位置と確からしさで返します。候補ごとに、5つの種類と紛らわしい物のうち、確からしさの一番高いものを選びます。紛らわしい物になった候補は捨てます。
- 3
重なりをまとめ、しきい値で絞る
種類ごとに重なった候補を1つにまとめ、確からしさが0.5以上のものを標識の板として扱います。
入力と出力
- 見つけるもの
- 道路標識の板。案内・警戒・規制・指示・補助の5つに分けます。標識の種類(一時停止・最高速度など)までは分けません。枠は板だけを囲み、1本の支柱に主標識と補助標識が付いていれば板ごとに別の枠になります。店の看板・信号機・板の裏側など、標識と紛らわしい物も別の種類として見分けます。
- 元にしたモデル
- YOLOX-Tinyと同じ構造で、一から学習させました。事前学習の重みは使っていません。
- 入力
- 横1280×縦736ピクセルのカラー画像(RGB)。画像は長辺を1280ピクセルに縮めて入れます。16:9の画像なら縦は720ピクセルになるので、下の16ピクセルを灰色で埋めます。
- 出力
- 1枚につき200件の候補を、位置(画素の座標)と、5つの種類と紛らわしい物それぞれの確からしさで返します。重なった候補をまとめる処理は、使う側で行います。
- 形式
- PyTorch、ONNX
- しきい値
- 0.5。確からしさがこの値以上の候補を、標識の板として扱います。検証用の画像で、見逃しと誤検知のつり合いが一番よくなる値に決めました。
- ライセンス
- Apache-2.0
いまの成績
| 指標 | テスト用(596枚・板988個) |
|---|---|
| AP50(5つの種類をまとめた検出の正確さ) | 0.902 |
| 適合率(検出したうち本物だった割合) | 0.877 |
| 再現率(本物のうち見つけられた割合) | 0.857 |
| 見つけた板の種類が合っていた割合 | 0.980 |
| 再現率(規制) | 0.923 |
| 再現率(指示) | 0.875 |
| 再現率(補助) | 0.698 |
| 再現率(案内) | 0.661 |
| 標識の写っていない画像100枚あたりの誤検知 | 12.0 |
AP50以外は、しきい値0.5のときの値です。テスト用の画像は学習に使っていない7つの地域で撮られたもので、この評価に使ったのは1回だけです。しきい値は、テスト用の画像を見る前に決めました。テスト用の正解はAIが付け、開発者が一部を確かめたもので、1枚ずつの確認はしていません。警戒標識はテスト用に9個しかないため、数を載せていません。
使うときの注意
- 案内標識(交差点名・通り名の板を含む)と補助標識は、ほかの種類より見逃しやすくなります(テスト用での再現率は0.661と0.698)。
- 近くで大きく写った板は苦手です。大きな板を出したくないときに枠を絞り込む方法を、モデルカードに書いています。
- 配布したONNXは横1280×縦736の固定です。4:3の画像は小さく縮めて入れることになり、検証用の画像では見つける割合が下がりました(0.869から0.740)。スマートフォンの横向きの動画(16:9)では、この影響はありません。
- 店の看板・施設の案内板・住所の板などを、標識と取り違えることがあります。
- 点検や安全についての判断を、このモデルの結果だけで行わないでください。
まずは状況をお聞かせください
みちカルテの試験運用や検知モデルの構築について、依頼が固まっていない段階でも構いません。手元にある写真や動画の種類と、困っていることを書いていただければ、できることとできないことをメールでお返事します。
