YOLO26m fine-tuned on KITTI (car, person, cyclist, truck, tram)

YOLO26m (Ultralytics) fine-tuned from its COCO checkpoint on KITTI 2D object detection, on a Jetson Orin Nano 8 GB in a fixed 7-hour budget. From the CMPE 249 (SJSU, Fall 2026) report One Flag and Two Gaps: What Zero-Shot COCO-to-Driving Detection Results Hide; code, metric files and the paper are at github.com/Adithya-Rajendran/HW1-2D-Detection (tag v1.0).

File Training labels
yolo26m_kitti5_640.pt KITTI boxes; Van, Person_sitting, Misc and DontCare as background
yolo26m_kitti5_640_maskvan.pt same, with Van and Person_sitting regions grayed out in the training images (ablation)

Class ids: 0 car, 1 person, 2 cyclist, 3 truck, 4 train (KITTI Tram). Names follow COCO so that four of the five classifier rows start from the pretrained weights.

Results

KITTI 2D object val (3,769 frames, Chen et al. split), 640 px, scored with the KITTI devkit's ignore rules. AP is COCO AP@[.5:.95] (95% bootstrap interval); "moderate" is KITTI AP|R40 at the devkit IoU.

Model 4-class AP car AP truck AP tram AP person AP KITTI moderate car / ped F1 @ conf 0.25 (300-frame subset)
YOLO26m COCO checkpoint, zero-shot (same NMS head) 26.2 [25.3, 27.4] 50.7 11.3 18.5 24.3 74.7 / 70.5 0.73
yolo26m_kitti5_640.pt 28.4 [27.5, 29.5] 68.3 8.0 10.3 26.9 90.6 / 63.3 0.84
yolo26m_kitti5_640_maskvan.pt 30.6 [29.7, 31.8] 68.4 18.1 9.8 26.2 90.4 / 62.0 0.83

TensorRT FP16 latency of the architecture on the Orin Nano: 18.0 ms p50 (NMS head), 15.6 ms (NMS-free head).

Do not use these off KITTI. On 3,000 nuImages val frames the fine-tune scores 9.6 AP on person/car/truck against 34.0 for the COCO checkpoint: at conf 0.25 it is 92% precise but finds 16% of objects. It became confident only on KITTI-looking objects.

Usage

from huggingface_hub import hf_hub_download
from ultralytics import YOLO

path = hf_hub_download("Adithya-Rajendran/yolo26m-kitti", "yolo26m_kitti5_640_maskvan.pt")
model = YOLO(path)
results = model.predict("000123.png", imgsz=640, conf=0.25)            # NMS head, as evaluated
results_nf = model.predict("000123.png", imgsz=640, conf=0.25, nms=False)  # NMS-free (one-to-one) head

Ultralytics 8.4.183 was used for training and evaluation.

Training

  • 3,412 KITTI training frames (the 3,712-frame train half minus 300 held out for checkpoint selection), 640 px, batch 8, seed 0, Ultralytics defaults otherwise, 7-hour time budget (84 epochs), on a Jetson Orin Nano Super 8 GB in Docker.
  • Commands: python -m det_eval.finetune split, export (ablation: --mask Van Person_sitting --out data/kitti_yolo_maskvan), train --hours 7.

License and attribution

  • YOLO26 weights are released by Ultralytics under AGPL-3.0, so these fine-tuned weights are AGPL-3.0 as well (LICENSE).
  • Trained on KITTI (Geiger, Lenz and Urtasun, CVPR 2012), licensed CC BY-NC-SA 3.0. Use for non-commercial research only.

Citation

@misc{rajendran2026oneflag,
  author = {Adithya Rajendran},
  title  = {One Flag and Two Gaps: What Zero-Shot COCO-to-Driving Detection Results Hide},
  year   = {2026},
  note   = {CMPE 249 report, San Jos\'e State University},
  url    = {https://github.com/Adithya-Rajendran/HW1-2D-Detection}
}
Downloads last month
54
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support