论文名称:
Understanding Deep Image Representations by Inverting Them, CVPR 2015
Prerequisite:Convolutional Neural Network, Linear Algebra, Integral,
需要熟悉CNN的训练流程,达到可以剖析每一步是干什么用的程度。知道loss function作用,和CNN是怎么encode图像的概念。
==========Motivation==========
这篇文章我没有看完,或者可以说是挑着我最关心的问题看的,就是Total Variation。其他的跟我的研究无关,所以暂且只讲这一个点。
一开始看这篇论文的初衷是因为我看过的前一篇关于Perceptual Loss的文章。其中的loss由三部分组成,perceptual loss,L2 loss 和 total variation。perceptual loss 和L2好理解,可是total variation一笔带过,根本没有细说。后来在我训练的应用中发现这个loss几乎不怎么收敛。所以我希望搞明白从数学层面上这到底是个什么,在做什么事情。这样我就可以根据自己的研究调整参数,甚至如果根本不需要加这个loss可以干脆去掉。
在进行了大量的调研之后,找到了一些有用的东西。首先是Perceptual loss的作者Justin Johnson在他的github上回复了别人的类似疑问,这里。Justin把解释指向本论文的一段说明。但是其实本文也没有细说total variation是个啥,只是在应用的层面上给出了经验性的实验结果。即调整不同的参数对输出图像的影响。
Total Variation(TV)的方程是这样的:
但是在图像中,连续域的积分就变成了像素离散域中求和,所以可以这么算:
也就是说,求每一个像素和横向下一个像素的差的平方,加上纵向下一个像素的差的平方。然后开β/2次根。
文中对β的取值有所描述。当β < 1时,会出现下图左侧的小点点的artifact。
当β > 1时,图像中小点点会被消除,但是代价就是图像的清晰度。
其实,这个效果最先来源于Nonlinear total variation based noise removal algorithms这篇论文。Rubin等人在1990年左右观察到受噪声污染的图像的TV比无噪图像的总变分明显的大[1]。 那么最小化TV理论上就可以最小化噪声。至于从数学层面上的意义到底是什么,为什么算偏导数的平方,我也不明白。在这里,视频的发布者对于TV的直观理解有一个相对比较清晰地解释。
也就是说,图片中相邻像素值的差异可以通过降低TV loss来一定程度上解决。比如降噪,对抗checkerboard等等。
Reference: