Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 7 commits ahead, 16 commits behind facebookresearch:master.
Latest commit f080ebc Oct 9, 2018

Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection

Yihui He, Xiangyu Zhang , Kris Kitani and Marios Savvides, Carnegie Mellon University

We introduce a novel bounding box regression loss for learning bounding box transformation and localization variance together. The resulting localization variance is utilized in our new non-maximum suppression method to improve localization accuracy for object detection. On MS-COCO, we boost the AP of VGG-16 faster R-CNN from 23.6% to 29.1% with a single model and nearly no additional computational overhead. More importantly, our method improves the AP of ResNet-50 FPN fast R-CNN from 36.8% to 37.8%, which achieves state-of-the-art bounding box refinement result.


If you find the code useful in your research, please consider citing:

  title={Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection},
  author={He, Yihui and Zhang, Xiangyu and Kitani, Kris and Savvides, Marios},
  journal={arXiv preprint arXiv:1809.08545},


Please find installation instructions for Caffe2 and Detectron in


Running inference using $N GPUs (e.g., N=8).

python2 tools/ \
    --cfg configs/12_2017_baselines/fast_rcnn_R-50-FPN_2x_our.yaml \
    --multi-gpu-testing \


Training with 8 GPUs:

python2 tools/ \
    --cfg configs/12_2017_baselines/fast_rcnn_R-50-FPN_2x_our.yaml \
    OUTPUT_DIR /tmp/detectron-output

to train the initialization model:

python2 tools/ \
    --cfg configs/12_2017_baselines/fast_rcnn_R-50-FPN_2x_init.yaml \
    OUTPUT_DIR /tmp/detectron-output


If you want to integrate softer-NMS into your own code, you can find all modifications to detectron/ at lines with flags: XYXY, PRED_STD, STD_NMS.

If you want to train your own model, Create two configs similar to these two: First, in _init.yaml config, you need to add:

XYXY: True
STD_NMS: False

Other staffs remain the same.

Second, in _our.yaml config, you need:

XYXY: True

Learning rate should be changed accordingly (see here). TRAIN.WEIGHTS should be the path to the output of _init.yaml.


Please create a new issue.


Detectron is Facebook AI Research's software system that implements state-of-the-art object detection algorithms, including Mask R-CNN. It is written in Python and powered by the Caffe2 deep learning framework.

At FAIR, Detectron has enabled numerous research projects, including: Feature Pyramid Networks for Object Detection, Mask R-CNN, Detecting and Recognizing Human-Object Interactions, Focal Loss for Dense Object Detection, Non-local Neural Networks, Learning to Segment Every Thing, Data Distillation: Towards Omni-Supervised Learning, DensePose: Dense Human Pose Estimation In The Wild, and Group Normalization.

Example Mask R-CNN output.


The goal of Detectron is to provide a high-quality, high-performance codebase for object detection research. It is designed to be flexible in order to support rapid implementation and evaluation of novel research. Detectron includes implementations of the following object detection algorithms:

using the following backbone network architectures:

Additional backbone architectures may be easily implemented. For more details about these models, please see References below.



Detectron is released under the Apache 2.0 license. See the NOTICE file for additional details.

Citing Detectron

If you use Detectron in your research or wish to refer to the baseline results published in the Model Zoo, please use the following BibTeX entry.

  author =       {Ross Girshick and Ilija Radosavovic and Georgia Gkioxari and
                  Piotr Doll\'{a}r and Kaiming He},
  title =        {Detectron},
  howpublished = {\url{}},
  year =         {2018}

Model Zoo and Baselines

We provide a large set of baseline results and trained models available for download in the Detectron Model Zoo.


Please find installation instructions for Caffe2 and Detectron in

Quick Start: Using Detectron

After installation, please see for brief tutorials covering inference and training with Detectron.

Getting Help

To start, please check the troubleshooting section of our installation instructions as well as our FAQ. If you couldn't find help there, try searching our GitHub issues. We intend the issues page to be a forum in which the community collectively troubleshoots problems.

If bugs are found, we appreciate pull requests (including adding Q&A's to and improving our installation instructions and troubleshooting documents). Please see for more information about contributing to Detectron.