• Stars
    star
    195
  • Rank 199,374 (Top 4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Official code for "A Normalized Gaussian Wasserstein Distance for Tiny Object Detection"

A Normalized Gaussian Wasserstein Distance for Tiny Object Detection

This is the official code for the NWD. The expanded method is accepted by the ISPRS J P & RS in 2022.

Installation

Requirements

  • Linux
  • Python 3.7 (Python 2 is not supported)
  • PyTorch 1.5 or higher
  • CUDA 10.1 or higher
  • NCCL 2
  • GCC(G++) 5.4 or higher
  • mmcv-nwd==1.3.5
  • cocoapi-aitod==12.0.3

We have tested the following versions of OS and softwares:

  • OS: Ubuntu 16.04
  • GPU: TITAN X
  • CUDA: 10.1
  • GCC(G++): 5.5.0
  • PyTorch: 1.5.0+cu101
  • TorchVision: 0.6.0+cu101
  • MMCV: 1.3.5
  • MMDetection: 2.13.0

Install

a. Create a conda virtual environment and activate it.

conda create -n nwd python=3.7 -y
conda activate nwd

b. Install PyTorch stable or nightly and torchvision following the official instructions, e.g.,

pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

c. Install MMCV-NWD

git clone https://github.com/jwwangchn/mmcv-nwd.git
cd mmcv-nwd
MMCV_WITH_OPS=1 pip install -e .  # package mmcv-full will be installed after this step
cd ../

d. Install COCOAPI-AITOD for Evaluating on AI-TOD dataset

pip install "git+https://github.com/jwwangchn/cocoapi-aitod.git#subdirectory=aitodpycocotools"

e. Install NWD

git clone https://github.com/jwwangchn/NWD.git
# optional
pip install -r requirements.txt

python setup.py develop
# or "pip install -v -e ."

Prepare datasets

Please refer to AI-TOD for AI-TOD dataset.

It is recommended to symlink the dataset root to $NWD/data. If your folder structure is different, you may need to change the corresponding paths in config files (configs/base/datasets/aitod_detection.py).

NWD
โ”œโ”€โ”€ mmdet
โ”œโ”€โ”€ tools
โ”œโ”€โ”€ configs
โ”œโ”€โ”€ data
โ”‚   โ”œโ”€โ”€ AI-TOD
โ”‚   โ”‚   โ”œโ”€โ”€ annotations
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ aitod_training_v1.json
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ aitod_validation_v1.json
โ”‚   โ”‚   โ”œโ”€โ”€ trainval
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ ***.png
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ ***.png
โ”‚   โ”‚   โ”œโ”€โ”€ test
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ ***.png
โ”‚   โ”‚   โ”‚    โ”‚โ”€โ”€โ”€ ***.png

Run

The NWD's config files are in configs/nwd.

Please see MMDetection full tutorials with existing dataset for beginners.

Training on a single GPU

The basic usage is as follows (e.g. train Faster R-CNN with NWD). Note that the lr=0.01 in config file needs to be lr=0.01/4 for training on single GPU.

python tools/train.py configs/nwd/faster_rcnn_r50_aitod_rpn_nwd.py

Training on multiple GPUs

The basic usage is as follows (e.g. train Faster R-CNN with NWD).

bash ./tools/dist_train.sh configs/nwd/faster_rcnn_r50_aitod_rpn_nwd.py 4

Inference

Benchmark

The benchmark and trained models will be publicly available soon.

Citation

@inproceedings{AI-TOD_2020_ICPR,
    title={Tiny Object Detection in Aerial Images},
    author={Wang, Jinwang and Yang, Wen and Guo, Haowen and Zhang, Ruixiang and Xia, Gui-Song},
    booktitle=ICPR,
    pages={3791--3798},
    year={2021},
}
@article{NWD_2021_arXiv,
    title={A Normalized Gaussian Wasserstein Distance for Tiny Object Detection},
    author={Wang, Jinwang and Xu, Chang and Yang, Wen and Yu, Lei},
    journal={arXiv preprint arXiv:2110.13389},
    year={2021}
}
@article{NWD_RKA_2022_ISPRSJ,
    title={Detecting Tiny Objects in Aerial Images: A Normalized Wasserstein Distance and A New Benchmark},
    author={Xu, Chang and Wang, Jinwang and and Yang, Wen and Yu, Huai and Yu, Lei and Xia, Gui-Song},
    journal={ISPRS Journal of Photogrammetry and Remote Sensing (ISPRS J P & RS)},
    year={2022}
}