Jittor/JDet implementation of Point2RBox-v2, a point-supervised oriented object detector based on spatial relationships between instances. This repository contains the end-to-end model, pseudo-label export, the rotated-FCOS second stage, DOTA evaluation utilities, checkpoint conversion tools, and numerical parity tests against the PyTorch reference.
DOTA-v1.0 Task1, mAP50 on the official test server:
| Model | Paper | Jittor | Checkpoint |
|---|---|---|---|
| Point2RBox-v2 end-to-end | 51.00 | 48.95 | download |
| Point2RBox-v2 + rotated-FCOS | 62.61 | 59.39 | download |
The corresponding local trainval-patch diagnostics are 54.5264 and 67.5088 mAP50. These local values are not the official test-server metric. Weights, official-format Task1 submissions, checksums, and the complete metric record are available in the Hugging Face repository.
The validated environment uses Python 3.10, Jittor 1.3.8.5, NumPy 1.26.4, Jittor's bundled CUDA 11.2, and g++-10. NumPy must remain below version 2 with this Jittor release.
bash scripts/setup_env.sh
conda activate p2r-jittor
export cc_path=/usr/bin/g++-10
export PYTHONPATH="$PWD:$PWD/python"For an existing Python 3.10 environment, install requirements.txt, pin
jittor==1.3.8.5 and numpy==1.26.4, then run python setup.py develop.
See docs/environment.md for compiler and CUDA compatibility
notes.
Prepare DOTA-v1.0 as 1024×1024 patches with gap 200. The recovered training run used 12,800 trainval patches and 2,709 test patches with this layout:
/path/to/split_ss_dota/
├── trainval/
│ ├── images/
│ └── annfiles/
└── test/
└── images/
Update images_dir, annfiles_dir, and ann_json in the selected config when the
dataset is stored elsewhere. Dataset preparation details are in
docs/dota.md.
Download the final weights from Hugging Face:
huggingface-cli download Mingqian-233/Point2RBox-v2-jittor \
stage1/point2rbox_v2_stage1_ckpt_12.pkl \
stage2/rotated_fcos_stage2_ckpt_12.pkl \
--local-dir weightsTrain the point-supervised end-to-end model:
CUDA_VISIBLE_DEVICES=0 python tools/run_net.py \
--config-file configs/point2rbox_v2/point2rbox_v2_final_fixed.py \
--task trainGenerate rotated-box pseudo labels from the final stage-1 checkpoint:
CUDA_VISIBLE_DEVICES=0 python tools/generate_pseudo_labels.py \
--config configs/point2rbox_v2/point2rbox_v2_pseudo_generator_dota.py \
--ckpt work_dirs/point2rbox_v2_1x_dota_final_fixed/checkpoints/ckpt_12.pkl \
--out /path/to/split_ss_dota/point2rbox_v2_pseudo_labelsSet ann_json in the stage-2 config to the generated .bbox.json, then train the
rotated-FCOS detector:
CUDA_VISIBLE_DEVICES=0 python tools/run_net.py \
--config-file configs/point2rbox_v2/rotated_fcos_1x_dota_using_pseudo.py \
--task trainThe configs reproduce the reference 12-epoch schedule, including 500-iteration
linear warmup, epoch milestones 8 and 11, and gradient clipping at 35. The completed
unattended stage-1 → pseudo-label → stage-2 workflow is recorded in
tools/auto_stage2_pipeline.sh.
Set resume_path in the selected config to the downloaded checkpoint and run:
CUDA_VISIBLE_DEVICES=0 python tools/run_net.py \
--config-file configs/point2rbox_v2/rotated_fcos_1x_dota_using_pseudo.py \
--task val
CUDA_VISIBLE_DEVICES=0 python tools/run_net.py \
--config-file configs/point2rbox_v2/rotated_fcos_1x_dota_using_pseudo.py \
--task testTesting writes patch predictions, merges them back to the original DOTA images, and
creates a submission archive under submit_zips/. Official submissions must contain
exactly 15 files named Task1_<class>.txt; the automated pipeline validates this
layout before publishing.
Ready-to-submit archives are also available directly from Hugging Face:
The parity and smoke suites cover configuration values, geometry and rotated ops, losses and gradients, detector routing, checkpoint conversion, pseudo-label serialization, and dataset adapters.
export cc_path=/usr/bin/g++-10
export PYTHONPATH="$PWD:$PWD/python"
python -m pytest tests/parity tests/smoke -qThe release result is 65 passed, 2 skipped. Porting details are documented in
docs/porting_notes.md, with exact configuration mappings in
docs/config_parity.md.
This implementation is built on JDet, Wholly-WOOD for Jittor, and the original Point2RBox-v2.
Released under the Apache License 2.0. See LICENSE.txt.
@article{yu2025whollywood,
title={Wholly-WOOD: Wholly Leveraging Diversified-quality Labels for Weakly-supervised Oriented Object Detection},
author={Yi Yu and Xue Yang and Yansheng Li and Zhenjun Han and Feipeng Da and Junchi Yan},
year={2025},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
}
@inproceedings{yu2025point2rboxv2,
title={Point2RBox-v2: Rethinking Point-supervised Oriented Object Detection with Spatial Layout Among Instances},
author={Yi Yu and Botao Ren and Peiyuan Zhang and Mingxin Liu and Junwei Luo and Shaofeng Zhang and Feipeng Da and Junchi Yan and Xue Yang},
booktitle={IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={19283--19293},
year={2025},
}
@inproceedings{yu2024point2rbox,
title={Point2RBox: Combine Knowledge from Synthetic Visual Patterns for End-to-end Oriented Object Detection with Single Point Supervision},
author={Yu, Yi and Yang, Xue and Li, Qingyun and Da, Feipeng and Dai, Jifeng and Qiao, Yu and Yan, Junchi},
booktitle={IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={16783--16793},
year={2024}
}
@inproceedings{yu2023h2rboxv2,
author={Yi Yu and Xue Yang and Qingyun Li and Yue Zhou and Feipeng Da and Junchi Yan},
title={H2RBox-v2: Incorporating Symmetry for Boosting Horizontal Box Supervised Oriented Object Detection},
booktitle={Neural Information Processing Systems},
year={2023},
}
@inproceedings{yang2023h2rbox,
title={H2RBox: Horizontal Box Annotation is All You Need for Oriented Object Detection},
author={Yang, Xue and Zhang, Gefan and Li, Wentong and Wang, Xuehui and Zhou, Yue and Yan, Junchi},
booktitle={International Conference on Learning Representations},
year={2023}
}