sequences. Therefore, the whole dataset is enlarged by a factor of 100. We test the trained network on more than 400 testing data, which are different from the training dataset. The testing dataset consists of simulated video sequences as well as real turbulence-distorted video sequences.

Training Details
----------------

The experiments are conducted in PyTorch [@paszke2017automatic] with a CUDA-enabled GPU. The data augmentation algorithm is carried out in Matlab before the deep learning process is conducted. The strength value of distortion $S$ and the blurring parameter $B$ are randomly sampled from $[0.1,0.4]$ and $[0.1,1]$ respectively. Adam solver [@kingma2014adam] is used for the gradient descent with a learning rate of $10^{-4}$, $\beta_1 = 0.5$ and $\beta_2 = 0.99$ for both the generator $G_{\theta}$ and the critic $D_{\xi}$. We set 3 gradient descent steps for $D_{\xi}$ and then 1 step for $G_{\theta}$. We also apply the instance normalization and dropout to improve the training. In addition to the gradient penalty term [@gulrajani2017improved], we enforce the parameters ${\xi}$ in the range $[-0.01,0.01]$. For each epoch, we train both the network with batch size of 1, and set $\lambda = 10, \gamma = 1000$. Furthermore, we randomly select 20 frames from the video sequence as 