nms postprocessing for yolo10 (nms free?) model

It is said that yolo10 architecture is nms-free ( YOLOv10: Real-Time End-to-End Object Detection - Ultralytics YOLO Docs )

  • One-to-One Head: Generates a single best prediction per object during inference to eliminate the need for NMS, thereby reducing latency and improving

Why we have nms-related parameters in https://raw.githubusercontent.com/hailo-ai/hailo_model_zoo/refs/heads/master/hailo_model_zoo/cfg/postprocess_config/yolov10s_nms_config.json?

1 Like

Hey @EldarZhago,

Welcome to the community!

You’re absolutely right to notice the apparent contradiction between YOLOv10 being “NMS-free” and having an NMS config file in our model zoo. Let me break this down:

The short answer: YOLOv10 can run without NMS, but our current pipeline still includes NMS support for practical reasons.

Here’s what’s happening:

YOLOv10’s “NMS-free” design uses a dual-head training approach - one head for training (one-to-many) and another for inference (one-to-one). When you use the one-to-one head properly, it should give you a single prediction per object, eliminating the need for NMS post-processing.

So why do we still have the NMS config?

  1. Compatibility - Our post-processing pipeline works across all YOLO versions. Keeping NMS support means existing workflows, demos, and evaluation scripts work seamlessly without special cases for v10.

  2. Real-world flexibility - Not every YOLOv10 model you’ll find actually exposes only the one-to-one head. Some exports still produce dense predictions like older YOLO versions, where NMS is still needed.

  3. Practical control - Even with one-to-one heads, teams sometimes want NMS as a safety net for noisy data or when matching legacy performance metrics.

Want to run truly NMS-free?

If you want to try the pure NMS-free approach:

  • Make sure your YOLOv10 export uses the one-to-one inference head
  • Remove the nms_postprocess() stage from your .alls pipeline
  • Handle confidence filtering in your application code instead

Hope this clears things up!