Home

Awesome

Joint Appearance and Motion Learning for Efficient Rolling Shutter Correction

This repository contains the source code for the paper: Joint Appearance and Motion Learning for Efficient Rolling Shutter Correction (CVPR2023). Rolling shutter correction (RSC) is becoming increasingly popular for RS cameras that are widely used in commercial and industrial applications. Despite the promising performance, existing RSC methods typically employ a two-stage network structure that ignores intrinsic information interactions and hinders fast inference. In this paper, we propose a single-stage encoder-decoder-based network, named JAMNet, for efficient RSC. It first extracts pyramid features from consecutive RS inputs, and then simultaneously refines the two complementary information (i.e., global shutter appearance and undistortion motion field) to achieve mutual promotion in a joint learning decoder. To inject sufficient motion cues for guiding joint learning, we introduce a transformer-based motion embedding module and propose to pass hidden states across pyramid levels. Moreover, we present a new data augmentation strategy vertical flip + inverse order to release the potential of the RSC datasets. Experiments on various benchmarks show that our approach surpasses the state-of-the-art methods by a large margin, especially with a 4.7 dB PSNR leap on real-world RSC. Further, our network achieves real-time inference for the first time (28ms for 640×480 input in a single RTX 3090 GPU) and enjoys a flexible design.

<img src="result_demo/network.png" width="97%"/> <img src="result_demo/compare_sota_bsrsc.png" width="100%"/>

Installation

The code is tested with PyTorch 1.9.1 with CUDA 11.4.

Install the dependent packages:

pip install -r requirements.txt

Note that detectron2 needs to be installed.

In our implementation, we borrowed the code framework of DeepUnrollNet:

Install core package

cd ./package_core
python setup.py install

Demo with our pretrained model

One can test our method with the provided images in the demo folder.

To generate the global shutter images corresponding to the middle scanline, simply run

sh demo.sh

The visualization results will be stored in the experiments folder. Note that additional examples in the RSC dataset can be tested similarly.

Datasets

Training and evaluating

You can run following commands to re-train the network.

# !! Please update the corresponding paths in 'train_carla.sh', 'train_fastec.sh' and 'train_bsrsc.sh'  #
# !! with your own local paths, before run following command!!      #

sh train_carla.sh
sh train_fastec.sh
sh train_bsrsc.sh

You can run following commands to obtain the quantitative evaluations.

# !! Please update the path to test data in 'inference.sh'
# !! with your own local path, before run following command!!

sh inference.sh

Citations

Please cite our paper if necessary:

@inproceedings{fan_JAMNet_CVPR23,
  title={Joint Appearance and Motion Learning for Efficient Rolling Shutter Correction},
  author={Fan, Bin and Mao, Yuxin and Dai, Yuchao and Wan, Zhexiong and Liu, Qi},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={5671--5681},
  year={2023}
}

Statement

This project is for research purpose only, please contact us for the licence of commercial use. For any other questions or discussion please contact: binfan@mail.nwpu.edu.cn