This project provides an implementation for our CVPR2021 paper "OTA: Optimal Transport Assignment for Object Detection" on PyTorch.
- install cvpods locally (requires cuda to compile)
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- prepare datasets
cd /path/to/cvpods/datasets ln -s /path/to/your/coco/dataset coco- Train & Test
git clone https://github.com/Megvii-BaseDetection/OTA.git cd playground/detection/coco/ota.res50.fpn.coco.800size.1x # 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" | Model | Backbone | LR Sched. | mAP | Recall | AP50/AP75/APs/APm/APl | Download |
|---|---|---|---|---|---|---|
| RetinaNet | R50 | 1x | 36.5 | 53.4 | 56.2/39.3/21.9/40.5/47.7 | - |
| Faster R-CNN | R50 | 1x | 38.1 | 52.2 | 58.9/41.0/22.5/41.5/48.9 | - |
| FCOS | R50 | 1x | 38.7 | 57.0 | 57.5/41.7/22.6/42.7/49.9 | - |
| FreeAnchor | R50 | 1x | 38.4 | 55.4 | 57.0/41.1/21.9/41.7/51.8 | - |
| ATSS | R50 | 1x | 39.4 | 57.7 | 57.5/42.7/22.9/42.9/51.2 | - |
| PAA(w/. Voting) | R50 | 1x | 40.4 | - | - | - |
| OTA | R50 | 1x | 40.7 | 59.0 | 58.4/44.3/23.2/45.0/53.6 | weights |
| Model | Backbone | LR Sched. | Training Scale (ShortSide) | mAP | AP50/AP75/APs/APm/APl | Download |
|---|---|---|---|---|---|---|
| OTA | R101 | 2x | 640~800 | 45.3 | 63.5/49.3/26.9/48.8/56.1 | weights |
| OTA | X101 | 2x | 640~800 | 47.0 | 65.8/51.1/29.2/50.4/57.9 | weights |
| OTA | X101-DCN | 2x | 640~800 | 49.2 | 67.6/53.5/30.0/52.5/62.3 | weights |
| OTA* | X101-DCN | 2x | 640~800 | 51.5 | 68.6/57.1/34.1/53.7/64.1 | weights |
* stands for ATSS-style testing time augmentation. To enable testing time augmentation, add/modify the following code frac in the corresponding config.py
TEST=dict( DETECTIONS_PER_IMAGE=300, AUG=dict( ENABLED=True, MAX_SIZE=3000, MIN_SIZES=(400, 500, 600, 640, 700, 900, 1000, 1100, 1200, 1300, 1400, 1800), EXTRA_SIZES=((800, 1333),), SCALE_FILTER=True, SCALE_RANGES=( [96, 10000], [96, 10000], [64, 10000], [64, 10000], [64, 10000], [0, 10000], [0, 10000], [0, 256], [0, 256], [0, 192], [0, 192], [0, 96], [0, 10000]) ) ),This repo is developed based on cvpods. Please check cvpods for more details and features.
This repo is released under the Apache 2.0 license. Please see the LICENSE file for more information.
