EnhanceNet: Single Image Super-Resolution Through Automated Texture Synthesis
背景
实习公司老大,让我看下这篇文章,并讲下这篇论文,所以我写下这篇博客,并总结我对偏文章的认识。这篇结合三个领域:1.去噪相关,2.超分辨重建,3.对抗网络。
基于像素重建的评价标准:peak signal-to-noise ratio(PSNR,峰值信噪比,描述的是一个信号最大可能功率和影响它的的表示精度的破坏性噪声功率的比值),人类图像质量感知相关。
关于PSNR的定义:MSE,每个像素点的差异,等价于把每个图像拉成一个向量, 向量空间求两个点的距离,然后再用MAX归一化,$0<\frac{\sqrt{MSE}}{MAX_i}<1$, 推导出==> $\frac{1}{\sqrt{MSE}/MAX_{i}}>1$,取log后大于0,乘10大概是符合人类的数学观念。所以,两个图像越接近,PSNR越大;相比较MSE来说,MSE其实更强调是平均上一致,没有加入对比度这个效果,数学上来说就是没有将像素的空间拉到[0,1]。
MSE = $ \frac{1}{mn}\sum^{m-1}_{i=0}\sum^{n-1}_{j=0}[I(i,j)-K(i,j)]^2$
PSNR=$10*log_{10}(\frac{MAX^2_I}{MSE}$)PSNR=$20*log_{10}(\frac{MAX_I}{\sqrt{MSE}}) $=$10*log_{10}(\frac{1}{\sqrt{MSE}/MAX_{i}})$
$MAX_I$是表示图像像素值的最大值。PSNR的单位是dB.
PSNR:缺点,虽然加入对比度,但是没有加入细节的纹理信息,即高频信息,从公式作用来看,PSNR学习到的更偏向低频。所以相比较MSE loss模糊的情况不会有太大改观。
什么是Single image super-resolution
高分辨率$I_{HR}$,长宽通道a*h,a*w,c,低分辨率 $I_{LR}$,长宽通道h,w,c;
d:$I_{HR}->I_{LR}$,相当于下采样,a>1.$f=d^{-1}$,逆过程
$f(I_{LR})$=$I_{target}$=$I_{HR}$
这篇文章即是求解f.
方法
网络结构
超分辨率重建网络+感知网络+对抗网络(判别器)(李飞飞那篇,感知loss的文章)。
超分辨率重建网络如上表所示。文章解释两个不同其他网络的点,第一不用bicubic interpolation,原因是,过多的引入冗余,而且计算量大。
第二,不用transpose convolution ,原因是,过多的引入冗余,同时感受野增加了。另外,trans convolution容易产生checkerboard artifacts(棋盘的格子),需要加入而外的惩罚loss。
超分辨率重建网络=ResNet block(下采样path)+nearest upsampling(上采样路径),GT=$I_{bicubic}-GT_{origin}$.
感知网络下面将感知loss会提到。
对抗网络(判别器)下面会在对抗loss讲到
**训练**loss
- MSE 基于像素的MSE,上面将PSNR定义以及
- 感知函数loss(Perceptual loss)
一般用来改善纹理的生成。由于cnns的空间不变性,如果两张图像足够的相似,那么经过VGG19的网络的最后产生的特征map理论上是相似的。也就说一张图像输入到VGG19中,最后产生的特征map的每个通道有不同的意义,而且是从图像高维空间到特征map底维空间,自然这种方法比普通意义上的MSE更具有抽象意味。然后就有:
$L_{p}=||\phi(I_{est}-\phi(I_{HR}))||^{2}_{2}$
the feature map$\phi$,可微分。这篇文章为了即捕捉高频信息又捕捉低频信息,用了第二层和第五层池化层做MSE loss。
- 纹理搭配loss(Texture matching loss)
万变不离其宗,我们把VGG产生的特征map的每个通道想象成一个一个长度为m的向量,总共有n个这样的向量,所以$\phi(I)\in R^{n*m}$
$L_{T}=||G(\phi(I_{est}))-G(\phi(I_{HR})))||^{2}_{2}$
G(F)=$FF^{T}=\phi()*\phi()^{T}$=n个通道向量的平方
所以$G(F)\in R^{n*n}$
个人理解:$L_{T}$相对于$L_p$求的相应更高的点loss,而相应更低的loss可以忽视,从而纹理信息更容易被提取。个人认为效果不会差很多。
- Adversarial training loss
前面几篇博文已经讲到过这adversarial training loss在分割的应用,现在我们将集中讲到对抗网络在纹理在纹理网络中的运用。
对抗loss$L_A=-log(D(G(z)))$
判别器优化$L_{D}=-gt*log((D(x)))-(1-gt)*log(1-D(G(z)))$
判别器优化,最小化$L_D$,等价于最大logD(x),最小化$loss_{L_A}$
分成两个部分G是超分辨率重建网络,假如G重构出来数据足够假,将会有较大的对抗loss,如果足够小,将会有较小的对抗loss。
结果
E:MSE
P:感知loss
A:对抗loss
T:纹理loss
可以看到ENet-PAT看起来最真实。