YOLOX-Pylon-M

A YOLOX-M detector extended with one additional class, traffic cones (traffic_cone), on top of the 80 COCO classes, for 81 classes total. We train the adaptation so the original COCO capabilities are kept, not traded away. In practice this checkpoint holds the official YOLOX-M baseline to within 0.1 mAP, while the added cone class scores higher than every one of the 80 original classes.

Cones are our public demo class. The same adaptation recipe adds arbitrary custom classes such as defects, parts, or PPE to a proven detector without losing what it already knows.

Part of the YOLOX-Pylon family, S · M · L · XL. This is the accuracy and speed balance point of the family.

Built by Empirisch Tech GmbH (Vienna, Austria) under our Chaperone AI brand. See About Empirisch Tech below.

Results

We evaluate on COCO val2017 plus a held-out traffic-cone split, 81 classes in a single pass, 640×640 input, IoU 0.50:0.95 unless noted.

Metric Value
mAP 50:95 (81 classes) 47.2
mAP 50:95, original 80 COCO classes only 46.8
AP50 / AP75 64.9 / 51.3
AP small / medium / large 29.0 / 51.7 / 61.4
AR@100 60.2
traffic_cone AP / AR 77.5 / 80.4
Inference (forward + NMS, batch 1, A100) 2.56 ms

Two things stand out.

  • Retention is essentially free. The official YOLOX-M val2017 baseline is 46.9 mAP on COCO. After adding the cone class, this checkpoint keeps 46.8 on the same 80 classes, a 0.1-point cost for an entire new class.
  • The added class is the best class. At 77.5 AP, traffic_cone outscores every one of the 80 original classes on this checkpoint. The next best are bear (76.6), stop sign (75.3), and fire hydrant (74.2).
Full per-class AP (81 classes)
class AP class AP class AP
person 59.995 bicycle 35.488 car 56.375
motorcycle 48.854 airplane 70.677 bus 73.185
train 70.605 truck 51.140 boat 31.545
traffic light 41.793 fire hydrant 74.168 stop sign 75.333
parking meter 49.909 bench 33.664 bird 40.498
cat 70.232 dog 64.979 horse 66.330
sheep 56.374 cow 60.443 elephant 70.077
bear 76.568 zebra 73.018 giraffe 72.611
backpack 19.293 umbrella 46.162 handbag 18.271
tie 38.489 suitcase 45.225 frisbee 69.493
skis 30.339 snowboard 42.471 sports ball 48.027
kite 47.608 baseball bat 34.778 baseball glove 40.530
skateboard 59.871 surfboard 42.286 tennis racket 55.113
bottle 42.121 wine glass 38.985 cup 45.900
fork 43.635 knife 24.711 spoon 23.156
bowl 45.258 banana 28.749 apple 22.998
sandwich 35.454 orange 28.775 broccoli 24.286
carrot 26.312 hot dog 43.187 pizza 56.291
donut 51.690 cake 41.412 chair 37.081
couch 50.049 potted plant 31.895 bed 47.375
dining table 33.759 toilet 65.277 tv 61.131
laptop 64.677 mouse 61.303 remote 35.245
keyboard 53.938 cell phone 38.263 microwave 66.421
oven 40.868 toaster 41.509 sink 39.656
refrigerator 61.356 book 15.539 clock 50.358
vase 40.381 scissors 37.710 teddy bear 49.235
hair drier 9.187 toothbrush 31.041 traffic_cone 77.503

Comparison with the base model

The comparison that matters is against the checkpoint we adapted from, with the same architecture, the same parameter count, the same FLOPs, and one extra class. Baseline figures are the official COCO val2017 numbers from the YOLOX model table.

Model COCO mAP 50:95 Params FLOPs Custom classes License
yolox_pylon_m (this model) 46.8 kept + traffic_cone 77.5 25.3M 73.8G cone added, COCO kept Apache-2.0
YOLOX-M (base) 46.9 25.3M 73.8G COCO only Apache-2.0

Reading that table, the adaptation costs us 0.1 mAP on the original 80 classes, which sits inside the noise, and buys an entire new class at 77.5 AP. Nothing else about the model changes. Parameters, FLOPs, and inference cost are the same as stock YOLOX-M, and Apache-2.0 carries over from the base, so the weights can be deployed commercially with no per-deployment license and no obligation to open-source derivative work.

