Mingqian-233 commited on
Commit
7225fa8
·
verified ·
1 Parent(s): a0ffd3a

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +95 -0
README.md ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - object-detection
5
+ - oriented-object-detection
6
+ - jittor
7
+ - remote-sensing
8
+ - dota
9
+ ---
10
+
11
+ # Point2RBox-v3 (Jittor reproduction)
12
+
13
+ This is a **Jittor** reproduction of
14
+ [Point2RBox-v3](https://github.com/VisionXLab/Point2RBox-v3)
15
+ (point-supervised oriented object detection with SAM-guided pseudo-label
16
+ refinement, [arXiv:2509.26281](https://arxiv.org/pdf/2509.26281)), built on
17
+ JDet. Code: <https://github.com/mingqian-233/Point2RBox-v3-jittor>.
18
+
19
+ ## Results (DOTA-v1.0, official test server, mAP50)
20
+
21
+ | Model | Paper (PyTorch) | This repo (Jittor) |
22
+ |---|---|---|
23
+ | Point2RBox-v3 end-to-end (12 ep) | 61.38 | **59.52** |
24
+ | Point2RBox-v3 two-stage (rotated-FCOS) | 67.24 | **TBD(Task1 包已生成,待服务器)** |
25
+
26
+ The end-to-end number is the official DOTA-v1.0 Task1 test-server mAP50
27
+ (`0.5952330691632053`) and passes the project's paper−2.0 acceptance threshold
28
+ (59.38). Per-class AP table: TBD.
29
+
30
+ Local diagnostic only: the norm-eval-correct end-to-end checkpoint scores
31
+ **66.6056 mAP50** on the unmerged 1024×1024 trainval-patch protocol. The
32
+ same-machine full upstream PyTorch run scores **65.60**, while the published
33
+ upstream log reports **66.70**. This is not the official DOTA test-server
34
+ protocol; the merged test submission has been generated and awaits server
35
+ evaluation.
36
+
37
+ The completed two-stage checkpoint scores **75.7029 mAP50** on the same local
38
+ trainval-patch diagnostic. Its canonical Task1 submission has been generated;
39
+ the official DOTA test-server result is pending.
40
+
41
+ The generated stage-2 pseudo boxes were also matched directly against all
42
+ 245,953 trainval GT boxes. They achieve mean rotated IoU **0.7330**,
43
+ recall@0.5 **91.03%**, and recall@0.75 **56.58%**. The corresponding
44
+ official-code PyTorch v2 baseline is 0.7295 / 91.25% / 55.39%.
45
+
46
+ ## Files
47
+
48
+ - `checkpoints/point2rbox_v3_1x_dota_ckpt_12.pkl` — end-to-end model
49
+ - `checkpoints/rotated_fcos_1x_dota_using_pseudo_ckpt_12.pkl` — stage-2 model
50
+ - `weights/mobile_sam.pkl` — MobileSAM converted weights (439 tensors, numpy
51
+ pickle; native Jittor port, mask IoU 1.0000 vs PyTorch on CPU fp32)
52
+ - `weights/ted.pkl` — TED edge detector converted weights (parity 5.7e-6)
53
+ - `logs/` — training logs
54
+
55
+ ## Training environment
56
+
57
+ - Jittor 1.3.8.5, numpy 1.26.4 (pinned — numpy≥2 silently corrupts jt.array
58
+ inputs), CUDA 11.2 toolchain (g++-10), single A100 80GB, official
59
+ hyper-parameters verbatim (end-to-end batch=2; stage-2 batch=4; AdamW
60
+ 5e-5, grad-clip 35, 12 epochs, LinearLR warmup 500 iters + MultiStepLR
61
+ [8,11]).
62
+ - Config parity is locked by a zero-tolerance L0 test suite (17 tests,
63
+ including the 74-line per-class SAM rule table byte-copied from upstream).
64
+
65
+ ## Known differences from the upstream paper run
66
+
67
+ 1. **SAM attention bias**: the upstream `mobile_sam` package calls `eval()`
68
+ before `load_state_dict`, leaving TinyViT's non-persistent attention-bias
69
+ cache at its random initialisation — i.e. the upstream training used an
70
+ unseeded random attention bias (unreproducible across runs). This repo
71
+ loads the weights correctly. Direction of the effect on mAP is unknown
72
+ (expected neutral-to-positive). See `docs/config_parity.md`.
73
+ 2. Upstream's copy-paste stage-2 branch is dead code (condition can never be
74
+ true); reproduced verbatim.
75
+ 3. `num_workers=0` instead of 2 (Jittor multi-process dataloader deadlock);
76
+ pure infra, no effect on training math.
77
+ 4. GPU-mode numeric noise vs PyTorch golden is at the cuDNN-TF32 level
78
+ (~1e-3); CPU-mode strict-fp32 parity is 1e-5 to bit-exact per component.
79
+
80
+ ## Citation
81
+
82
+ Please cite the original papers:
83
+
84
+ ```bibtex
85
+ @article{point2rboxv3,
86
+ title={Point2RBox-v3: Self-Bootstrapping from Point Annotations via
87
+ Integrated Pseudo-Label Refinement and Utilization},
88
+ journal={arXiv preprint arXiv:2509.26281}, year={2025}
89
+ }
90
+ @article{whollywood,
91
+ title={Wholly-WOOD: Wholly Leveraging Diversified-quality Labels for
92
+ Weakly-supervised Oriented Object Detection},
93
+ year={2024}
94
+ }
95
+ ```