Home

Awesome

End-to-End Object Detection with Fully Convolutional Network

GitHub

This project provides an implementation for "End-to-End Object Detection with Fully Convolutional Network" on PyTorch.

Experiments in the paper were conducted on the internal framework, thus we reimplement them on cvpods and report details as below.

Requirements

Get Started


python3 -m pip install 'git+https://github.com/Megvii-BaseDetection/cvpods.git'
# (add --user if you don't have permission)

# Or, to install it from a local clone:
git clone https://github.com/Megvii-BaseDetection/cvpods.git
python3 -m pip install -e cvpods

# Or,
pip install -r requirements.txt
python3 setup.py build develop
cd /path/to/cvpods
cd datasets
ln -s /path/to/your/coco/dataset coco
git clone https://github.com/Megvii-BaseDetection/DeFCN.git
cd DeFCN/playground/detection/coco/poto.res50.fpn.coco.800size.3x_ms  # for example

# Train
pods_train --num-gpus 8

# Test
pods_test --num-gpus 8 \
    MODEL.WEIGHTS /path/to/your/save_dir/ckpt.pth # optional
    OUTPUT_DIR /path/to/your/save_dir # optional

# Multi node training
## sudo apt install net-tools ifconfig
pods_train --num-gpus 8 --num-machines N --machine-rank 0/1/.../N-1 --dist-url "tcp://MASTER_IP:port"

Results on COCO2017 val set

modelassignmentwith NMSlr sched.mAPmARdownload
FCOSone-to-manyYes3x + ms41.459.1weight | log
FCOS baselineone-to-manyYes3x + ms40.958.4weight | log
Anchorone-to-oneNo3x + ms37.160.5weight | log
Centerone-to-oneNo3x + ms35.261.0weight | log
Foreground Lossone-to-oneNo3x + ms38.762.2weight | log
POTOone-to-oneNo3x + ms39.261.7weight | log
POTO + 3DMFone-to-oneNo3x + ms40.661.6weight | log
POTO + 3DMF + Auxmixture*No3x + ms41.461.5weight | log

* We adopt a one-to-one assignment in POTO and a one-to-many assignment in the auxiliary loss, respectively.

Results on CrowdHuman val set

modelassignmentwith NMSlr sched.AP50mMRrecalldownload
FCOSone-to-manyYes30k iters86.154.994.2weight | log
ATSSone-to-manyYes30k iters87.249.794.0weight | log
POTOone-to-oneNo30k iters88.552.296.3weight | log
POTO + 3DMFone-to-oneNo30k iters88.851.096.6weight | log
POTO + 3DMF + Auxmixture*No30k iters89.148.996.5weight | log

* We adopt a one-to-one assignment in POTO and a one-to-many assignment in the auxiliary loss, respectively.

Ablations on COCO2017 val set

modelassignmentwith NMSlr sched.mAPmARnote
POTOone-to-oneNo6x + ms40.061.9
POTOone-to-oneNo9x + ms40.262.3
POTOone-to-oneNo3x + ms39.261.1replace Hungarian algorithm by argmax
POTO + 3DMFone-to-oneNo3x + ms40.962.0remove GN in 3DMF
POTO + 3DMF + Auxmixture*No3x + ms41.561.5remove GN in 3DMF

* We adopt a one-to-one assignment in POTO and a one-to-many assignment in the auxiliary loss, respectively.

Acknowledgement

This repo is developed based on cvpods. Please check cvpods for more details and features.

License

This repo is released under the Apache 2.0 license. Please see the LICENSE file for more information.

Citing

If you use this work in your research or wish to refer to the baseline results published here, please use the following BibTeX entries:

@article{wang2020end,
  title   =  {End-to-End Object Detection with Fully Convolutional Network},
  author  =  {Wang, Jianfeng and Song, Lin and Li, Zeming and Sun, Hongbin and Sun, Jian and Zheng, Nanning},
  journal =  {arXiv preprint arXiv:2012.03544},
  year    =  {2020}
}

Contributing to the project

Any pull requests or issues about the implementation are welcome. If you have any issue about the library (e.g. installation, environments), please refer to cvpods.