\in \mathbb{R}^{H\times W \times 3}$, the network first applies a convolutional layer to extract low-level features $\mathbf{X_0} \in \mathbb{R}^{H\times W \times C}$. Next, the feature maps $\mathbf{X_0}$ pass through $N$ number of recursive residual groups (RRGs), yielding deep features $\mathbf{X_d} \in \mathbb{R}^{H\times W \times C}$. We note that each RRG contains several multi-scale residual blocks, which is described in Section \[sec:msrb\]. Next, we apply a convolution layer to deep features $\mathbf{X_d}$ and obtain a residual image $\mathbf{R} \in \mathbb{R}^{H\times W \times 3}$. Finally, the restored image is obtained as $\mathbf{\hat{I}} = \mathbf{I} + \mathbf{R}$. We optimize the proposed network using the Charbonnier loss [@charbonnier1994]:

$$\label{Eq:loss}
\mathcal{L}(\mathbf{\hat{I}},\mathbf{I}^*) = \sqrt{ {\|\mathbf{\hat{I}}-\mathbf{I}^*\|}^2 + {\varepsilon}^2 },$$

where $\mathbf{I}^*$ denotes the ground-truth image, and $\varepsilon$ is a constant which we empirically set to $10^{-3}$ for all the experiments.

Multi-scale Residual Block (MRB) {#sec:msrb}
--------------------------------

In order to encode context, existing CNNs [@ronneberger2015u; @newell2016stacked; @noh2015learning; @xiao2018simple; @badrinarayanan2017segnet; @peng2016recurrent] typically employ the following architecture design: **(a)** the receptive field of neurons is fixed in *each* layer/stage, **(b)** the spatial size of feature maps is *gradually* reduced to generate a semantically strong low-resolution representation, and **(c)** a high-resolution representation is *gradually* recovered from the low-resolution representation. However, it 