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)

画像そのものは重みに含まれていません。

学習の設定

  • 元の重み: 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support