Megvii-BaseDetection / YOLOX

YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
Apache License 2.0
9.45k stars 2.21k forks source link

NMS free version only achieves 41.7 mAP #479

Open superaha opened 3 years ago

superaha commented 3 years ago

I try to implement the NMS-free version of YOLOX, as reported in the paper, NMS free only do little harm to the mAP performance.

My current implementation changes the self.dynamic_k_matching to one-to-one assignment. However, the current mAP only has 41.7 mAP when evaluated using the topK or the NMS.

Anyone has any tries or suggestions on improving the results?

Joker316701882 commented 3 years ago

@superaha Hi, please refer to this paper to make sure your implementation match all the details. (e.g., detach the gradient, 2 convs, the position of selector branch)

abhigoku10 commented 2 years ago

@superaha can you share your nms free version it would be helpful

Hodapp87 commented 2 years ago

I likewise tried to implement the NMS-free described in the paper. I experimented in various ways:

The only thing I have not tried yet is the ranking loss in section 3.1.2, but according to them it does not make a large difference.

I'm using a different dataset for my tests, but I am consistently seeing AP50 of ~0.97-0.98 with heuristic NMS - but never above 0.92 with NMS-free.

The details don't match exactly between the "Object Detection Made Simpler by Eliminating Heuristic NMS" and the YOLOX implementation - so it is not always clear how to implement. It has an objectness head (never trained on IoU), and a classification head which is trained on IoU and one-hot classification, whereas the NMS-free paper mentions a separate "centerness prediction" and classification score. It's not clear exactly what centerness is supposed to be here.

This would be much easier if the repository simply included the code that the "End-to-end YOLO" section of the YOLOX paper talks about.

baishiruyue commented 2 years ago

I likewise tried to implement the NMS-free described in the paper. I experimented in various ways:

  • using just regression features as input to the PSS branch, or using regression + classification features as input
  • loss function & matching score with and without objectness included
  • using topK as the positiveness prior, or the 2.5 pixel center region
  • using 3 conv layers instead of 2
  • with and without focal loss
  • various different weights on the PSS loss (0.1 up through 40.0)
  • both equation 3 for matching score, and the substitution mentioned in section 4.2.7 of the NMS-free paper.

The only thing I have not tried yet is the ranking loss in section 3.1.2, but according to them it does not make a large difference.

I'm using a different dataset for my tests, but I am consistently seeing AP50 of ~0.97-0.98 with heuristic NMS - but never above 0.92 with NMS-free.

The details don't match exactly between the "Object Detection Made Simpler by Eliminating Heuristic NMS" and the YOLOX implementation - so it is not always clear how to implement. It has an objectness head (never trained on IoU), and a classification head which is trained on IoU and one-hot classification, whereas the NMS-free paper mentions a separate "centerness prediction" and classification score. It's not clear exactly what centerness is supposed to be here.

This would be much easier if the repository simply included the code that the "End-to-end YOLO" section of the YOLOX paper talks about.

hello, i also tried to implement the nms-free version, and experimented many ways, but i can not get good result (i use voc for test, and the best result is nms-free: ap50: 62 nms-base: 72), can we talk about it, this is my QQ: 1032304268 ?