Paper · 2020-12-10 · cs.CV
A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data
SFOD adapts a source-pretrained Faster R-CNN to unlabeled target images without source data. It sets the pseudo-label threshold by self-entropy descent and adds Mosaic augmentation to simulate missed objects. Author-reported: 44.6 car AP (KITTI to Cityscapes) and 29.0 mAP (Cityscapes to BDD100k daytime).
Domain adaptationSelf-trainingObject detectionLearning with noisy labelsobject-detectiondomain-adaptationpseudo-labels
AI-compiled by claude-haiku-5-5 on 2026-11-09, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
A detector trained on one kind of image, say clear daytime street scenes, often performs worse on another, such as foggy streets or a different camera. Adapting it normally requires the original training images as well as the new ones. This paper asks what is possible when only the trained model and the new, unlabeled images are available.
The method lets the old model label the new images itself. Those labels are imperfect: some real objects are missed and some background is wrongly marked as objects. The authors choose how confident the model must be before a box counts as an object by checking how sure the model is about its own predictions after retraining on those labels. They also reduce the damage from missed objects by pasting four images together into one, which makes small and partly hidden objects appear more often during training.
The point is practical: a team can improve a deployed detector on new conditions without keeping or sharing the data it was originally trained on.
TL;DR
SFOD is a source-free way to adapt a Faster R-CNN detector. It labels unlabeled target images with the source model and keeps only boxes above a confidence threshold. The threshold comes from self-entropy descent, and Mosaic augmentation is applied to reduce the effect of missed objects. The authors report gains over the source-only model on four adaptation tasks, with results that are close to, but in some tasks below, source-based adaptation methods. Results are not independently verified and no code is published.
Problem
Standard unsupervised domain adaptation for detection needs labeled source data and unlabeled target data together § Introduction. The authors argue that sharing source images is often impractical because of privacy and transmission cost § Introduction. In the source-free setting only the source-trained weights are available, and the target images have no labels § Method.
With no target labels, the threshold that separates positive from negative detections cannot be tuned directly. Pseudo labels are noisy in both directions, and the authors find that missed objects (false negatives) make up most of the noise § Method (False Negatives Simulation) fig. 5.
Method
The detector is Faster R-CNN § Method (Pseudo Labels Optimization via SED).
The paper's section headings are unnumbered, so this card cites them as
[§ Section] (Subsection), for example [§ Method] (Self-entropy descent).
Equations and figures are cited by the paper's numbering.
Step 1: Pseudo labels. Run the source model on every target image. A detection is labeled with its highest-scoring foreground class if that score is above the threshold h. Otherwise it is labeled background § Method (Self-entropy descent) eq. 2.
Step 2: Training loss. Fine-tune on the pseudo labels with the standard Faster R-CNN loss, which is the sum of the region-proposal, classification and box-regression losses, with no weights stated eq. 3. The authors use the source model's boxes as the targets for proposal and regression, and only the classification targets come from the thresholded pseudo labels. They justify this by claiming that localisation error matters less than classification error for detection § Method (Self-entropy descent).
Step 3: Self-entropy of the adapted model. Fine-tune from the source weights with the pseudo labels for threshold h, giving model θ_t eq. 4. Run θ_t over the target images and take the class probabilities of each sample. The self-entropy of each sample is the average over classes of −p log p. The mean self-entropy H(D_t) is the average of these values over the target set eq. 1 eq. 5 eq. 6. The paper does not state whether a "sample" is an image or a box.
Step 4: Threshold search (SED). Try thresholds from high confidence to low confidence. Stop at the first local minimum of H(D_t) along that scan § Method (Self-entropy descent) fig. 4. The text gives the selection as h_optimal = argmin_h H(D_t) eq. 7. The two rules differ, see Pitfalls.
Step 5: False-negative simulation with Mosaic. Mosaic joins four target images with random scaling and random cutting, and their pseudo-labeled boxes are combined with the same geometry § Method (False Negatives Simulation) eq. 8 eq. 9. The authors use it because it can create small and partly visible objects from boxes that were already detected, without removing true negatives § Method (False Negatives Simulation). The authors cite Mosaic as Bochkovskiy et al. § Method (False Negatives Simulation).
Reconstructed pseudocode for Steps 1 to 4. The paper gives no algorithm box, and
the comments cite the text, not an [alg. N]:
# Self-entropy descent (SED) threshold search
# Input: target_images; theta_s (trained on the source domain only)
# Output: threshold h, adapted model theta_t
def mean_self_entropy(model, samples):
# H(D_t): average over samples of the class-averaged -p log p [eq. 1]
total = 0.0
for sample in samples: # unit not stated
probs = model(sample) # (n_c,) class probabilities
total += -mean(probs * log(probs)) # mean over n_c classes
return total / len(samples)
def search_threshold(target_images, theta_s, thresholds):
# Scan thresholds from high confidence to low [§ Method] (SED)
history = []
for h in thresholds: # grid step not stated
# Keep foreground pseudo labels above h, else background [eq. 2]
pseudo = label_with_threshold(theta_s, target_images, h)
# Fine-tune starting from the source weights [eq. 4]
theta_t = train(target_images, pseudo, init=theta_s)
# Entropy of the fine-tuned model over the target set [eq. 5] [eq. 6]
history.append(mean_self_entropy(theta_t, target_images))
# Stop at the first local minimum of the descending curve [§ Method]
if is_first_local_minimum(history):
return h, theta_t
# Behaviour when no minimum appears: not stated
return thresholds[-1], theta_tMosaic (Step 5) reconstructed from the text eq. 8 eq. 9:
# Mosaic on pseudo-labeled target images [§ Method] (False Negatives Simulation)
# Input: four (image, boxes) pairs A, B, C, D from the target set
# Output: one mosaic image with merged boxes
def mosaic(samples, canvas_w, canvas_h):
# Random scale s(.) for each of the four images [eq. 8]
scaled = [random_scale(image) for image, boxes in samples]
# Random cut point lambda and 2D translation (u, v) [eq. 8] [eq. 9]
cut_x, cut_y = random_cut(canvas_w, canvas_h) # distribution not stated
# Binary masks M_A..M_D select the visible part of each image [eq. 8]
tiles = place_with_masks(scaled, cut_x, cut_y)
# Box merge rule: not defined in the text; shift and clip boxes here
merged_boxes = merge_boxes(samples, cut_x, cut_y)
return tiles, merged_boxesTraining regime details are in the Hyperparameters table. Only the four adaptation tasks listed in Results are reported.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| backbone | VGG-16, ImageNet-pretrained | § Experiments (Implementation Details) | Faster R-CNN framework |
| image short side | 600 px | § Experiments (Implementation Details) | stated for training and testing |
| optimiser | SGD | § Experiments (Implementation Details) | momentum and weight decay not stated |
| learning rate | 0.001 | § Experiments (Implementation Details) | schedule, warm-up and iterations not stated |
| batch size | 1 | § Experiments (Implementation Details) | |
| source data | used only for the pre-trained source model | § Experiments (Implementation Details) | source training recipe not stated |
| loss | L_det = L_rpn + L_cls + L_reg | eq. 3 | no loss weights stated |
| confidence threshold h | searched high to low | § Method (Self-entropy descent) fig. 4 | grid step and range not stated |
| stopping rule | first local minimum of mean self-entropy | § Method (Self-entropy descent) | "argmin" form in eq. 7 |
| Mosaic input | four target images | § Method (False Negatives Simulation) | scale range, cut distribution and probability not stated |
| NMS, anchors, RPN sampling | not stated |
Datasets and their sizes § Experiments (Datasets):
| Dataset | Role in the paper | Size as stated |
|---|---|---|
| KITTI | source, KITTI to Cityscapes | 7,481 labeled training images |
| Sim10k | source, Sim10k to Cityscapes | 10k images simulated from the GTA V game |
| Cityscapes | source or target | 2,975 training and 500 validation images, instance masks converted to boxes |
| BDD100k (daytime subset) | target, Cityscapes to BDD100k | 36,728 training and 5,258 validation images |
| Foggy Cityscapes | target, Cityscapes to Foggy Cityscapes | Cityscapes images with three fog levels |
The mask-to-box conversion for Cityscapes is not described.
Results
Author-reported. The source-only and oracle rows are defined in the paper as training on labeled source data and on labeled target data respectively [§ Experiments] (Comparison Results). Hardware and run-to-run variance are not stated. "Ideal" rows use a threshold chosen with labeled target validation data, so they are not deployable § Experiments (Adaptation to A New Sense). The baseline numbers' source (re-run or quoted) is not stated.
Car AP, KITTI to Cityscapes tab. 1 § Experiments (Adaptation to A New Sense):
| Method | Car AP |
|---|---|
| Source only | 36.4 |
| DA-Faster | 38.5 |
| SW-Faster | 37.9 |
| MAF | 41.0 |
| AT-Faster | 42.1 |
| Noise Labeling | 43.0 |
| DA-Detection | 43.9 |
| SFOD, SED threshold | 43.6 |
| SFOD plus Mosaic, SED threshold | 44.6 |
| SFOD, labeled-search threshold | 43.7 |
| SFOD plus Mosaic, labeled-search threshold | 44.6 |
| Oracle | 58.5 |
Car AP, Sim10k to Cityscapes tab. 2 § Experiments (Adaptation from Synthetic to Real Images):
| Method | Car AP |
|---|---|
| Source only | 33.7 |
| DA-Faster | 38.5 |
| MAF | 41.1 |
| AT-Faster | 42.1 |
| Noise Labeling | 43.0 |
| SFOD, SED threshold | 42.3 |
| SFOD plus Mosaic, SED threshold | 42.9 |
| SFOD, labeled-search threshold | 42.5 |
| SFOD plus Mosaic, labeled-search threshold | 43.1 |
| Oracle | 58.5 |
mAP over seven classes, Cityscapes to BDD100k daytime tab. 3 (train has no entries; mAP is the mean of the seven values) § Experiments (Adaptation to Large-Scale Dataset):
| Method | truck | car | rider | person | motor | bicycle | bus | mAP |
|---|---|---|---|---|---|---|---|---|
| Source only | 14.0 | 40.7 | 24.4 | 22.4 | 14.5 | 20.5 | 16.1 | 21.8 |
| DA-Faster | 14.3 | 44.6 | 26.5 | 29.4 | 15.8 | 20.6 | 16.8 | 24.0 |
| SW-Faster | 15.2 | 45.7 | 29.5 | 30.2 | 17.1 | 21.2 | 18.4 | 25.3 |
| CR-DA-DET | 19.5 | 46.3 | 31.3 | 31.4 | 17.3 | 23.8 | 18.9 | 26.9 |
| SFOD, SED threshold | 20.4 | 48.8 | 32.4 | 31.0 | 15.0 | 24.3 | 21.3 | 27.6 |
| SFOD plus Mosaic, SED threshold | 20.6 | 50.4 | 32.6 | 32.4 | 18.9 | 25.0 | 23.4 | 29.0 |
| SFOD, labeled-search threshold | 20.0 | 46.8 | 32.1 | 31.5 | 16.3 | 25.1 | 21.8 | 27.7 |
| SFOD plus Mosaic, labeled-search threshold | 20.6 | 50.4 | 32.6 | 32.4 | 18.9 | 25.0 | 23.4 | 29.0 |
| Oracle | 53.4 | 53.5 | 42.8 | 41.9 | 37.3 | 38.8 | 58.1 | 47.1 |
mAP over eight classes, Cityscapes to Foggy Cityscapes tab. 4 (the defogging column marks whether the target images were defogged first, as in DA-Detection) § Experiments (Adaptation from Normal to Foggy Weather):
| Method | Defogged | truck | car | rider | person | train | motor | bicycle | bus | mAP |
|---|---|---|---|---|---|---|---|---|---|---|
| Source only | no | 11.6 | 38.7 | 31.4 | 23.6 | 9.4 | 17.3 | 27.4 | 19.0 | 22.3 |
| DA-Faster | no | 19.5 | 43.5 | 36.5 | 28.7 | 12.6 | 24.8 | 29.1 | 33.1 | 28.5 |
| MAF | no | 23.8 | 43.9 | 39.5 | 28.2 | 33.3 | 29.2 | 33.9 | 39.9 | 34.0 |
| SW-Faster | no | 23.7 | 47.3 | 42.2 | 32.3 | 27.8 | 28.3 | 35.4 | 41.3 | 34.8 |
| DA-Detection | yes | 24.3 | 54.4 | 45.5 | 36.0 | 25.8 | 29.1 | 35.9 | 44.1 | 36.9 |
| CR-DA-DET | no | 27.2 | 49.2 | 43.8 | 32.9 | 36.4 | 30.3 | 34.6 | 45.1 | 37.4 |
| AT-Faster | no | 23.7 | 50.0 | 47.0 | 34.6 | 38.7 | 33.4 | 38.8 | 43.3 | 38.7 |
| SFOD, SED threshold | no | 21.7 | 44.0 | 40.4 | 32.6 | 11.8 | 25.3 | 34.5 | 34.3 | 30.6 |
| SFOD plus Mosaic, SED threshold | no | 25.5 | 44.5 | 40.7 | 33.2 | 22.2 | 28.4 | 34.1 | 39.0 | 33.5 |
| SFOD, labeled-search threshold | no | 22.3 | 44.0 | 38.2 | 31.4 | 15.1 | 25.7 | 34.6 | 36.8 | 31.0 |
| SFOD plus Mosaic, labeled-search threshold | no | 25.5 | 44.5 | 40.7 | 33.2 | 22.2 | 28.4 | 34.1 | 39.0 | 33.5 |
| SFOD plus defogging, SED threshold | yes | 28.4 | 50.9 | 41.6 | 32.2 | 15.9 | 28.1 | 36.0 | 40.1 | 34.2 |
| SFOD plus Mosaic and defogging, SED threshold | yes | 27.9 | 51.7 | 44.7 | 33.2 | 21.3 | 28.6 | 37.3 | 45.9 | 36.3 |
| SFOD plus defogging, labeled-search threshold | yes | 26.2 | 50.6 | 41.8 | 32.5 | 24.4 | 28.7 | 36.1 | 40.5 | 35.1 |
| SFOD plus Mosaic and defogging, labeled-search threshold | yes | 30.4 | 51.9 | 44.4 | 34.1 | 25.7 | 30.3 | 37.2 | 41.8 | 37.0 |
| Oracle | no | 38.1 | 49.8 | 53.1 | 33.1 | 37.4 | 41.1 | 57.4 | 48.2 | 44.8 |
Headline comparisons in the text, which the tables bear out: Mosaic adds 1.0 AP over SED alone on KITTI to Cityscapes tab. 1; SFOD plus Mosaic, SED threshold reaches 29.0 mAP against 26.9 for CR-DA-DET on Cityscapes to BDD100k daytime tab. 3; and SFOD plus Mosaic, SED threshold reaches 33.5 mAP on Foggy Cityscapes against 22.3 for the source-only model tab. 4. On the foggy task, DA-Detection, CR-DA-DET and AT-Faster are all higher than SFOD without defogging.
Paper vs code
No official code. The paper's LaTeX source has no repository link and the arXiv record in our metadata gives no code link. No project page is linked. A GitHub repository search for "SFOD", "source data-free domain adaptive object detection" and "self-entropy descent" returned no repository owned by the authors. Several results carry the SFOD name but belong to unrelated projects.
Pitfalls
- Stopping rule conflicts. The text describes a scan that stops at the first local minimum, but the formula writes an argmin over all thresholds § Method (Self-entropy descent) eq. 7. The two can give different thresholds. The paper's own toy example shows local minima at both ends of the curve, caused by class imbalance, and the authors say the ideal assignment gives the lowest entropy § Method (A toy example) fig. 3. The first-minimum rule can stop early. Grid step and any smoothing are not stated.
- Cost per threshold. Each candidate threshold needs a fine-tune on the pseudo labels and a re-evaluation eq. 4 eq. 5. The number of candidates and the training length per candidate are not stated, so the total compute of the search is unknown.
- Unit of the entropy average. Eq. 1 averages over samples x_t^i and divides by N_t, but the text does not say whether a sample is an image or a box. Implementers must pick one and report it.
- Mosaic dimensions. Eq. 8 writes the mosaic as a canvas of size W x H, but the masks are sized s(W) x s(H) eq. 8. The canvas size, the scale range, the cut-point distribution and the Mosaic probability are not stated.
- Box merge rule. Eq. 9 gives a weighted sum of label values, which does not say how box lists from four images are concatenated, shifted and clipped. Implementers must define it themselves.
- Duplicate rows in the tables. In tab. 3 and tab. 4 the SFOD plus Mosaic, labeled-search threshold row matches the SFOD plus Mosaic, SED threshold row in every column, and in tab. 1 the two values are both 44.6. Treat the Ideal-Mosaic numbers as unconfirmed.
- Defogging gain. The text says defogging adds "approximately 3%" § Experiments (Adaptation from Normal to Foggy Weather). The table differences are 2.8 for SED with Mosaic (33.5 to 36.3), 3.6 for SED without Mosaic (30.6 to 34.2) and 4.1 for the ideal threshold (31.0 to 35.1). The defogging method is not described in this paper, only that it is the same as DA-Detection's § Experiments (Adaptation from Normal to Foggy Weather).
- Source model dependence. The method is source-free only after the source model exists. The paper does not state how that model was trained or whether its recipe was tuned § Experiments (Implementation Details).
- Missing optimisation details. Momentum, weight decay, iteration count, LR schedule, anchors and NMS are not stated. Batch size 1 and LR 0.001 are the only optimisation values given.
- Baseline provenance. The text does not say whether the baseline numbers were re-run or copied from the cited papers.
- Cityscapes boxes. The conversion from instance masks to boxes is not described, so the box definition may differ from other Cityscapes detection setups.
- Claims beyond the tables. The discussion says the method is comparable to or better than source-based methods § Discussion and Analysis. This holds on tab. 1 and tab. 2 for the chosen rows, but not on tab. 4 without defogging.
- Scope. Four adaptation tasks, one detector (Faster R-CNN with VGG-16), and no timing or memory cost reported.
Lineage
- Builds on: Faster R-CNN, the detector used throughout § Method (Pseudo Labels Optimization via SED).
- Builds on: pseudo-label self-training for detection, with the source model as teacher § Method (Self-entropy descent).
- Builds on: Mosaic augmentation (cited as Bochkovskiy et al.), applied here to simulate false negatives § Method (False Negatives Simulation).
- Compared against: DA-Faster, SW-Faster, CR-DA-DET, AT-Faster, MAF, Noise Labeling and DA-Detection, which all use source data tab. 1 tab. 3 tab. 4.
- Superseded by: not known from content already in this wiki.
Source and license
Adapted from “A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data” by Xianfeng Li, Weijie Chen, Di Xie, Shicai Yang, Peng Yuan, Shiliang Pu, Yueting Zhuang (arXiv:2012.05400), 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.