Raah-9B

Raah (राह) means the way. Raah-9B is an open decision model for a photo of an Indian road: it returns a calibrated probability for each kind of damage in one forward pass. It does not write a caption.

  • Questions: pothole (D40), longitudinal crack (D00), transverse crack (D10), alligator cracking (D20).
  • Model: Clef-Flash (Qwen3.5-9B + LoRA r16 + joint decision head, 9.4B parameters), vision encoder frozen, fine-tuned on RDD2022 India, BharatPotHole, and close-up pothole photos.
  • Author: Yashaswi Galhotra · Licence: CC BY-SA 4.0 (share-alike)

To run Raah, use the Clef instructions below. The generic Hugging Face AutoModel + PeftModel example does not load Raah's decision head or calibration.

Results

Headline numbers are on 1,160 RDD2022 India dashcam photos from Delhi, Gurugram and Haryana (Arya et al., 2024), which Raah never trained on. 229 of the photos are labelled potholes.

Against its base model, Clef-Flash before this fine-tune, on those 1,160 photos:

Clef-Flash Raah-9B
pothole accuracy 83.7% 87.5%
pothole precision 61.4% 67.2%
pothole recall 47.2% 71.6%
pothole F1 0.533 0.693
pothole average precision 0.588 0.790

A model that never says “pothole” scores 80.3% accuracy on this set.

Against the other models scored

Raah-9B, GPT-6 Luna, OneJev 1.6 27B, Clef-Flash, and gpt-5-mini answered the same 1,160 photos. gpt-5-mini is the production vision model in Pothole Reporter. It returns a damage label, so it has no average precision. The probability models use thresholds frozen on validation.

accuracy precision recall F1 average precision
Raah-9B 87.5% 67.2% 71.6% 0.693 0.790
GPT-6 Luna 84.7% 63.0% 55.0% 0.587 0.575
Clef-Flash 83.7% 61.4% 47.2% 0.533 0.588
OneJev 1.6 27B 81.6% 54.2% 45.0% 0.492 0.533
gpt-5-mini 82.2% 66.2% 19.7% 0.303 —

Raah finds 164 of the 229 labelled potholes. GPT-6 Luna finds 126, Clef-Flash 108, OneJev 103, and gpt-5-mini 45.

Of those 229, gpt-5-mini named 45 a pothole cavity and 151 surface breakup, and marked 202 as damaged. Raah calls 114 of those 151 a pothole. On any of the four labelled damage types, Raah reaches accuracy 83.1% and F1 0.779. gpt-5-mini’s “damaged” decision reaches accuracy 72.6% and F1 0.655. A Raah photo counts as damaged when the pothole probability is at least 0.3143 or any other question is at least 0.5.

Alligator cracking, 261 photos. Accuracy, precision, recall and F1 use probability 0.5. Average precision does not.

accuracy precision recall F1 average precision
Raah-9B 90.8% 90.1% 66.3% 0.764 0.871
OneJev 1.6 27B 80.9% 95.5% 16.1% 0.275 0.625
GPT-6 Luna 78.8% 100% 5.7% 0.109 0.453
Clef-Flash 78.7% 100% 5.4% 0.102 0.516

Longitudinal cracks, 166 photos, same cutoff:

accuracy precision recall F1 average precision
Raah-9B 88.7% 80.7% 27.7% 0.413 0.585
OneJev 1.6 27B 82.8% 41.5% 50.0% 0.454 0.493
Clef-Flash 86.9% 76.9% 12.0% 0.208 0.429
GPT-6 Luna 86.1% 53.3% 24.1% 0.332 0.374

Transverse cracks are 9 photos. Average precision is 0.047 for Raah and OneJev, 0.027 for Clef-Flash, and 0.020 for GPT-6 Luna. Accuracy near 99% is not a detection result: 1,151 photos have no transverse crack. None of the models find this class.

Where the other models are stronger: transverse cracks, for every model scored. On longitudinal cracks at probability 0.5, OneJev’s F1 is higher because it says yes more often; its precision is lower, and Raah’s average precision is higher. On alligator cracking, Luna and Clef-Flash are perfectly precise because they almost never say yes. gpt-5-mini’s pothole precision is nearly the same as Raah’s. Gemini and Claude were not scored.

Where Raah is stronger: pothole F1 and average precision against every model in the table, pothole recall, and alligator cracking. It has the highest pothole precision of the five and the fewest missed potholes.

Open versus hosted. GPT-6 Luna and gpt-5-mini are proprietary models, billed per call. OneJev 1.6 27B was run locally for this test. Raah’s adapter and head are open: they run on your own GPU, on top of Clef-Flash, and a given version does not change. The full write-up is raah-9b-report.pdf.

