旋转等变卷积讲座观后感
我人生的第一篇会议记录🍍
以下是 Fourier Series Expansion Based Filter Parametrization for Equivariant Convolutions 这场汇报的观后感。真的挺难的,会议结束后我又看了很久论文,现在还是有不理解的地方。但解答剩下的疑惑,可能要在我未来看懂了代码之后了。
等变卷积
🍵要理解这场报告,首先就要理解什么是等变卷积。
我理解的等变卷积,就是说这样的一类卷积,当输入图像中物体发生了平移或者旋转等变化时,输出的特征图也会在对应位置发生对应的变化,或者说只有输出的位置会变化,值基本不变。后续的全连接层会学到这种性质——比如训练数据里,有时候车在左上角,有时候在右下角,有时候在中间…… 但是测试数据里,出现了一辆车在左下角,但网络仍能分类正确。换句话说,神经网络发现了,这个分类任务和对象的位置无关。
☕有时候,我们还希望分类任务和对象的旋转或对称无关,这就引出了新的卷积,如旋转等变卷积。
权值共享
我的理解是,因为一个卷积核是在整个输入图像上滑动,所以可以认为每个像素“共享”了卷积核的权值。这种共享大幅减少了参数的数量,否则的话参数数量将是乘数级(输入像素个数*特征图像素个数)
传统卷积的特点
一般来说,传统的 CNN 是具有平移不变性的,但不具有旋转或缩放不变性。
学过基础的 CNN 之后,我们会注意到一个特点,或者说是 CNN 的一种核心思想?一辆汽车,停在画面左边,我们能“识别”,停到画面右边,我们也能“识别”,我们希望这种识别是“真正地认识了汽车”,而不是把左边的汽车和右边的汽车看作了两种物体。
或许有些难理解,但如果某个网络不具有这样的平移不变性,那么让它识别汽车,就需要一个很庞大的网络——因为左侧的汽车和右侧的汽车会让浅层网络产生完全不同的输出(不仅是位置变了),那么你的比较深的那几层网络(比如全连接层),就必须足够复杂,把这些完全不同的输出都处理成“汽车”。你会发现,这或许比原始的全连接网络没简单多少。
CNN 之所以能被广泛使用,其中一个原因就是,我们不需要把原图的所有像素作为输入进行全连接了,而是可以通过一系列卷积操作,把特征一级一级地提取出来,最后交给全连接层的输入就很少,参数量就很小。而这种优点,就来自于卷积操作的平移不变性。无论对象在图像中的位置如何变化,使用相同的卷积核进行卷积操作,特征图的相应部分也会相应地移动,从而保持了平移等变性。之后的全连接层对位置是不敏感的,全连接层会发现,某一组特征不管是出现在左侧还是右侧,结果都是汽车。这就使得网络对于对象位置的变化更加鲁棒。
新的等变卷积的特点
我们希望,可以找到一种新的卷积,这种卷积可以对旋转或对称操作也具有不变性,这将大幅提高网络的性能,对于生物医学显微镜和天文图像等图像的计算机视觉任务非常有帮助。
然而,这是十分困难的。
想象一幅图,它是由一个个像素点构成的,在计算机看来就是一个矩阵。如何确定变换后的像素点?平移的话,只需要每个像素的坐标加上横纵坐标的变化量就好,但如果图像发生了旋转,每个像素的位置将很难确定(计算出旋转后像素点的坐标,往往不是整数)。
我们无法让传统的卷积核旋转——原本一个 3*3的卷积核,顺时针旋转 45° 后是什么形状?
早期的等变 CNN 可以实现 π/2 度旋转和反射等变。这不难理解,卷积核一般是“方形”,将它旋转 90° 或者翻转还比较简单。也有人提出了用六边形格子替换常用的方形格子,将旋转等变扩展到π/3度旋转,但无论怎么做,我们都无法处理连续的旋转。
人们为了处理任意离散度数的旋转,开始提出新的方法。目前这些方法的基本思想是将待学习的滤波器定义为一组基函数(即初等滤波器)的线性组合,并学习组合系数,这就是滤波器参数化方法。然后通过旋转连续域中的基函数,可以将滤波器旋转到任意角度,并用它来构造旋转等变卷积。
这场汇报提出的方法是,基于傅里叶级数展开的等变卷积滤波器参数化。这种方法与之前的基于谐波基底、多项式基底的一些方法不同,可以 0 误差表示观测的离散卷积核,但是这种函数基底表示函数变换的时候就会观察到十分严重的混叠效应。
伪影
图像中出现的不真实的结构或特征,这些结构或特征是因为处理过程的缺陷导致的,比如原本图像中连续的线,被处理成了很多段走势不同的线。
混叠效应
我的理解是,如果对一个周期函数的采样频率太低,就会丢失很多信息,最后算法把它当作一个更低频的函数了。但在这场汇报里,要解决的问题是算法采用了高频的傅利叶基底来表示了低频的信息,但是在进行函数变换时会出现混叠效应。
看起来低频的图案,可能使用了很高频的傅利叶基底。
新方法利用高频和低频基底的对称性进行了改进,将基底全部改为低频,有效减小了混叠效应。数学上可以证明,改进前后的基底在没有函数变换时,是完全等价的。因此所提基底表示在没有函数变换时,也是 0 误差的。
核心内容
汇报的核心有这样几个公式:
$$
F(x,y)=\sum_{k=0}^{p-1}\sum_{l=0}^{p-1}[a_{kl}cos(k\frac{2\pi }{ph}x+l\frac{2\pi }{ph}y)+b_{kl}sin(k\frac{2\pi }{ph}x+l\frac{2\pi }{ph}y)]
$$
其中 p: filter size 滤波器的尺寸
h: mesh size 网格尺寸
理解这张 PPT 是理解整场汇报的关键,还好有朋友拍了照
对于上面的那个很长的式子,p 和 h 可以看作常数,然后我们通过改变 k 和 l 的值,可以得到一组”函数“。这组函数是一些正余弦函数的线性组合,就是图片里的那些。当 k 和 l 确定之后,$$ F(x,y)$$ 就只是 x 和 y 的函数,也就是图片里的那些圆形的卷积核(其实是最终卷积核的基底)。图中的每一个圆形图案,横轴是 x ,纵轴是 y ,颜色的深浅就是输出 F 。
我们可以观察到以下特征:
- 当 l 为 0 时,F 就只是 x 的函数,这时候得到的输出就都是竖直的条纹。反过来,当 k 为 0 时,得到的图像便都是水平条纹。这其实就是余弦和正弦的函数,这里白色的部分对应较大的输出。
- 当 l 和 k 不为 0 时,输出图像(也就是基底)便“旋转”了起来。比如当 l = k,对应的便是旋转了 45° 的基底。
- 我们发现了一个重要的问题——当 k 和 l 很大时,输出的基底与 k 和 l 很小时差不多!这是因为采样率的问题,就是我们上文提到的混叠效应,因为我们的基底尺寸不大,比如 11 *11 ,17 *17,那么随着 k 和 l 的增大,其实周期函数的周期在变短,频率增大,那么我们在这个连续函数上取出离散的 11 或 17 个点,就会有可能和很低频的情况下的结果相同。
- 而以往的经验告诉我们,当我们选用了很高频的基底,表示的结果就会很不稳定。
观察第一幅图,我们发现了低频和高频表示之间的对称性,于是我们自然就会有这样的想法——只使用低频基底,也就是图中红色的部分。这样我们便大幅减小了混叠效应。
新方法的成功之处
开篇我们介绍了CNN的成功原因,简而言之就是卷积操作能保证平移不变性,权值共享大幅减少了参数数量,提高了网络的泛化性能。而底层的特征中不仅还有平移的不变性,往往还会有旋转、镜像和缩放的不变性。
如果我们能使得不同角度下的相同结构,在网络底层就能得到相同的处理,那么高层就很容易学到这种不变性,从而优化网络的性能(减少参数、增强泛化性)。
以往比较常用的方法是数据扩充,简言之就是增加训练样本,比如把图像多次旋转后重复加入训练集。通过增加样本,以期网络能学到这种旋转的不变性。
之后经历过硬旋转时期,这个时期曾尝试将方格替换成六边形网格来增加旋转角度,但旋转的角度仍有限制。
再之后有过双线性旋转时期,但我还没看懂给出的论文。。。和图像处理里的双线性插值算法有关系吗?
最后就是现在的参数化卷积时期,这场汇报提出的基于傅里叶级数展开的滤波器参数化就是其中一种。
这是首个适用于底层视觉的旋转等变卷积
新方法在很多视觉任务中获得了更高的精度和更少的参数量。
在汇报的最后,简要介绍了尺度等变卷积和可动态调整卷积。
总结
汇报中提出了新的滤波器参数化方法,构建了旋转等变卷积。所提出的滤波器参数化可以被视为傅里叶级数展开的增强版本,并且利用低频傅里叶基的对称函数来代替高频傅里叶基来降低基的最大频率。
新方法继承了傅里叶级数展开在无旋转时的高精度,并且显著减轻了混叠效应。
提出的 F-Conv 是首个适用于底层视觉的旋转等变卷积。
🧃或许在遥远的未来我会回来继续修改这篇博客。那时,我需要搞明白这种新的卷积操作是怎样计算的。