Mobility Helps Learning: Unsupervised Model Adaptation for Object Recognition via Movement
Organizations: Department of Computer Science, City University of Hong Kong · Department of Electrical and Computer Engineering, The University of Hong Kong
Abstract
Movable agents, such as autonomous vehicles and robots, should be able to autonomously adapt their pre-trained object recognition models to new environments without human annotations. While existing test-time adaptation (TTA) methods address label-free model adaptation, they typically treat test data as independent snapshots, without constructively exploiting a rich, unique source of supervision: the significant variance in prediction quality as an agent observes the same object from different distances and viewpoints. To capitalize on this, we propose MoCaFe, a model-agnostic and hyperparameter-insensitive paradigm that leverages motion-induced prediction variance for unsupervised adaptation. Specifically, we first develop mobility-calibrated filtering of pseudo-labels, which constructs reliable pseudo-labels by fusing cross-view predictions using inverse-variance weights. The filtered pseudo-labels then guide the selection of ``hard samples'' for effective learning. To further suppress pseudo-label corruption, we introduce p-MoCaFe, an optional extension that uses a public dataset to assign weighting factors to data samples, yielding an estimator of the clean loss with bounded bias. Extensive experiments on autonomous driving (nuScenes, KITTI) and embodied-agent datasets show that MoCaFe significantly outperforms state-of-the-art TTA schemes, achieving up to approximately 20% accuracy gain.
Figures & tables
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Pre-trained | 75% | 70% | 65% | 75% | 70% | 65% |
| w/o MoCaFe | 76.18 \color[rgb]{0,1,0}\uparrow ( 0.28) | 72.05 \color[rgb]{0,1,0}\uparrow ( 0.28) | 62.17 \color[rgb]{1,0,0}\downarrow ( 0.37) | 76.69 \color[rgb]{0,1,0}\uparrow ( 0.26) | 72.55 \color[rgb]{0,1,0}\uparrow ( 0.25) | 40.23 \color[rgb]{1,0,0}\downarrow ( 0.43) |
| AdaCon | 77.88 \color[rgb]{0,1,0}\uparrow ( 0.19) | 73.63 \color[rgb]{0,1,0}\uparrow ( 0.15) | 66.51 \color[rgb]{0,1,0}\uparrow ( 0.18) | 76.85 \color[rgb]{0,1,0}\uparrow ( 0.33) | 72.83 \color[rgb]{0,1,0}\uparrow ( 0.47) | 62.28 \color[rgb]{1,0,0}\downarrow ( 0.61) |
| PLUE | 77.94 \color[rgb]{0,1,0}\uparrow ( 0.12) | 73.82 \color[rgb]{0,1,0}\uparrow ( 0.21) | 67.28 \color[rgb]{0,1,0}\uparrow ( 0.29) | 77.43 \color[rgb]{0,1,0}\uparrow ( 0.24) | 73.55 \color[rgb]{0,1,0}\uparrow ( 0.30) | 59.91 \color[rgb]{1,0,0}\downarrow ( 0.35) |
| RoTTA | 78.67 \color[rgb]{0,1,0}\uparrow ( 0.21) | 75.13 \color[rgb]{0,1,0}\uparrow ( 0.33) | 68.20 \color[rgb]{0,1,0}\uparrow ( 0.31) | —– | —– | —– |
| C-SFDA | 78.71 \color[rgb]{0,1,0}\uparrow ( 0.22) | 75.37 \color[rgb]{0,1,0}\uparrow ( 0.26) | 68.34 \color[rgb]{0,1,0}\uparrow ( 0.34) | 77.75 \color[rgb]{0,1,0}\uparrow ( 0.18) | 72.20 \color[rgb]{0,1,0}\uparrow ( 0.19) | 66.43 \color[rgb]{0,1,0}\uparrow ( 0.25) |
| ResNet-50 | ||||||||||
| Class | Car | Pedestrian | Traffic-Cone | Trailer | Bus | Motorcycle | Barrier | Con-Vehicle | Bicycle | Truck |
| Pre-trained | 82.42 | 77.35 | 70.46 | 77.22 | 62.86 | 61.11 | 53.09 | 49.64 | 48.15 | 23.28 |
| w/o MoCaFe | 87.41 \color[rgb]{0,1,0}\uparrow | 81.05 \color[rgb]{0,1,0}\uparrow | 76.95 \color[rgb]{0,1,0}\uparrow | 75.32 \color[rgb]{1,0,0}\downarrow | 61.90 \color[rgb]{1,0,0}\downarrow | 47.22 \color[rgb]{1,0,0}\downarrow | 52.31 \color[rgb]{1,0,0}\downarrow | 49.68 \color[rgb]{0,1,0}\uparrow | 46.91 \color[rgb]{1,0,0}\downarrow | 18.84 \color[rgb]{1,0,0}\downarrow |
| AdaCon | 88.38 \color[rgb]{0,1,0}\uparrow | 85.29 \color[rgb]{0,1,0}\uparrow | 77.42 \color[rgb]{0,1,0}\uparrow | 81.00 \color[rgb]{0,1,0}\uparrow | 68.10 \color[rgb]{0,1,0}\uparrow | 50.05 \color[rgb]{1,0,0}\downarrow | 53.09 \color[rgb]{0.5,0.5,0.5}\rightarrow | 40.53 \color[rgb]{1,0,0}\downarrow | 37.50 \color[rgb]{1,0,0}\downarrow | 14.64 \color[rgb]{1,0,0}\downarrow |
| PLUE | 88.79 \color[rgb]{0,1,0}\uparrow | 84.98 \color[rgb]{0,1,0}\uparrow | 75.55 \color[rgb]{0,1,0}\uparrow | 78.67 \color[rgb]{0,1,0}\uparrow | 64.87 \color[rgb]{0,1,0}\uparrow | 55.89 \color[rgb]{1,0,0}\downarrow | 54.24 \color[rgb]{0,1,0}\uparrow | 46.15 \color[rgb]{1,0,0}\downarrow | 39.71 \color[rgb]{1,0,0}\downarrow | 15.51 \color[rgb]{1,0,0}\downarrow |
| RoTTA | 87.41 \color[rgb]{0,1,0}\uparrow | 83.78 \color[rgb]{0,1,0}\uparrow | 73.12 \color[rgb]{0,1,0}\uparrow | 74.74 \color[rgb]{1,0,0}\downarrow | 65.39 \color[rgb]{0,1,0}\uparrow | 52.53 \color[rgb]{1,0,0}\downarrow | 58.33 \color[rgb]{0,1,0}\uparrow | 40.53 \color[rgb]{1,0,0}\downarrow | 37.62 \color[rgb]{1,0,0}\downarrow | 12.87 \color[rgb]{1,0,0}\downarrow |
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Pre-trained | 75% | 70% | 65% | 75% | 70% | 65% |
| w/o MoCaFe | 75.53 \color[rgb]{0,1,0}\uparrow ( 0.24) | 71.41 \color[rgb]{0,1,0}\uparrow ( 0.26) | 61.48 \color[rgb]{1,0,0}\downarrow ( 0.39) | 76.10 \color[rgb]{0,1,0}\uparrow ( 0.25) | 71.96 \color[rgb]{0,1,0}\uparrow ( 0.27) | 39.51 \color[rgb]{1,0,0}\downarrow ( 0.39) |
| AdaCon | 76.45 \color[rgb]{0,1,0}\uparrow ( 0.14) | 72.72 \color[rgb]{0,1,0}\uparrow ( 0.18) | 65.46 \color[rgb]{0,1,0}\uparrow ( 0.19) | 76.23 \color[rgb]{0,1,0}\uparrow ( 0.26) | 72.16 \color[rgb]{0,1,0}\uparrow ( 0.22) | 60.39 \color[rgb]{1,0,0}\downarrow ( 0.54) |
| PLUE | 77.16 \color[rgb]{0,1,0}\uparrow ( 0.16) | 73.04 \color[rgb]{0,1,0}\uparrow ( 0.25) | 66.80 \color[rgb]{0,1,0}\uparrow ( 0.26) | 76.88 \color[rgb]{0,1,0}\uparrow ( 0.25) | 73.00 \color[rgb]{0,1,0}\uparrow ( 0.32) | 57.58 \color[rgb]{1,0,0}\downarrow ( 0.34) |
| RoTTA | 77.35 \color[rgb]{0,1,0}\uparrow ( 0.24) | 73.85 \color[rgb]{0,1,0}\uparrow ( 0.23) | 67.09 \color[rgb]{0,1,0}\uparrow ( 0.27) | — | — | — |
| C-SFDA | 78.03 \color[rgb]{0,1,0}\uparrow ( 0.21) | 73.99 \color[rgb]{0,1,0}\uparrow ( 0.28) | 67.60 \color[rgb]{0,1,0}\uparrow ( 0.31) | 77.11 \color[rgb]{0,1,0}\uparrow ( 0.20) | 71.59 \color[rgb]{0,1,0}\uparrow ( 0.23) | 65.42 \color[rgb]{0,1,0}\uparrow ( 0.27) |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Pre-train Acc. | Pseudo-labeling Strategy | PL Correctness (%) | Test Acc. (%) |
|---|---|---|---|
| 75.0% | Max-confidence | 84.21 | 80.24 |
| Filtered (proposed) | 84.95 | 80.81 | |
| 42.4% | Max-confidence | 42.13 | 41.10 |
| Filtered (proposed) | 44.80 | 44.07 | |
| 37.4% | Max-confidence | 34.85 | 33.12 |
| Filtered (proposed) | 37.73 | 37.04 |
| Pre-train Acc. | Pseudo-labeling Strategy | PL Correctness (%) | Test Acc. (%) |
|---|---|---|---|
| 75.0% | Max-confidence | 86.54 | 88.81 |
| Filtered (proposed) | 88.72 | 89.60 | |
| 57.0% | Max-confidence | 64.68 | 68.23 |
| Filtered (proposed) | 68.35 | 72.80 | |
| 51.0% | Max-confidence | 58.80 | 61.56 |
| Filtered (proposed) | 63.76 | 67.57 |
| Data Sampling | Data Weighting | ResNet-50 | Swin-T | ||||
|---|---|---|---|---|---|---|---|
| 75% | 70% | 65% | 75% | 70% | 65% | ||
| ✗ | ✔ | 77.24 \color[rgb]{0,1,0}\uparrow ( 0.20) | 73.66 \color[rgb]{0,1,0}\uparrow ( 0.24) | 65.48 \color[rgb]{0,1,0}\uparrow ( 0.29) | 77.80 \color[rgb]{0,1,0}\uparrow ( 0.24) | 74.82 \color[rgb]{0,1,0}\uparrow ( 0.26) | 43.98 \color[rgb]{1,0,0}\downarrow ( 0.33) |
| ✔ | ✗ | 80.81 \color[rgb]{0,1,0}\uparrow ( 0.23) | 77.25 \color[rgb]{0,1,0}\uparrow ( 0.25) | 69.32 \color[rgb]{0,1,0}\uparrow ( 0.24) | 89.60 \color[rgb]{0,1,0}\uparrow ( 0.11) | 89.34 \color[rgb]{0,1,0}\uparrow ( 0.15) | 89.27 \color[rgb]{0,1,0}\uparrow ( 0.16) |
| ✔ | ✔ | 81.23 \color[rgb]{0,1,0}\uparrow ( 0.13) | 77.93 \color[rgb]{0,1,0}\uparrow ( 0.16) | 69.74 \color[rgb]{0,1,0}\uparrow ( 0.25) | 90.19 \color[rgb]{0,1,0}\uparrow ( 0.17) | 90.07 \color[rgb]{0,1,0}\uparrow ( 0.18) | 90.02 \color[rgb]{0,1,0}\uparrow ( 0.12) |
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Num. Samples | ||||||
| w/o MoCaFe | 76.18 \color[rgb]{0,1,0}\uparrow ( 0.28) | 75.36 \color[rgb]{0,1,0}\uparrow ( 0.15) | 75.31 \color[rgb]{0,1,0}\uparrow ( 0.18) | 76.69 \color[rgb]{0,1,0}\uparrow ( 0.26) | 76.06 \color[rgb]{0,1,0}\uparrow ( 0.25) | 75.87 \color[rgb]{0,1,0}\uparrow ( 0.28) |
| AdaCon | 77.88 \color[rgb]{0,1,0}\uparrow ( 0.19) | 76.93 \color[rgb]{0,1,0}\uparrow ( 0.23) | 76.27 \color[rgb]{0,1,0}\uparrow ( 0.28) | 76.85 \color[rgb]{0,1,0}\uparrow ( 0.33) | 76.24 \color[rgb]{0,1,0}\uparrow ( 0.35) | 75.73 \color[rgb]{0,1,0}\uparrow ( 0.37) |
| PLUE | 77.94 \color[rgb]{0,1,0}\uparrow ( 0.12) | 76.48 \color[rgb]{0,1,0}\uparrow ( 0.23) | 75.84 \color[rgb]{0,1,0}\uparrow ( 0.24) | 77.43 \color[rgb]{0,1,0}\uparrow ( 0.24) | 76.95 \color[rgb]{0,1,0}\uparrow ( 0.26) | 76.51 \color[rgb]{0,1,0}\uparrow ( 0.25) |
| RoTTA | 78.67 \color[rgb]{0,1,0}\uparrow ( 0.21) | 77.93 \color[rgb]{0,1,0}\uparrow ( 0.30) | 77.22 \color[rgb]{0,1,0}\uparrow ( 0.29) | —– | —– | —– |
| C-SFDA | 78.71 \color[rgb]{0,1,0}\uparrow ( 0.22) | 77.54 \color[rgb]{0,1,0}\uparrow ( 0.27) | 76.63 \color[rgb]{0,1,0}\uparrow ( 0.30) | 77.75 \color[rgb]{0,1,0}\uparrow ( 0.18) | 77.36 \color[rgb]{0,1,0}\uparrow ( 0.20) | 76.97 \color[rgb]{0,1,0}\uparrow ( 0.22) |
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Pre-train | 75% | 70% | 65% | 75% | 70% | 65% |
| w/o MoCaFe | 76.20 \color[rgb]{0,1,0}\uparrow ( 0.24) | 72.14 \color[rgb]{0,1,0}\uparrow ( 0.28) | 60.46 \color[rgb]{1,0,0}\downarrow ( 0.43) | 75.98 \color[rgb]{0,1,0}\uparrow ( 0.31) | 72.24 \color[rgb]{0,1,0}\uparrow ( 0.28) | 41.42 \color[rgb]{1,0,0}\downarrow ( 0.38) |
| AdaCon | 77.03 \color[rgb]{0,1,0}\uparrow ( 0.30) | 73.38 \color[rgb]{0,1,0}\uparrow ( 0.25) | 60.74 \color[rgb]{1,0,0}\downarrow ( 0.32) | 76.32 \color[rgb]{0,1,0}\uparrow ( 0.28) | 73.51 \color[rgb]{0,1,0}\uparrow ( 0.30) | 59.78 \color[rgb]{1,0,0}\downarrow ( 0.43) |
| PLUE | 77.56 \color[rgb]{0,1,0}\uparrow ( 0.26) | 73.05 \color[rgb]{0,1,0}\uparrow ( 0.31) | 67.32 \color[rgb]{0,1,0}\uparrow ( 0.35) | 76.88 \color[rgb]{0,1,0}\uparrow ( 0.24) | 73.40 \color[rgb]{0,1,0}\uparrow ( 0.27) | 65.32 \color[rgb]{0,1,0}\uparrow ( 0.34) |
| RoTTA | 78.16 \color[rgb]{0,1,0}\uparrow ( 0.24) | 74.51 \color[rgb]{0,1,0}\uparrow ( 0.28) | 67.75 \color[rgb]{0,1,0}\uparrow ( 0.39) | —– | —– | —– |
| C-SFDA | 78.00 \color[rgb]{0,1,0}\uparrow ( 0.20) | 74.98 \color[rgb]{0,1,0}\uparrow ( 0.32) | 67.79 \color[rgb]{0,1,0}\uparrow ( 0.25) | 77.15 \color[rgb]{0,1,0}\uparrow ( 0.23) | 72.87 \color[rgb]{0,1,0}\uparrow ( 0.24) | 67.64 \color[rgb]{0,1,0}\uparrow ( 0.29) |
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Num. Samples | ||||||
| w/o MoCaFe | 76.20 \color[rgb]{0,1,0}\uparrow ( 0.24) | 75.82 \color[rgb]{0,1,0}\uparrow ( 0.34) | 75.37 \color[rgb]{0,1,0}\uparrow ( 0.31) | 75.98 \color[rgb]{0,1,0}\uparrow ( 0.31) | 74.71 \color[rgb]{1,0,0}\downarrow ( 0.23) | 74.24 \color[rgb]{1,0,0}\downarrow ( 0.24) |
| AdaCon | 77.03 \color[rgb]{0,1,0}\uparrow ( 0.30) | 76.75 \color[rgb]{0,1,0}\uparrow ( 0.21) | 75.89 \color[rgb]{0,1,0}\uparrow ( 0.24) | 76.32 \color[rgb]{0,1,0}\uparrow ( 0.28) | 75.94 \color[rgb]{0,1,0}\uparrow ( 0.26) | 75.23 \color[rgb]{0,1,0}\uparrow ( 0.34) |
| PLUE | 77.56 \color[rgb]{0,1,0}\uparrow ( 0.26) | 77.11 \color[rgb]{0,1,0}\uparrow ( 0.25) | 76.74 \color[rgb]{0,1,0}\uparrow ( 0.20) | 76.88 \color[rgb]{0,1,0}\uparrow ( 0.24) | 76.51 \color[rgb]{0,1,0}\uparrow ( 0.22) | 75.86 \color[rgb]{0,1,0}\uparrow ( 0.28) |
| RoTTA | 78.16 \color[rgb]{0,1,0}\uparrow ( 0.24) | 77.72 \color[rgb]{0,1,0}\uparrow ( 0.26) | 77.30 \color[rgb]{0,1,0}\uparrow ( 0.23) | —– | —– | —– |
| C-SFDA | 78.00 \color[rgb]{0,1,0}\uparrow ( 0.20) | 77.53 \color[rgb]{0,1,0}\uparrow ( 0.22) | 77.13 \color[rgb]{0,1,0}\uparrow ( 0.27) | 77.15 \color[rgb]{0,1,0}\uparrow ( 0.23) | 76.73 \color[rgb]{0,1,0}\uparrow ( 0.25) | 76.20 \color[rgb]{0,1,0}\uparrow ( 0.29) |
| ResNet-50 | Swin-T | |||||
|---|---|---|---|---|---|---|
| Pre-train | 75% | 70% | 65% | 75% | 70% | 65% |
| w/o MoCaFe | 76.03 \color[rgb]{0,1,0}\uparrow ( 0.28) | 71.06 \color[rgb]{0,1,0}\uparrow ( 0.29) | 60.07 \color[rgb]{1,0,0}\downarrow ( 0.34) | 76.03 \color[rgb]{0,1,0}\uparrow ( 0.28) | 71.32 \color[rgb]{0,1,0}\uparrow ( 0.31) | 38.47 \color[rgb]{1,0,0}\downarrow ( 0.35) |
| AdaCon | 76.85 \color[rgb]{0,1,0}\uparrow ( 0.26) | 72.63 \color[rgb]{0,1,0}\uparrow ( 0.25) | 65.63 \color[rgb]{0,1,0}\uparrow ( 0.29) | 76.81 \color[rgb]{0,1,0}\uparrow ( 0.22) | 72.04 \color[rgb]{0,1,0}\uparrow ( 0.24) | 58.48 \color[rgb]{1,0,0}\downarrow ( 0.27) |
| PLUE | 77.01 \color[rgb]{0,1,0}\uparrow ( 0.25) | 72.88 \color[rgb]{0,1,0}\uparrow ( 0.27) | 65.75 \color[rgb]{0,1,0}\uparrow ( 0.33) | 76.83 \color[rgb]{0,1,0}\uparrow ( 0.19) | 72.79 \color[rgb]{0,1,0}\uparrow ( 0.21) | 60.27 \color[rgb]{1,0,0}\downarrow ( 0.30) |
| RoTTA | 77.76 \color[rgb]{0,1,0}\uparrow ( 0.18) | 74.00 \color[rgb]{0,1,0}\uparrow ( 0.20) | 67.36 \color[rgb]{0,1,0}\uparrow ( 0.23) | —- | —- | —- |
| C-SFDA | 77.93 \color[rgb]{0,1,0}\uparrow ( 0.22) | 73.66 \color[rgb]{0,1,0}\uparrow ( 0.22) | 68.53 \color[rgb]{0,1,0}\uparrow ( 0.31) | 77.12 \color[rgb]{0,1,0}\uparrow ( 0.17) | 73.02 \color[rgb]{0,1,0}\uparrow ( 0.26) | 66.88 \color[rgb]{0,1,0}\uparrow ( 0.28) |
Test-Time Adaptation
Test-time adaptation updates or recalibrates pretrained models at inference to handle distribution shifts, often without target labels.
See all 322 papers