引言:可逆架构其核心原理是过程可逆,应用到图像缩放任务中就是从高分辨率图像生成低分辨率图像的过程和从低分辨率图像生成高分辨率图像的过程相反且无损。
要学习IRN的具体原理解析,需要掌握几个基本知识点:
1、小波变换的作用:小波变换可以将高分辨率图像中的低频成份和高频成分分开,且将高频分量中的垂直分量和竖直分量等完全分开,形成的成分中高低频占比为3:1.
2、可逆架构:我们知道,深度学习可以看作一个多元函数,可逆架构根本上讲就是降采样的多元函数存在反函数。归根结底的讲,反函数就是可逆函数。
3、雅可比矩阵和雅可比行列式:多元方程组的一阶偏导的系数矩阵,是雅可比矩阵,如果该矩阵是方阵,则是雅可比行列式。如果雅可比行列式为0,表示该多元方程组函数相关,如果不为0,则表示再该一阶导点处存在反函数。这就是关键所在。所以我们在设计模型结构的时候,使用的线性映射方程组要满足雅可比行列式不为0,假设为1,逆过程的雅可比行列式也为1即可实现可逆过程。
降采样过程
y1 = x1 + self.F(x2)
y2 = x2.mul(torch.exp(self.s)) + self.G(y1)
上采样过程
y2 = (x2 - self.G(x1)).div(torch.exp(self.s))
y1 = x1 - self.F(y2)
所以,整体的模型思路就出来了:将一个高分辨率图片送入到小波变换中,分离出低频和高频信息,前三维为低频信息,后9维为高频信息,然后将高低频信息作为两个变量,组成两元方程组,使该方程组满足雅可比行列式为1,则该方程组存在反函数方程组,即可实现可逆架构。而我们知道,在传统上采样中,高频信息通常是不会保存,是要丢掉的,在这里因为可逆架构的原因,高频信息必须存在,所以为了不增加信息存储带来的负担,最好的方式就是将高频信息以某种特定的形式或者分布保存起来,再逆过程时直接用该分布代替高频信息。
但问题是如何使其变成一个标准分布,主要是根据损失函数,来使前三个维度形成低频分量图像,后面的维度形成高斯正态分布。这样就可以丢弃得到的高频信息,再上采样时使用随机正态分布来完成逆过程。
以上就是整个可逆架构的工作原理和逻辑!