Siblings for scale, same recipe and same eval protocol.

Family member mAP (81 cls) COCO kept Cone AP Inference
yolox_pylon_s 42.0 41.6 74.5 1.7 ms
yolox_pylon_m 47.2 46.8 77.5 2.6 ms
yolox_pylon_l 48.9 48.5 78.6 3.7 ms
yolox_pylon_xl 50.4 50.0 78.8 6.0 ms

We measure inference as forward plus NMS on an A100. Those times are not comparable to the V100 figures published in the official YOLOX table.

Usage

The checkpoint loads with the official YOLOX codebase. The only change from stock YOLOX-M is num_classes = 81, with traffic_cone as class index 80.

import torch
from yolox.exp import get_exp
from yolox.utils import postprocess

# stock yolox-m exp, patched to 81 classes
exp = get_exp(exp_name="yolox-m")
exp.num_classes = 81

model = exp.get_model()
ckpt = torch.load("yolox_pylon_m.pth", map_location="cpu")
model.load_state_dict(ckpt["model"])
model.eval().cuda()

# img is a float32 tensor [1, 3, 640, 640], preprocessed YOLOX-style
with torch.no_grad():
    outputs = model(img)
outputs = postprocess(outputs, num_classes=81, conf_thre=0.25, nms_thre=0.45)

COCO_CLASSES = [...]                        # standard 80-class list
CLASSES = COCO_CLASSES + ["traffic_cone"]   # index 80

Or with the repo's demo tool.

git clone https://github.com/Megvii-BaseDetection/YOLOX && cd YOLOX
python tools/demo.py image \
    -f exps/default/yolox_m.py \
    -c yolox_pylon_m.pth \
    --path your_image.jpg --conf 0.25 --nms 0.45 --tsize 640 --device gpu
# patch exps/default/yolox_m.py with self.num_classes = 81 first

Training

  • Base. YOLOX-M (25.3M params), initialized from COCO-pretrained weights
  • Data. 147k images across 81 classes, COCO train2017 plus roughly 30k traffic-cone images, trained jointly so the original 80 classes stay in the mix during adaptation
  • Eval. COCO val2017 plus a held-out cone split, single 81-class evaluation pass
  • Input. 640×640

Intended use and limitations

We built this for roadside and infrastructure perception where traffic cones matter, such as work zones, lane closures, and autonomous driving research, and as a template for class-extension on YOLOX. The M size is the accuracy and speed balance point for most fixed-camera deployments.

The model detects boxes for 81 classes. It does not segment, track, or estimate distance. Where small or distant objects dominate the footage, at 29.0 AP on the small bucket, yolox_pylon_l is worth considering. For embedded and edge boards, yolox_pylon_s runs in 1.7 ms. As with any detector, we recommend validating on the target cameras before production use.

About Empirisch Tech

We are Empirisch Tech GmbH, a Vienna-based AI company, and we publish YOLOX-Pylon under our Chaperone AI brand. We run one recipe across three domains. We adapt a proven foundation model to a specific domain, keep what the base already knows, and ship the checkpoint together with the data it was trained on.

  • Language. Thinking-LQ-1.0 (84% MedQA, within 4 points of GPT-4o at ~20GB) and Coder-LQ-1.0
  • Physics. Chaperone-Flow-1.0 (Poseidon-B extended to new CFD regimes, 1.8% wake error) and Palace-LoRA (electromagnetics solver configs)
  • Vision. The YOLOX-Pylon family and a road-scene anomaly segmentation pipeline

These models power our production platforms, including NumericalAI (GPU physics simulation) and Simvera (industrial perception trained in simulation, deployed on real cameras). We self-host everything in our own Vienna datacenter and use no third- party model APIs. We are a member of the NVIDIA Inception and Microsoft for Startups programs, and our open checkpoints have passed 30,000 downloads on Hugging Face.

Custom builds. The cone class took one adaptation run. For other classes, cameras, or datasets, reach out via chaperoneai.com/contact.

License

Apache-2.0, matching the YOLOX base.

Citation

@article{yolox2021,
  title={YOLOX: Exceeding YOLO Series in 2021},
  author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal={arXiv preprint arXiv:2107.08430},
  year={2021}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train empirischtech/yolox-pylon-m

Paper for empirischtech/yolox-pylon-m