Paper · 2022-08-18 · cs.CV
RFLA: Gaussian Receptive Field based Label Assignment for Tiny Object Detection
Label assignment for tiny object detection. Each feature point's Gaussian effective receptive field is scored against each ground-truth box with a receptive-field distance (KL divergence or Wasserstein), and a two-stage hierarchical assigner picks positives. Author-reported: Faster R-CNN on AI-TOD rises from 11.1 to 21.1 AP; DetectoRS with RFLA reaches 24.8 AP.
Label assignmentObject detectionobject-detectiontiny-object-detectionlabel-assignmentreceptive-fieldaitod
arXivPDFCodeMarkdown13 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Detectors decide which spots in the image should learn to recognise an object, and for big objects this is easy: a box that overlaps the object is a good spot. Tiny objects break that rule. A tiny object is often so small that none of the pre-set boxes or points overlap it, so it gets very few training examples.
This paper replaces the overlap test with a comparison of shapes. Each spot in the network has a soft, blob-shaped region of the image it "sees", and the object is also treated as a soft blob. The method measures how similar the two blobs are and gives the best-matching spots to each object. A second pass shrinks each blob a little and gives each object one more spot, so every object gets enough training signal regardless of its size.
The result is a drop-in change to how training examples are chosen. The paper reports no extra cost at inference time, and its largest gains are on the smallest size group.
TL;DR
- Replaces IoU or centre-based positive selection with a distance between a Gaussian receptive field and a Gaussian model of each ground-truth box §3.1 §3.2.
- Selection is two-stage: top-k points per object, then a top-1 pass with the receptive field shrunk by a factor β §3.3.
- Author-reported on AI-TOD: Faster R-CNN 11.1 → 21.1 AP, DetectoRS 14.8 → 24.8 AP with RFLA tab. 5.
- Code (MIT) is an MMDetection fork; the RPN assigner and FCOS head use it, while the Faster R-CNN second stage keeps MaxIoU.
Problem
Anchor-based detectors assign positives by IoU with pre-set boxes, and anchor-free detectors assign them by whether a point lies inside the object. For tiny objects (under 16×16 px in the AI-TOD definition §1) the object often has IoU 0 with every anchor or contains no feature point at all, so it receives few or no positives §1 fig. 4. The paper also argues that a uniform "box" or "point" prior differs from the Gaussian-shaped effective receptive field of a feature point, so the assigned point's receptive field may not match the object §1 §3.1.
The authors describe a scale-sample imbalance: tiny objects are outliers for existing anchor-based and anchor-free assignment, and RFLA makes the number of positives per object more even across scales §4.5 fig. 4.
Method
Overview. RFLA scores every (feature point, ground truth) pair with a receptive-field distance and then assigns labels with a hierarchical rule §3. It is applied to the Faster R-CNN RPN and to FCOS §3.4.
Step 1. Gaussian effective receptive field (ERF) per feature point §3.1.
- Compute the theoretical receptive field (TRF) size of each layer with the recurrence in eq. 2, where k_n and s_n are kernel size and stride.
- Put a 2-D Gaussian on each feature point: mean at the point location (x_n, y_n), isotropic variance er_n² eq. 3.
- Set er_n to half the TRF radius, as an approximation of the effective receptive field (ERF) §3.1.
tr_{n} = tr_{n-1} + (k_{n} - 1) \prod_{i=1}^{n-1} s_{i} eq. 2
\boldsymbol{\mu_{e}} = (x_{n}, y_{n})^{\top}, \quad \boldsymbol{\Sigma_{e}} = \mathrm{diag}(er_{n}^{2}, er_{n}^{2}) eq. 3
Step 2. Gaussian model of each ground-truth box §3.2.
- Mean at the box centre (x_g, y_g); covariance diag(w_g²/4, h_g²/4) eq. 4.
- Gaussian model of the box: the box's half-side is the standard deviation.
\boldsymbol{\mu_{g}} = (x_{g}, y_{g})^{\top}, \quad \boldsymbol{\Sigma_{g}} = \mathrm{diag}\!\left(\tfrac{w_{g}^{2}}{4}, \tfrac{h_{g}^{2}}{4}\right) eq. 4
Step 3. Receptive-field distance (RFD) §3.2. The paper compares three distances between Gaussians and keeps two (Wasserstein and KL). J-S divergence is dropped because it has no closed form §3.2.
- Wasserstein-2 distance, closed form in the paper's notation eq. 5.
- KL divergence between the ERF and the ground truth, general form eq. 6 and simplified form eq. 7.
- Map any distance value RFDC to a score in (0, 1] with RFD = 1 / (1 + RFDC) eq. 8.
W_{2}^{2}(n_{e}, n_{g}) = \left\| \left( [x_{n}, y_{n}, er_{n}, er_{n}]^{\top},\; [x_{g}, y_{g}, \tfrac{w_{g}}{2}, \tfrac{h_{g}}{2}]^{\top} \right) \right\|_{2}^{2} eq. 5
D_{\mathrm{KL}}(n_{e} \| n_{g}) = \tfrac{1}{2}\left( \mathrm{tr}(\boldsymbol{\Sigma_g^{-1}}\boldsymbol{\Sigma_e}) + (\boldsymbol{\mu_g}-\boldsymbol{\mu_e})^{\top}\boldsymbol{\Sigma_g^{-1}}(\boldsymbol{\mu_g}-\boldsymbol{\mu_e}) + \ln\tfrac{\lvert\boldsymbol{\Sigma_g}\rvert}{\lvert\boldsymbol{\Sigma_e}\rvert} - 2 \right) eq. 6
D_{\mathrm{KL}}(n_{e} \| n_{g}) = \frac{2er_{n}^{2}}{w_{g}^{2}} + \frac{2er_{n}^{2}}{h_{g}^{2}} + \frac{2(x_{n}-x_{g})^{2}}{w_{g}^{2}} + \frac{2(y_{n}-y_{g})^{2}}{h_{g}^{2}} + \ln\frac{w_{g}}{2er_{n}} + \ln\frac{h_{g}}{2er_{n}} - 1 eq. 7
\mathrm{RFD} = \frac{1}{1 + \mathrm{RFDC}} eq. 8
The paper states that KL is scale-invariant and is the better choice for very tiny objects, while Wasserstein is not scale-invariant §3.2 §4.3. KL is the default RFD in the experiments §4.3.
Step 4. Hierarchical label assignment (HLA) §3.3. The RFD score is not on the same scale as IoU, so HLA ranks points by score instead of using a threshold.
- Stage 1: for each ground truth, the top-k points by RFD become positive. This gives r₁ and a mask m of the points assigned in this stage.
- Stage 2: shrink every ERF radius by β, recompute the RFD, and give the top-1 point per ground truth a positive label. This gives r₂.
- Combine: keep r₁ where m is set, else use r₂ eq. 9. The mask stops extra stage-2 positives from being added to objects that already have enough.
r = r_{1} m + r_{2}(1 - m) eq. 9
# RFLA label assignment for one image [§3.2] [§3.3]
# Input: points (N, 2): feature point locations [§3.1]
# erf_radius (N,): er_n per point [§3.1]
# gts (G, 4): boxes as (x, y, w, h) [§3.2]
# Output: per point: 1-based gt index, 0 = background
def assign_rfla(points, erf_radius, gts, k=3, beta=0.9):
# Stage 1: RFD of every point against every gt [eq. 8]
scores = rfd_matrix(points, erf_radius, gts) # (G, N)
# Each gt takes its top-k points by RFD [§3.3]
stage1 = take_top_k_per_gt(scores, k) # (N,)
# Stage 2: shrink every ERF radius by beta, then score again [§3.3]
shrunk = rfd_matrix(points, beta * erf_radius, gts) # (G, N)
# Each gt takes its top-1 point [§3.3]
stage2 = take_top_k_per_gt(shrunk, 1) # (N,)
# Keep stage 1 where it assigned a point, else use stage 2 [eq. 9]
return where(stage1 > 0, stage1, stage2) # (N,)# RFD between one ERF and one gt, KL form [eq. 7] [eq. 8]
# erf_center: (x_n, y_n); erf_radius: er_n
# gt_center: (x_g, y_g); gt_size: (w_g, h_g)
def rfd_kl(erf_center, erf_radius, gt_center, gt_size):
# Offset between the two centres [§3.2]
offset = erf_center - gt_center # (2,)
# KL divergence between the two Gaussians [eq. 7]
kl = (
2 * erf_radius ** 2 / gt_size[0] ** 2
+ 2 * erf_radius ** 2 / gt_size[1] ** 2
+ 2 * offset[0] ** 2 / gt_size[0] ** 2
+ 2 * offset[1] ** 2 / gt_size[1] ** 2
+ log(gt_size[0] / (2 * erf_radius))
+ log(gt_size[1] / (2 * erf_radius))
- 1
)
# Map the distance to a score in (0, 1] [eq. 8]
return 1 / (1 + kl)Step 5. Application to detectors §3.4.
- Faster R-CNN: RFLA replaces the standard anchor tiling and the MaxIoU anchor assignment. The text does not say whether the second (R-CNN) stage changes; the code does not change it (see Paper vs code) §3.4.
- FCOS: the constraint that positive points lie inside the ground-truth box is removed, and point-based assignment is replaced by RFLA §3.4. The centerness target is changed to avoid gradient explosion, using eq. 10 with c = 0.01 §3.4.
\text{centerness}^{*} = \sqrt{ \frac{\varepsilon[\min(l^{*}, r^{*})]\,\min(l^{*}, r^{*}) + c}{\max(l^{*}, r^{*})} \times \frac{\varepsilon[\min(t^{*}, b^{*})]\,\min(t^{*}, b^{*}) + c}{\max(t^{*}, b^{*})} } eq. 10
Here l*, t*, r*, b* are the FCOS regression targets and ε is the step function of eq. 1, equal to 1 for positive input and 0 otherwise §1 §3.4.
Hyperparameters
Values are from the paper unless the Where column says "code". Training is on AI-TOD trainval and evaluated on the test split tab. 5 caption.
| Name | Value | Where | Notes |
|---|---|---|---|
| Hardware | 1× NVIDIA RTX 3090 | §4.2 | |
| Framework | PyTorch, MMDetection core | §4.2 | "other parameters default in MMDetection" §4.2 |
| Backbone | ResNet-50, ImageNet pretrained | §4.2 | code: torchvision://resnet50 aitod_faster_r50_rfla_kld_1x.py |
| Optimizer | SGD, momentum 0.9 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| Weight decay | 0.0001 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| Batch size | 2 | §4.2 | code: samples_per_gpu=2 [code: configs/base/datasets/aitod_detection.py#L31] |
| Epochs | 12 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| Initial learning rate | 0.005 | §4.2 | code: 0.02/4 aitod_faster_r50_rfla_kld_1x.py |
| LR schedule | step decay at epochs 8 and 11 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| LR warmup | not stated | paper | code: linear, 5000 iters, ratio 0.001 aitod_faster_r50_rfla_kld_1x.py |
| RPN proposals | 3000 | §4.2 | code nms_pre=3000 aitod_faster_r50_rfla_kld_1x.py |
| Test score threshold | 0.05 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| Test NMS IoU / max boxes | 0.5 / 3000 | §4.2 | code aitod_faster_r50_rfla_kld_1x.py |
| ERF fraction of TRF | 0.5 | §3.1 | code fraction=0.5 aitod_faster_r50_rfla_kld_1x.py |
| RFD distance | KL divergence | §4.3 | Wasserstein close, see tab. 1 |
| Stage-1 top-k, k | 3 | §4.3 | k=2 and 3 tie at best AP; 3 recommended §4.3 |
| Stage-2 decay β | 0.9 | §4.3 tab. 3 | code ratio=0.9 aitod_faster_r50_rfla_kld_1x.py |
| Stage-2 positives per gt | 1 | §3.3 | code topk=[3,1] aitod_faster_r50_rfla_kld_1x.py |
| Centerness constant c | 0.01 | §3.4 eq. 10 | code clamp 0.01 rfla_fcos_head.py |
| RPN sampler | 256 samples, pos. fraction 0.5 | not stated | code aitod_faster_r50_rfla_kld_1x.py |
| R-CNN IoU threshold | not stated for RFLA | paper | code MaxIoU pos 0.5 aitod_faster_r50_rfla_kld_1x.py |
| Frozen stages / BN | not stated | paper | code frozen_stages=1, norm_eval=True aitod_faster_r50_rfla_kld_1x.py |
Results
Author-reported. Setup: AI-TOD (28,036 images, average object size 12.8 px §4.1), trained on trainval and evaluated on test tab. 5 caption; ResNet-50 backbone; 1× RTX 3090 §4.2. The paper does not state whether competitor rows are re-runs or copied from other sources.
Main result, AI-TOD tab. 5. Full table as reported:
| Method | Backbone | AP | AP50 | AP75 | APvt | APt | APs | APm |
|---|---|---|---|---|---|---|---|---|
| TridentNet | ResNet-50 | 7.5 | 20.9 | 3.6 | 1.0 | 5.8 | 12.6 | 14.0 |
| Faster R-CNN | ResNet-50 | 11.1 | 26.3 | 7.6 | 0.0 | 7.2 | 23.3 | 33.6 |
| Cascade RPN | ResNet-50 | 13.3 | 33.5 | 7.8 | 3.9 | 12.9 | 18.1 | 26.3 |
| Cascade R-CNN | ResNet-50 | 13.8 | 30.8 | 10.5 | 0.0 | 10.6 | 25.5 | 36.6 |
| DetectoRS | ResNet-50 | 14.8 | 32.8 | 11.4 | 0.0 | 10.8 | 28.3 | 38.0 |
| DotD | ResNet-50 | 16.1 | 39.2 | 10.6 | 8.3 | 17.6 | 18.1 | 22.1 |
| DetectoRS w/ NWD | ResNet-50 | 20.8 | 49.3 | 14.3 | 6.4 | 19.7 | 29.6 | 38.3 |
| SSD-512 | ResNet-50 | 7.0 | 21.7 | 2.8 | 1.0 | 4.7 | 11.5 | 13.5 |
| RetinaNet | ResNet-50 | 8.7 | 22.3 | 4.8 | 2.4 | 8.9 | 12.2 | 16.0 |
| PAA | ResNet-50 | 10.0 | 26.5 | 6.7 | 3.5 | 10.5 | 13.1 | 22.1 |
| ATSS | ResNet-50 | 12.8 | 30.6 | 8.5 | 1.9 | 11.6 | 19.5 | 29.2 |
| RepPoints | ResNet-50 | 9.2 | 23.6 | 5.3 | 2.5 | 9.2 | 12.9 | 14.4 |
| OTA | ResNet-50 | 10.4 | 24.3 | 7.2 | 2.5 | 11.9 | 15.7 | 20.9 |
| AutoAssign | ResNet-50 | 12.2 | 32.0 | 6.8 | 3.4 | 13.7 | 16.0 | 19.1 |
| FCOS | ResNet-50 | 12.6 | 30.4 | 8.1 | 2.3 | 12.2 | 17.2 | 25.0 |
| M-CenterNet | DLA-34 | 14.5 | 40.7 | 6.4 | 6.1 | 15.0 | 19.4 | 20.4 |
| FCOS* (P2–P6) | ResNet-50 | 15.4 | 36.3 | 10.9 | 6.0 | 17.6 | 18.5 | 20.7 |
| RetinaNet w/ RFLA | ResNet-50 | 9.1 | 23.1 | 5.2 | 4.1 | 10.5 | 10.5 | 12.3 |
| AutoAssign w/ RFLA | ResNet-50 | 14.2 | 37.8 | 6.9 | 6.4 | 14.9 | 17.4 | 21.8 |
| FCOS* w/ RFLA | ResNet-50 | 16.3 | 39.1 | 11.3 | 7.3 | 18.5 | 19.8 | 21.8 |
| Faster R-CNN w/ RFLA | ResNet-50 | 21.1 | 51.6 | 13.1 | 9.5 | 21.2 | 26.1 | 31.5 |
| Cascade R-CNN w/ RFLA | ResNet-50 | 22.1 | 51.6 | 15.6 | 8.2 | 22.0 | 27.3 | 35.2 |
| DetectoRS w/ RFLA | ResNet-50 | 24.8 | 55.2 | 18.5 | 9.3 | 24.8 | 30.3 | 38.2 |
The paper reports DetectoRS w/ RFLA as 4.0 AP above the best listed competitor (DetectoRS w/ NWD, 20.8) §4.4 tab. 5.
Ablations on AI-TOD, Faster R-CNN backbone §4.3.
Distance choice, all with HLA tab. 1:
| Distance | AP | AP50 | APvt | APt |
|---|---|---|---|---|
| GIoU (ERF-sized box) | 17.9 | 45.1 | 5.5 | 16.7 |
| Wasserstein (WD) | 21.1 | 52.2 | 6.6 | 21.5 |
| KL divergence (KLD) | 21.1 | 51.6 | 9.5 | 21.2 |
Component contribution tab. 2:
| RFD | HLA | AP | AP50 | APvt | APt |
|---|---|---|---|---|---|
| – | – | 11.1 | 26.3 | 0.0 | 7.2 |
| ✓ | – | 20.7 | 50.6 | 7.6 | 20.5 |
| ✓ | ✓ | 21.1 | 51.6 | 9.5 | 21.2 |
Stage-2 decay β tab. 3:
| β | AP | AP50 | APvt | APt |
|---|---|---|---|---|
| 0.95 | 21.1 | 51.1 | 8.4 | 21.1 |
| 0.9 | 21.1 | 51.6 | 9.5 | 21.2 |
| 0.85 | 20.8 | 51.4 | 7.4 | 21.0 |
| 0.8 | 19.7 | 49.0 | 5.6 | 19.2 |
Gaussian vs receptive anchor tab. 4:
| Method | AP | AP50 | APvt | APt |
|---|---|---|---|---|
| GA (Gaussian prior with HLA) | 19.6 | 49.2 | 8.2 | 19.7 |
| RA (ERF-sized anchor, MaxIoU) | 18.9 | 47.5 | 6.1 | 19.1 |
| Baseline | 11.1 | 26.3 | 0.0 | 7.2 |
The paper also reports k from 1 to 4 giving 20.7, 21.1, 21.1, and 20.9 AP §4.3 (no table).
Other datasets (author-reported). TinyPerson tab. 6:
| Method | AP50tiny | AP50tiny1 | AP50tiny2 | AP50tiny3 | AP50small | AP25tiny | AP75tiny |
|---|---|---|---|---|---|---|---|
| FCOS | 23.4 | 9.8 | 22.7 | 34.7 | 39.2 | 43.8 | 1.7 |
| Faster R-CNN | 48.7 | 32.3 | 54.5 | 58.8 | 64.7 | 68.9 | 6.0 |
| FCOS w/ RFLA | 26.5 (+3.1) | 10.0 (+0.2) | 24.4 (+1.7) | 40.6 (+5.9) | 50.5 (+11.3) | 50.0 (+6.2) | 2.9 (+1.2) |
| Faster R-CNN w/ RFLA | 50.1 (+1.4) | 32.8 (+0.5) | 55.6 (+1.1) | 60.6 (+1.8) | 65.3 (+0.6) | 69.9 (+1.0) | 5.9 (−0.1) |
VisDrone2019 tab. 7, trained on train, validated on val:
| Method | AP | AP50 | APvt | APt |
|---|---|---|---|---|
| FCOS | 14.1 | 25.5 | 0.1 | 2.1 |
| Faster R-CNN | 22.3 | 38.0 | 0.1 | 6.2 |
| DetectoRS | 25.7 | 41.7 | 0.5 | 7.6 |
| FCOS* w/ RFLA | 15.1 (+1.0) | 27.3 (+1.8) | 0.4 (+0.3) | 3.8 (+1.7) |
| Faster R-CNN w/ RFLA | 23.4 (+1.1) | 41.4 (+3.4) | 4.8 (+4.7) | 11.7 (+5.5) |
| DetectoRS w/ RFLA | 27.4 (+1.7) | 45.3 (+3.6) | 4.5 (+4.0) | 12.9 (+5.3) |
DOTA-v2.0 tab. 8, trained on train, validated on val:
| Method | AP | AP50 | APvt | APt |
|---|---|---|---|---|
| FCOS | 31.8 | 55.4 | 0.3 | 4.0 |
| Faster R-CNN | 35.6 | 59.5 | 0.0 | 7.1 |
| DetectoRS | 40.8 | 62.6 | 0.0 | 7.0 |
| FCOS* w/ RFLA | 32.1 (+0.3) | 55.6 (+0.2) | 0.7 (+0.4) | 6.8 (+2.8) |
| Faster R-CNN w/ RFLA | 36.3 (+0.7) | 61.5 (+2.0) | 1.9 (+1.9) | 11.7 (+4.6) |
| DetectoRS w/ RFLA | 41.3 (+0.5) | 64.2 (+1.6) | 2.1 (+2.1) | 10.8 (+3.8) |
Visualisations on AI-TOD show fewer false negatives when RFLA is added to Faster R-CNN §4.6 fig. 5. fig. 3 compares top-k with anchor-size tuning, and fig. 4 shows the scale-sample imbalance §4.3 §4.5.
Paper vs code
Compared the paper against the official repository at commit
198977b5e198005fec783e81f10f9363946d2ef8 (MIT, Copyright 2022 Chang Xu, a
paper author). Repository link is the one printed in the abstract.
- Positive selection (HLA) matches. Stage-1 top-k with the KL RFD, stage-2 shrink by 0.9 with top-1, and the mask combination all follow §3.3 and eq. 9 hierarchical_assigner.py hierarchical_assigner.py.
- KL RFD matches eq. 7 and eq. 8 when the ERF box side is taken as 2·er_n metric_calculator.py.
- Wasserstein is implemented as RFD = 1/(1 + centre-distance² + ((w1−w2)² + (h1−h2)²)/4), with w2 = 2·er_n, which reads eq. 5 as a squared difference of the two 4-vectors metric_calculator.py.
- ERF radius: the paper's er_n is half the TRF "radius" §3.1. The code uses base size × 0.5 as the side of the ERF box rf_generator.py, so er_n = TRF/4. This reading is consistent with the paper if TRF is a diameter, but the paper does not say which.
- Faster R-CNN second stage: the paper says RFLA replaces "anchor tiling and MaxIoU anchor assigning" §3.4. The code applies HieAssigner to the RPN only. The R-CNN head keeps MaxIoUAssigner with positive IoU 0.5 aitod_faster_r50_rfla_kld_1x.py.
- Centerness target differs. The paper's eq. 10 adds c to the minimum of each pair before dividing by the maximum. The code clamps the minimum to at least 0.01 instead rfla_fcos_head.py. For a minimum m ≥ 0.01 the paper gives (m + 0.01)/M and the code gives m/M. For 0 < m < 0.01 the paper gives (m + 0.01)/M and the code gives 0.01/M.
- Extra hard-coded threshold: both assignment stages set points whose best RFD is below 0.8 to background, a value the paper does not mention hierarchical_assigner.py hierarchical_assigner.py.
- TRF values are fixed for ResNet-50 FPN in
gen_trf, not computed from eq. 2 at run time rf_generator.py. Evaluating that arithmetic by hand gives 35, 91, 267, 427 and 555 px for P2–P6 (not run). - Warmup is in the code and absent from the paper: linear, 5000 iterations, starting at 0.001× the learning rate aitod_faster_r50_rfla_kld_1x.py.
- Learning schedule matches: SGD, momentum 0.9, weight decay 1e-4, batch 2, 12 epochs, lr 0.005 with steps at 8 and 11 §4.2 aitod_faster_r50_rfla_kld_1x.py.
- Configs for some headline rows are for AI-TOD-v2, not AI-TOD v1. The DetectoRS
RFLA config targets
aitodv2aitodv2_detectors_rfla_kld_1x.py. The only FCOS config with P2 (the FCOS* row) isaitodv2_fcos_r50_p2_rfla_kld_1x.pyaitodv2_fcos_r50_p2_rfla_kld_1x.py. The v1 FCOS config uses P3–P7 aitod_fcos_r50_rfla_kld_1x.py. The repository README reports DetectoRS w/ RFLA as 24.8 AP on the v1 table and 25.7 AP on the v2 table [README.md, Table 1 and Table 2]. No v1 DetectoRS config is in the repository. - README rows not in the paper: the README lists FCOS w/ RFLA at 13.3 AP and FCOS (reproduce) at 12.0 AP on AI-TOD. Neither row is in the paper's table.
- Tie-breaking and "smaller gt" rule: the paper says an occluded sample goes to the smaller ground truth §3.3. The HieAssigner loops over gts with the later index winning hierarchical_assigner.py. I did not find a size-based rule there and did not trace whether gts are sorted upstream.
- Repository scope: the README states the code is "unsuited for generic object detection (e.g. VOC, COCO)" because the problem is not obvious for medium and large objects.
Pitfalls
- Stage-1 and stage-2 both compute a full gt×point RFD matrix, and stage 2
uses shrunk radii for all points. Stage-1 loops over gts and k in Python
hierarchical_assigner.py. The
With
gpu_assign_thr=512in the config aitod_faster_r50_rfla_kld_1x.py, assignment runs on CPU when there are more than 512 gts hierarchical_assigner.py. - Points with a best RFD of 0.8 or more that are not in any top-k are left at −1 (ignore), not 0 (negative). The paper has no ignore state for these points hierarchical_assigner.py hierarchical_assigner.py.
- Exact ties in RFD are assigned with an equality test against the top-k values, so ties can give more than k points for one gt hierarchical_assigner.py.
- The ERF is a Gaussian centred on the feature point location. The code places points at i·stride with no half-stride offset rf_generator.py. The paper does not define the coordinate origin.
- Wasserstein is not scale-invariant (paper's own warning) and was slightly worse on AP50 §3.2 tab. 1. KL is the default for good reason.
- β is a tie at 0.9 vs 0.95 on AP (21.1 both) tab. 3. The paper picks 0.9 for AP50 and APvt.
- k was swept only on AI-TOD. The text says the AP is "quite robust" to k §4.3; the tested values give 20.7–21.1 AP.
- Headline DetectoRS and FCOS numbers do not map to a single v1 config in the repo* (see Paper vs code).
- Warmup and BN settings are code-only. Re-implementing from the paper alone will not match the code's learning-rate warmup or frozen first stage.
- Author-reported gains for the headline are on one backbone (ResNet-50) and one dataset (AI-TOD). The paper reports no variance or seed information tab. 5.
- Cost: the paper says there is no extra inference cost §1. The added cost is in training-time label assignment only.
Lineage
- Builds on: the anchor-based and anchor-free label-assignment families it critiques (Faster R-CNN's MaxIoU, ATSS, FCOS centre sampling) §1 §3.4; the Gaussian effective-receptive-field model §3.1; Gaussian Wasserstein and KL distances between boxes, as cited in §3.2; and the scale-invariance argument for KL, as cited in §3.2.
- Compared against: TridentNet, Cascade RPN, Cascade R-CNN, DetectoRS, DotD, DetectoRS w/ NWD, SSD, RetinaNet, PAA, ATSS, RepPoints, OTA, AutoAssign, FCOS, M-CenterNet on AI-TOD tab. 5.
- Superseded by: not stated.
Source and license
Adapted from “RFLA: Gaussian Receptive Field based Label Assignment for Tiny Object Detection” by Chang Xu, Jinwang Wang, Wen Yang, Huai Yu, Lei Yu, Gui-Song Xia (arXiv:2208.08738), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/Chasel-Tsui/mmdet-rfla at commit 198977b5e198 (MIT). Any quoted code is shown under that license.