No Labels, No Look-Ahead: Unsupervised Online Video Stabilization with Classical Priors
Organizations: School of Electronic and Optical Engineering, Nanjing University of Science and Technology · College of Geoexploration Science and Technology, Jilin University
Abstract
We propose a new unsupervised framework for online video stabilization. Unlike methods based on deep learning that require paired stable and unstable datasets, our approach instantiates the classical stabilization pipeline with three stages and incorporates a multithreaded buffering mechanism. This design addresses three longstanding challenges in end-to-end learning: limited data, poor controllability, and inefficiency on hardware with constrained resources. Existing benchmarks focus mainly on handheld videos with a forward view in visible light, which restricts the applicability of stabilization to domains such as UAV nighttime remote sensing. To fill this gap, we introduce a new multimodal UAV aerial video dataset (UAV-Test). Experiments show that our method consistently outperforms state-of-the-art online stabilizers in both quantitative metrics and visual quality, while achieving performance comparable to offline methods.
Figures & tables
| Scene Type | Sensor | Tilt Range | Resolution | FPS | Occlusion | Sequences |
|---|---|---|---|---|---|---|
| Urban areas | Visible/IR | - | 25 | Partial building occlusion | 19 | |
| Highways | Visible/IR | - | 30 | Minimal occlusion | 22 | |
| Forests/mountains | Visible/IR | - | 25 | Frequent canopy occlusion | 18 | |
| Waterfronts | Visible | - | 30 | Mild vapor occlusion | 20 | |
| Industrial sites | Visible/IR | - | 25 | Large machinery occlusion | 13 |
| Method | NUS | DeepStab | Selfie | GyRo | UAV-Test | |||||||||||
| C↑ | D↑ | S↑ | C↑ | D↑ | S↑ | C↑ | D↑ | S↑ | C↑ | D↑ | S↑ | C↑ | D↑ | S↑ | ||
| Offline | Grundmann et al. [ 13 ] | 0.71 | 0.76 | 0.82 | 0.77 | 0.87 | 0.84 | 0.75 | 0.81 | 0.83 | 0.91 | 0.89 | 0.81 | 0.72 | 0.64 | 0.76 |
| Bundle [ 27 ] | 0.81 | 0.78 | 0.82 | 0.80 | 0.90 | 0.85 | 0.74 | 0.82 | 0.80 | 0.93 | 0.82 | 0.85 | 0.79 | 0.69 | 0.88 | |
| DIFRINT [ 7 ] | 1.00 | 0.87 | 0.84 | 1.00 | 0.91 | 0.78 | 1.00 | 0.78 | 0.84 | 1.00 | 0.83 | 0.85 | 1.00 | 0.86 | 0.87 | |
| Yu and Ramamoorthi [ 57 ] | 0.85 | 0.81 | 0.86 | 0.87 | 0.92 | 0.82 | 0.83 | 0.79 | 0.86 | 1.00 | 0.92 | 0.84 | 0.85 | 0.83 | 0.86 | |
| PWStableNet [ 60 ] | 0.91 | 0.97 | 0.86 | 0.97 | 0.97 | 0.87 | 0.99 | 0.92 | 0.89 | 0.99 | 0.96 | 0.83 | 0.90 | 0.88 | 0.90 | |
| Component | Operation | Output Size |
|---|---|---|
| Input | Distance & Motion channels | |
| Distance branch | GhostModule + DWConv + PWConv | |
| Feature reduction | ||
| Distance attention extractor | ||
| Motion branch | GhostModule + DWConv + PWConv | |
| ECA attention enhancement |
| Keypoints | Estimated MACs / frame |
|---|---|
| M | |
| M | |
| M |
| Submodule | Tensor Shape (Input Output) | Structural Components |
|---|---|---|
| Trajectory Encoder | Linear + ReLU | |
| Lite LS-3D (Temporal) | DW-Conv3d , dilation + ReLU | |
| Lite LS-3D (Spatial) | DW-Conv3d + ReLU | |
| (Optional) Channel Mixing | PW-Conv3d , groups=4) + ReLU | |
| Kernel Decoder (x) | (per vertex) | Linear (gate), Sigmoid; Linear (amplitude) |
| Kernel Decoder (y) | (per vertex) | Same as |
| Window | Grid | MACs / frame |
|---|---|---|
| M | ||
| M | ||
| M |
| Method | Runtime (ms) | FPS |
|---|---|---|
| MeshFlow [ 26 ] | 168.95 | 5.92 |
| StabNet [ 48 ] | 179.88 | 5.56 |
| NNDVS [ 59 ] | 340.02 | 2.94 |
| Liu et al. [ 29 ] | 36.41 | 27.47 |
| Ours | 78.94 | 12.67 |