论文解读:Cycle ISP Real Image Restoration via Improved Data Synthesis

Posted Matrix_11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文解读:Cycle ISP Real Image Restoration via Improved Data Synthesis相关的知识,希望对你有一定的参考价值。

Cycle ISP: Real Image Restoration via Improved Data Synthesis

谷歌去年发表了一篇文章:Unprocessing Images for Learned Raw Denoising,是关于如何构造逼近真实的数据来进行降噪的,在去年的文章里,研究者们主要是模拟了 ISP 中从 RAW 图到 sRGB 的过程,然后将 ISP 的过程逆转过来,从 sRGB 到 RAW,然后再在 RAW 域上添加噪声,从而构造出符合真实场景的噪声数据。

今年谷歌又发表了一篇类似的文章,还是关于如何构造真实的仿真数据来做图像恢复,看来谷歌在构造数据这块已经做了很多的研究了,今年这篇文章叫 Cycle ISP, 核心思想还是基于 ISP 流程,去年的文章是一步一步通过各种算法模块,将 ISP 中的降噪,白平衡,gamma 变换,tone mapping 等串起来,今年的这篇文章直接用网络进行了端到端的模拟,不过与一般的端到端方式不同的是,这篇文章采样了一个循环的方式,从 sRGB 到 RAW 图,然后再从 RAW 图回到 sRGB, 所以这个框架称为 Cycle ISP, 有循环轮回的感觉。

具体的框架示意图如下所示:

从上图可以看出,整个框架有三个部分,一部分是 RGB2RAW, 实现的是从 RGB 到 RAW 图的变换,另外一部分是 RAW2RGB,实现的是从 RAW 域到 RGB 的转换,还有部分是 color correction,实现颜色的变换。整个算法框架的目的,也是为了将网络训练成能够构造更加真实的数据,一旦网络训练完成,那么 RGB2RAW 的这部分网络,就可以通过大量的 RGB 图得到真实 RAW 图,注意,这个时候的 RAW 图其实是没有噪声的,类似完美的无噪声 RAW 图,然后对这些 RAW 图添加噪声,就能得到噪声 RAW 图与无噪声 RAW 图的训练对,从而可以用来训练降噪网络。

这个方法与去年的方法相比,好处在于不再需要人为地构造变换函数了,直接端到端的完成。

RGB2RAW branch

这个模块,完成 RGB2RAW 的变换,给定一张 RGB 图像, I r g b ∈ R H × W × 3 \\mathbfI_rgb \\in R^H \\times W \\times 3 IrgbRH×W×3,先借助常规的卷积网络,得到多个 feature map,然后再利用多个 recursive residual groups (RRGs) 进一步进行特征提取,整个过程可以表示为:

T 0 = M 0 ( I r g b ) T d = R R G N ( . . . R R G 1 ( T 0 ) ) T_0 = M_0(\\mathbfI_rgb) \\\\ T_d = RRG_N(...RRG_1(T_0)) T0=M0(Irgb)Td=RRGN(...RRG1(T0))

后面再接一个卷积层,得到 3 个通道的 feature map,最后再做一个 Bayer 模式的采样,得到输出的 RAW 图:

I ^ r a w = f b a y e r ( M 1 ( T d ) ) \\hat\\mathbfI_raw = f_bayer(M_1(T_d)) I^raw=fbayer(M1(Td))

这个模块,主要是利用 L 1 L_1 L1 loss 来进行训练:

L s 2 r ( I ^ r a w , I r a w ) = ∥ I ^ r a w − I r a w ∥ 1 + ∥ log ⁡ ( max ⁡ ( I ^ r a w , ϵ ) ) − log ⁡ ( max ⁡ ( I r a w , ϵ ) ) ∥ 1 \\mathcalL_s2r( \\hat\\mathbfI_raw, \\mathbfI_raw ) = \\left\\| \\hat\\mathbfI_raw - \\mathbfI_raw \\right\\|_1 + \\left\\| \\log(\\max(\\hat\\mathbfI_raw, \\epsilon )) - \\log(\\max(\\mathbfI_raw, \\epsilon )) \\right\\|_1 Ls2r(I^raw,Iraw)=I^rawIraw1+log(max(I^raw,ϵ))log(max(Iraw,ϵ))1

$ \\mathbfI_raw $ 表示 RAW 图的 ground truth。

RAW2RGB branch

RAW2RGB 分支,实现 RAW 图到 RAG 的转换,这个分支,首先将 RAW 图拆成 RGGB 四个通道,每个通道的分辨率都下降了一倍,从 $ H \\times W $ 变成了 H 2 × W 2 × 4 \\fracH2 \\times \\fracW2 \\times 4 2H×2W×4,然后类似 RGB2RAW, 先用一个卷积层将 4 个通道变成多个 feature map,然后再经过多个 RRG 模块,得到多个等大的 feature map,整个过程如下所示:

T d ′ = R R G K − 1 ( . . . R R G 1 ( M 2 ( P a c k ( I r a w ) ) ) ) T_d' = RRG_K-1(...RRG_1(M_2(Pack(\\mathbfI_raw)))) Td=RRGK1(...RRG1(M2(Pack(Iraw))))

不过这里需要注意的一点是,这里的 $ \\mathbfI_raw $ 是相机原始的 RAW 图,不是 RGB2RAW 的输出,因为这两个 branch 是分开独立训练的。

  • Color correction unit

除了上面两个主要的分支,Cycle ISP 还引入了一个颜色校正模块,因为网络是基于很多不同的相机数据来训练的,而不同相机的颜色校正系数一般是不同的,所以为了统一这些数据,Cycle ISP 引入了一个颜色校正模块,这个模块是嵌入在 RAW2RGB 分支里的,color correction unit 的输入是 RGB 图像,然后经过简单的卷积以及两个 RRG,得到多个 feature map:

T c o l o r = σ ( M 4 ( R R G 2 ( R R G 1 ( M 3 ( K ∗ I r g b ) ) ) ) ) T_color = \\sigma(M_4(RRG_2(RRG_1(M_3(K * \\mathbfI_rgb))))) Tcolor=σ(M4(RRG2(RRG1(M3(KIrgb)))))

这里 ∗ * 表示卷积, K K K 表示高斯核,文章里用的高斯核的标准差是 12,这会带来非常强的模糊效果,从而将细节都基本去除了,只留下颜色, T c o l o r T_color Tcolor 和前面得到的 T d ′ T_d' Td 做一个 residual 的操作:

T a t t e n = T d ′ + ( T d ′ ⊗ T c o l o r ) T_atten = T_d' + (T_d' \\otimes T_color ) Tatten=Td+(TdTcolor)

其中 ⊗ \\otimes 表示 Hadamard product。

最后再利用一个卷积层,以及一个上采用操作,得到三个通道的 RGB 图像:

I ^ r g b = M u p ( M 5 ( R R G K ( T a t t e n ) ) ) \\hat\\mathbfI_rgb = M_up(M_5(RRG_K(T_atten))) I^

以上是关于论文解读:Cycle ISP Real Image Restoration via Improved Data Synthesis的主要内容,如果未能解决你的问题,请参考以下文章

论文阅读:Deep Bilateral Learning for Real-Time Image Enhancement

论文阅读:Deep Bilateral Learning for Real-Time Image Enhancement

论文阅读:Deep Bilateral Learning for Real-Time Image Enhancement

论文解读:High Dynamic Range and Super-Resolution from Raw Image Bursts

论文解读 - An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

论文解读:Unprocessing Images for Learned Raw Denoising