Pothole thresholds, frozen on validation: Raah 0.3143, GPT-6 Luna 0.2004, Clef-Flash 0.2567, OneJev 0.3005. GPT-6 Luna: OpenAI, reasoning off. gpt-5-mini: Pothole Reporter’s road-damage-v5 prompt, high image detail, minimal reasoning; a pothole call is an acceptable photo, marked damaged, with type pothole cavity. OneJev 1.6 27B was run locally. Scored 18 October 2026; hosted models change over time. Their outputs were used for evaluation only, never as training data. Raah was trained on the sets named below; the hosted models’ training data is not public. Raah-9B is not affiliated with or endorsed by Cloudflare, the Qwen team, OmniJev, OpenAI, or Pothole Reporter.

Use it for

  • Pothole calls on a dashcam photo of an Indian road. The frozen line on this test is probability 0.3143.
  • The other three questions: longitudinal crack, transverse crack, and alligator cracking, each as its own probability.
  • Passing on the confident cases: keep photos below a threshold for a person. Set that line on your own photos. The line above was fit on RDD2022 India validation, and your roads will differ.

Good to know

  • Raah returns four damage probabilities. It does not judge whether a photo is usable, estimate size, or write a description.
  • It is strongest on potholes and alligator cracking. Transverse cracks are not a detection result.
  • The published test is Indian dashcam frames. It is not a test of phone close-ups, or of photos that are not a road.
  • Keep a person in the loop before a complaint is sent.

How the results were checked

  • Training, calibration and model selection used the training and validation splits. The 1,160-photo test was locked until the checkpoint and the pothole threshold were frozen. Near-duplicate frames stayed in the same split.
  • Each damage question has its own temperature, fitted on validation. The values are in calibration.json. The pothole temperature is 1.000.
  • Calling every photo undamaged scores 80.3% on potholes, 85.7% on longitudinal cracks, 99.2% on transverse cracks, and 77.5% on alligator cracking.

Running it

Raah must be loaded with Clef because the checkpoint is a LoRA adapter, a fine-tuned joint decision head, and a temperature per question. Hugging Face’s generic AutoModel + PeftModel example does not load the head or the temperatures, and no Inference Provider serves this repository.

Load Clef-Flash at revision 8b2e5fd17c09fd49bc2880b805d5323ec7ff4ff3. Apply adapter/ to model.language_model with PEFT. Load head.safetensors into that revision’s JointSchemaHead (joint_schema_model.py ships with Clef-Flash). The photo wording and the four questions are in calibration.json.

probability = sigmoid((logit_true - logit_false) / temperature[question])
pothole = probability["D40"] >= 0.3143

The first run also downloads Clef-Flash, about 19 GB in bf16. Raah needs a GPU.

Training

init Cloudflare/clef-flash at 8b2e5fd17c09fd49bc2880b805d5323ec7ff4ff3 (base Qwen/Qwen3.5-9B)
recipe LoRA r16 / α32 / dropout 0.05 on the language-model linear layers, vision encoder frozen, joint head fine-tuned. Published checkpoint: learning rate 3e-5, head learning rate 1e-5, 2 epochs, batch 8 with 2-step accumulation, seed 0, chosen by validation pothole average precision.
training data what it labels licence
RDD2022 India, train split all four questions CC BY-SA 4.0
BharatPotHole pothole question CC BY-SA 4.0
Annotated Potholes Dataset pothole question, close-ups ODC DbCL 1.0

The photographs are not in this repository.

Licence and use restrictions

  • Raah-9B (adapter and head): CC BY-SA 4.0. RDD2022 and BharatPotHole are share-alike, so the adapter and head are share-alike.
  • The Figshare record used for RDD2022 (10.6084/m9.figshare.21431547) is tagged CC BY 4.0. The GitHub image notice and the dataset paper are CC BY-SA 4.0. This release follows the share-alike notice. A separate Mendeley copy of older India images is marked CC BY-NC 3.0. Raah was not trained from that file.
  • Base weights: Clef-Flash (Cloudflare) and Qwen3.5-9B (Qwen team), both Apache-2.0. This repository contains a modified derivative, a LoRA adapter and a retrained head. The base weights are not included. See NOTICE.md. Not affiliated with or endorsed by either.
  • If you train on these share-alike images, or on this adapter and head, publish your changes under CC BY-SA 4.0, credit the sources, and do not redistribute the photographs unless the image licence you used allows it.
  • Test photos were used for evaluation only and are not redistributed.

Acknowledgements

Cloudflare (Clef), the Qwen team, Deeksha Arya, Hiroya Maeda, Sanjay Kumar Ghosh, Durga Toshniwal and Yoshihide Sekimoto (RDD2022; Geoscience Data Journal, 2024), Rishi Raj Sahoo, Surbhi Saswati Mohanty and Subhankar Mishra (BharatPotHole / iWatchRoad; CODS 2025), and the Chitholian annotated pothole collection.

Citation

@misc{galhotra2026raah,
  title  = {Raah-9B: an open, calibrated decision model for Indian road damage},
  author = {Galhotra, Yashaswi},
  year   = {2026},
  url    = {https://huggingface.co/YAlgoG/raah-9b}
}
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for YAlgoG/raah-9b

Finetuned
Qwen/Qwen3.5-9B
Adapter
(7)
this model