[CVPR 2025] ABBSPO: Adaptive Bounding Box Scaling and Symmetric Prior based Orientation Prediction for Detecting Aerial Image Objects
2KNU (Kyungpook National University), South Korea
This repository is the official PyTorch implementation of "ABBSPO: Adaptive Bounding Box Scaling and Symmetric Prior based Orientation Prediction for Detecting Aerial Image Objects". ABBSPO is a weakly supervised oriented object detection (WS-OOD) framework that systematically identifies and addresses the scale and angle supervision mismatch arising from the use of tight horizontal bounding box annotations and minimum circumscribed rectangle operations for rotated box generation.
- Dec 15, 2025: Initial code release
- Feb 27, 2025: Paper accepted to CVPR 2025
- OS: Ubuntu 22.04
- Python: 3.8
- PyTorch: 1.13.1
- CUDA: 11.7
- GPU: NVIDIA RTX 3090
git clone https://github.com/KAIST-VICLab/ABBSPO.git
cd ABBSPO
conda create -n abbspo python=3.8
conda activate abbspopip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117pip install mmcv==2.0.0rc4 -f https://download.openmmlab.com/mmcv/dist/cu117/torch1.13/index.htmlModuleNotFoundError: No module named 'mmcv._ext'pip install -r requirements.txt
pip install -v -e .python - <<EOF
from mmcv.ops import batched_nms
print("MMCV CUDA ops are correctly installed.")
EOFPlease refer to tools/data/README.md for dataset preparation.
All checkpoints are trained for 12 epochs using the configuration files provided in configs/abbspo/.
Note: The DOTA-v1.0 checkpoint is trained using only the training split (without validation data).
| Dataset | Model | Training Log |
|---|---|---|
| DIOR | model | log |
| DOTA-v1.0 | model | log |
| SIMD | model | log |
ABBSPO follows the standard MMRotate training pipeline.
Example training command on DIOR:
python tools/train.py \
configs/abbspo/abbspo-le90_r50_fpn-1x_dior.pyTo train on other datasets, simply change the configuration file:
DOTA-v1.0: configs/abbspo/abbspo-le90_r50_fpn-1x_dota.py
SIMD: configs/abbspo/abbspo-le90_r50_fpn-1x_simd.py
Example evaluation command on DIOR:
python tools/test.py \
configs/abbspo/abbspo-le90_r50_fpn-1x_dior.py \
work_dirs/abbspo-le90_r50_fpn-1x_dior/epoch_12.pth To visualize detection results:
python tools/test.py \
configs/abbspo/abbspo-le90_r50_fpn-1x_dior.py \
work_dirs/abbspo-le90_r50_fpn-1x_dior/epoch_12.pth \
--show-dir visual_results/abbspo-le90_r50_fpn-1x_dior \
--show-score-thr 0.3For more detailed configuration options and advanced usage, please refer to the MMRotate User Guide
Please visit our project page for more experimental results.
If the content is useful, please cite our paper:
@inproceedings{lee2025abbspo,
title={ABBSPO: Adaptive Bounding Box Scaling and Symmetric Prior based Orientation Prediction for Detecting Aerial Image Objects},
author={Lee, Woojin and Chang, Hyugjae and Moon, Jaeho and Lee, Jaehyup and Kim, Munchurl},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={8848--8858},
year={2025}
}This repository is built upon FMA-Net, One Look is Enough, and MMRotate. We gratefully thank the MMRotate team and H2RBox-v2 authors for their excellent open-source contributions, which made our implementation and experiments much easier.