Pothole RF-DETR Nano
モデルラボ(インフラインテリジェンス)が公開している、道路の穴(ポットホール)を見つける物体検出モデルです。 スマートフォンを車に固定し、前方の路面を撮った画像を想定しています。
v4(2026-10-31): 穴の写っていない画像での誤検知を減らした版です。誤検知が出た画像の割合は 31% から 2% に減り、テストの AP50 は 0.737 から 0.702 になりました(下の「評価」)。v3 は v3-r1 のタグで残しています(revision="v3-r1")。
- 種類: 1クラスの物体検出(ポットホール)
- 元のモデル: RF-DETR Nano(COCO で事前学習した公開重み、Apache-2.0)を追加学習
- 入力: 384×384 の RGB 画像(縦横比を保たずに正方形へ引き伸ばす)
- 運用しきい値: 0.45
- ライセンス: 重みは Apache-2.0。学習データの帰属表示は「学習データ」と
NOTICEを参照
ファイル
| ファイル | 中身 |
|---|---|
pothole_rfdetr_nano_v4_r1.pth |
PyTorch の重み(rfdetr 1.9.2 で読み込めることを確認) |
pothole_rfdetr_nano_v4_r1.onnx |
ONNX(opset 17)。出力は dets6 |
coreml/pothole_rfdetr_nano_v4_r1.mlpackage |
CoreML(mlprogram、FLOAT32、iOS 17 以降) |
config.json |
入出力・前処理・しきい値 |
MODEL_CONTRACT.md |
入出力の決まり(dets6) |
eval/ |
評価結果と、形式ごとの出力の一致の記録 |
examples/predict_onnx.py |
ONNX で動かす例 |
LICENSE / NOTICE |
ライセンスと帰属表示 |
使い方
ONNX
pip install onnxruntime numpy pillow
python examples/predict_onnx.py pothole_rfdetr_nano_v4_r1.onnx road.jpg
PyTorch(rfdetr)
from rfdetr import RFDETRNano
model = RFDETRNano(pretrain_weights="pothole_rfdetr_nano_v4_r1.pth")
detections = model.predict("road.jpg", threshold=0.45)
print(detections.xyxy, detections.confidence)
CoreML(iOS 17 以降)
coreml/pothole_rfdetr_nano_v4_r1.mlpackage を Xcode のプロジェクトに追加します。入力は image(384×384 の RGB 画像、0〜255 のまま)、出力は dets6 です。
FLOAT16 では PyTorch と同じ検出結果にならなかったため、FLOAT32 で配布しています。
入出力の決まり
- 出力
dets6は[1, 300, 6]。1行が[x1, y1, x2, y2, score, class_id]で、座標は 0〜1 の割合です。 - NMS(重なりの除去)は要りません。
scoreがしきい値以上の行だけを使います。 - 詳しくは
MODEL_CONTRACT.mdを見てください。同じ決まりにそろえたモデルは、前処理・後処理を変えずに差し替えられます。
評価
穴の見つけ方(v3 と同じ評価用の画像)
| 指標 | 検証(29枚・42箱) | テスト(29枚・44箱) |
|---|---|---|
| AP50 | 0.731 | 0.702 |
| AP50:95 | 0.403 | 0.374 |
| 適合率(しきい値 0.45) | 0.87 | 0.74 |
| 再現率(しきい値 0.45) | 0.62 | 0.66 |
| F1(しきい値 0.45) | 0.72 | 0.70 |
- 評価用の画像は学習と同じ出どころから人が選んだもので、それぞれ 29 枚と少なく、数値のぶれは大きいです。
- 運用しきい値 0.45 はテストの結果も見て決めたため、しきい値 0.45 でのテストの数値は実力より良く出ている可能性があります。
- 実際の走行(夜・雨・逆光、車やスマートフォンの違い)での成績はまだ測っていません。
- v3 との比較(しきい値 0.45): 検証の AP50 は 0.728 → 0.731 とほぼ同じ、テストの AP50 は 0.737 → 0.702、テストで見つけた穴は 44 個中 32 → 29 個です。
- 数値の元データは
eval/にあります。ONNX・CoreML の出力が PyTorch と一致することもeval/に記録しています。
誤検知(穴の写っていない画像)
| 穴の写っていない画像(しきい値 0.45) | v3 | v4 |
|---|---|---|
| RDD2022 日本の穴の無い画像(300枚) | 93枚(31%) | 7枚(2%) |
- 学習には使っていない画像です。
- 数値の元データは
eval/false_positive_negatives.jsonにあります。
学習データ
| 出どころ | ライセンス | 学習 | 検証 | テスト |
|---|---|---|---|---|
| RDD2022 穴なし(日本) | CC BY 4.0 | 300 | 30 | 0 |
| RDD2022(日本) | CC BY 4.0 | 86 | 19 | 18 |
| RDD2022(ノルウェー) | CC BY 4.0 | 23 | 4 | 6 |
| 運営者の画像 | 公開しない | 30 | 0 | 0 |
| RDD2022(チェコ) | CC BY 4.0 | 17 | 4 | 3 |
| Roboflow Universe (Hazels Space) | CC BY 4.0 | 10 | 2 | 2 |
| RDD2022(インド) | CC BY 4.0 | 1 | 0 | 0 |
| 合計(箱の数) | 467(218) | 59(42) | 29(44) |
- RDD2022: RDD2022: A multi-national image dataset for automatic road damage detection
- ライセンス: CC BY 4.0(figshare の記載。GitHub の README は CC BY-SA 4.0 と書いているため、データを再配布するときは CC BY-SA 4.0 に合わせる)
- 使った範囲: ポットホール(D40)の箱が付いた画像から、人が見て承認したものだけ
- Roboflow Universe (Hazels Space): Road Damage|Manhole|Sewer Covers Dataset (Hazels Space, Roboflow Universe)
- ライセンス: CC BY 4.0(データセットのページに投稿者が表示しているライセンス)
- 使った範囲: Pothole の箱だけを持つ画像から、人が見て承認したものだけ
- RDD2022 穴なし: RDD2022: A multi-national image dataset for automatic road damage detection
- ライセンス: CC BY 4.0(上の RDD2022 と同じ)
- 使った範囲: 日本の画像のうち、ポットホール(D40)の箱が無いもの
- 運営者の画像: 運営者が撮った画像(公開しない)
- ライセンス: 公開しない(画像は配布しない)
- 使った範囲: 一部の画像
画像そのものは重みに含まれていません。
学習の設定
- 元の重み: RF-DETR Nano(COCO で事前学習した公開重み)
- 入力の大きさ: 384(正方形へリサイズ。学習時は複数の大きさを混ぜる)
- エポック: 50
- バッチ: 8、勾配の累積: 4
- 学習率: 0.0001(エンコーダ 0.00015)、AdamW、重み減衰 0.0001
- EMA: あり(減衰 0.993)。公開する重みは EMA のもの
- 乱数の種: 42
- 計算機: Apple Silicon(PyTorch MPS)
苦手なこと・使うときの注意
- 見つけるのはポットホールだけです。ひび割れなど、ほかの損傷は対象外です。
- 学習に使った画像は 467 枚と少なく、ほとんどが公開データの日本・ノルウェー・チェコの道路です(うち穴の写った画像は137枚)。地域や道路の種類が違うと成績が落ちることがあります。
- 夜間・雨・逆光での成績は確かめていません。
- 道路の点検や安全の判断を、このモデルの結果だけで行わないでください。
ライセンスと帰属表示
- 重みとコード: Apache-2.0(
LICENSE)。著作権表示と帰属はNOTICEにまとめています。 - 元のモデル RF-DETR: Copyright 2025 Roboflow, Inc.(Apache-2.0)
- 学習データを使った研究で引用するときは、次の文献を挙げてください。
@article{Arya2024RDD2022,
title={RDD2022: A multi-national image dataset for automatic road damage detection},
author={Arya, Deeksha and Maeda, Hiroya and Ghosh, Sanjay Kumar and Toshniwal, Durga and Sekimoto, Yoshihide},
journal={Geoscience Data Journal},
volume={11},
number={4},
pages={846--862},
year={2024},
doi={10.1002/gdj3.260}
}
@misc{road-damage-manhole-sewer-covers_dataset,
title = {Road Damage|Manhole|Sewer Covers Dataset},
type = {Open Source Dataset},
author = {Hazels Space},
howpublished = {\url{https://universe.roboflow.com/hazels-space/road-damage-manhole-sewer-covers}},
journal = {Roboflow Universe},
publisher = {Roboflow},
year = {2025},
month = {jul}
}
問い合わせ
インフラインテリジェンス(https://infra-intelligence.com/) contact@infra-intelligence.com
English summary
Pothole RF-DETR Nano is a single-class object detector for potholes, published by Model Lab (Infra Intelligence). It is RF-DETR Nano (COCO-pretrained, Apache-2.0) fine-tuned on 555 images: hand-picked pothole images from RDD2022 and a Roboflow Universe dataset (both CC BY 4.0), plus pothole-free images. It is meant for images taken by a smartphone mounted in a car.
v4 (2026-10-31) reduces false positives: on 300 held-out pothole-free RDD2022 Japan images, images with any detection at threshold 0.45 dropped from 93 (v3) to 7. Test AP50 went from 0.737 to 0.702. v3 is kept under the tag v3-r1.
- Input: 384×384 RGB, raw 0–255, stretched to a square (no letterbox). Normalization is inside the graph.
- Output
dets6:[1,300,6]rows of[x1,y1,x2,y2,score,class_id], normalized coordinates, no NMS needed. - Operating threshold: 0.45. Test set (29 images, 44 boxes): AP50 0.702. The threshold was chosen while looking at the test results, so test numbers at that threshold may be optimistic. Real-world driving performance has not been measured yet.
- Formats: PyTorch (rfdetr), ONNX, CoreML (FLOAT32, iOS 17+). ONNX and CoreML outputs were checked against PyTorch (see
eval/). - License: Apache-2.0 for the weights. Please cite the training datasets listed above.
- Downloads last month
- 46