YOLOX-Pylon-S
A YOLOX-S detector extended with one additional class β traffic cones (traffic_cone) β on top of the
80 COCO classes, for 81 classes total. The adaptation is trained so the original COCO capabilities are
kept, not traded away: on this checkpoint the retained COCO score actually lands above the official
YOLOX-S baseline, while the added cone class scores higher than every one of the 80 original classes.
Cones are the public demo class. The same adaptation recipe adds arbitrary custom classes (defects, parts, PPE, and similar) to a proven detector without losing what it already knows.
Part of the YOLOX-Pylon family: S Β· M Β· L Β· X (in training).
Built by Empirisch Tech GmbH (Vienna, Austria) under the Chaperone AI brand β see About Empirisch Tech below.
Results
Evaluated 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) | 42.0 |
| mAP 50:95, original 80 COCO classes only | 41.6 |
| AP50 / AP75 | 60.2 / 45.8 |
| AP small / medium / large | 24.5 / 46.1 / 53.5 |
| AR@100 | 56.3 |
| traffic_cone AP / AR | 74.5 / 77.7 |
| Inference (forward + NMS, batch 1, fp16) | 1.72 ms |
Two things worth noting:
- Retention is better than free. The official YOLOX-S baseline is 40.5 mAP on COCO. After adding the cone class, this checkpoint scores 41.6 on the same 80 classes β 1.1 points above the base it started from (a side effect of the additional training schedule).
- The added class is the best class. At 74.5 AP,
traffic_coneoutscores all 80 original classes on this checkpoint β the next best arestop sign(71.8),giraffe(69.5), andbear(69.3).
Full per-class AP (81 classes)
| class | AP | class | AP | class | AP |
|---|---|---|---|---|---|
| person | 55.632 | bicycle | 30.285 | car | 51.554 |
| motorcycle | 44.826 | airplane | 65.935 | bus | 69.032 |
| train | 61.938 | truck | 46.615 | boat | 26.122 |
| traffic light | 38.914 | fire hydrant | 69.017 | stop sign | 71.756 |
| parking meter | 47.091 | bench | 29.711 | bird | 35.062 |
| cat | 62.883 | dog | 58.504 | horse | 59.151 |
| sheep | 49.890 | cow | 54.719 | elephant | 65.400 |
| bear | 69.281 | zebra | 66.671 | giraffe | 69.549 |
| backpack | 17.542 | umbrella | 39.401 | handbag | 13.586 |
| tie | 30.176 | suitcase | 41.589 | frisbee | 62.697 |
| skis | 24.562 | snowboard | 32.899 | sports ball | 46.214 |
| kite | 44.614 | baseball bat | 28.172 | baseball glove | 38.296 |
| skateboard | 50.527 | surfboard | 36.032 | tennis racket | 45.279 |
| bottle | 38.133 | wine glass | 33.070 | cup | 39.283 |
| fork | 33.245 | knife | 16.844 | spoon | 15.319 |
| bowl | 42.512 | banana | 25.952 | apple | 18.219 |
| sandwich | 30.984 | orange | 29.727 | broccoli | 22.596 |
| carrot | 23.408 | hot dog | 32.177 | pizza | 52.505 |
| donut | 47.748 | cake | 39.168 | chair | 32.042 |
| couch | 44.568 | potted plant | 27.697 | bed | 42.693 |
| dining table | 30.536 | toilet | 65.092 | tv | 56.373 |
| laptop | 60.517 | mouse | 59.313 | remote | 23.742 |
| keyboard | 50.499 | cell phone | 33.708 | microwave | 53.325 |
| oven | 33.296 | toaster | 39.092 | sink | 39.782 |
| refrigerator | 54.511 | book | 13.306 | clock | 49.399 |
| vase | 36.430 | scissors | 28.823 | teddy bear | 44.074 |
| hair drier | 1.065 | toothbrush | 18.352 | traffic_cone | 74.516 |
Comparison with other detectors
Small-tier detectors, published COCO val2017 figures from the official
YOLOX and
Ultralytics model tables.
| Model | COCO mAP 50:95 | Params | Custom classes | License |
|---|---|---|---|---|
| yolox-pylon-s (this model) | 41.6 kept + traffic_cone 74.5 |
9.0M | yours added, COCO kept | Apache-2.0 |
| YOLOX-S (base) | 40.5 | 9.0M | COCO only | Apache-2.0 |
| YOLO11s | 47.0 | 9.4M | COCO only | AGPL-3.0 / commercial |
| YOLO26s | 48.6 | 9.5M | COCO only | AGPL-3.0 / commercial |
How to read this honestly: the newest Ultralytics releases post higher raw COCO scores β several years of architecture progress at similar parameter counts. This model optimizes for a different job: extending a commercially permissive base with new classes while retaining its original capabilities. The relevant scores are the retention delta (+1.1 over its own baseline) and the added-class AP (74.5), not the raw COCO leaderboard. The Apache-2.0 license also means the weights can be deployed commercially without a per-deployment license or an obligation to open-source derivative work, which AGPL-3.0 models require.
Larger siblings for scale (same recipe, 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-x | in training | β | β | β |
Usage
The checkpoint loads with the official YOLOX codebase.
The only change from stock YOLOX-S 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-s exp, patched to 81 classes
exp = get_exp(exp_name="yolox-s")
exp.num_classes = 81
model = exp.get_model()
ckpt = torch.load("yolox-pylon-s.pth", map_location="cpu")
model.load_state_dict(ckpt["model"])
model.eval().cuda()
# img: 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_s.py \
-c yolox-pylon-s.pth \
--path your_image.jpg --conf 0.25 --nms 0.45 --tsize 640 --device gpu
# patch exps/default/yolox_s.py with self.num_classes = 81 first
Training
- Base: YOLOX-S (9.0M params), initialized from COCO-pretrained weights
- Data: COCO
train2017plus a labeled traffic-cone dataset, trained jointly so the original 80 classes stay in the mix during adaptation - Eval: COCO
val2017plus a held-out cone split, single 81-class evaluation pass - Input: 640Γ640
Intended use and limitations
Intended for roadside and infrastructure perception where traffic cones matter (work zones, lane closures, autonomous driving research) and as a template for class-extension on YOLOX. The model detects boxes for 81 classes; it does not segment, track, or estimate distance. Accuracy on small objects (24.5 AP) follows the usual small-model pattern β if small or distant cones dominate your footage, prefer yolox-pylon-m or yolox-pylon-l. As with any detector, validate on your own cameras before production use.
About Empirisch Tech
YOLOX-Pylon is built by Empirisch Tech GmbH, a Vienna-based AI company, under its Chaperone AI brand. The company runs one recipe across three domains β 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
The models power the company's production platforms, including NumericalAI (GPU physics simulation) and Simvera (industrial perception trained in simulation, deployed on real cameras). Everything is self-hosted in the company's own Vienna datacenter β no third-party model APIs. Empirisch Tech is a member of the NVIDIA Inception and Microsoft for Startups programs, and its open checkpoints have passed 30,000 downloads on Hugging Face.
Custom builds: the cone class took one adaptation run. For your own 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}
}