理解SPHERICAL CNNS
这篇是从代码的角度理解的, 详细的论文解读移步:球面卷积
作者Taco Cohen这篇文章旨在提取球面图形的特征,于是构造了球面CNN。作者是如何实现的呢?
让我们先回顾一下传统的卷积,传统卷积的图像和卷积核都是平面的,所以只要不停的平移卷积核,让卷积核和图像对应部分的像素相乘累加,累加后的结果就是一张张的feature map(特征图)。那对于球面图像,也可以用卷积核平移的方法吗?答案是当然不行,无论怎么平移,它始终是在一个二维的平面,而我的球面图像是在三维空间的,所以传统的卷积方法对于球面图像已经不适用了。传统的卷积用滤波器平移的方法是为了遍历整幅平面图像,类比一下,如果要遍历整个球面图像,可以用滤波器的旋转啊,当然,这个滤波器也是球面的。
那么,问题就来了,我们所知道的像素网格(一个个方块)是具有平移对称性的,也就是说平移前和平移后,像素的形状大小不变。如下图:
但是如果旋转的话,这种像素网格不具备旋转对称性,直观理解为旋转后两像素不重合,如下图:
所以,我们在卷积(旋转滤波器)之前,需要对原来的图像做一个resample,也就是找到一个满足旋转对称性的像素网格。简单的说,作者的做法是利用球极平面投影将S2投影到平面上,再通过双线性插值求得投影后每个坐标对应的像素值,这样原来的图像就具有旋转对称性啦。
具体的说,以论文代码example中的mnist为例:
作者首先生成一个球形的网格,该网格中心在原点半径大小为1,它代表的意义就是论文中提到的S2,即单位球:
然后把这个网格投影到平XOY平面上,使其坐标为(rx,ry)(实际投影后的点会密很多,但是画点太难了,我就意思意思):
然后把这个投影后的像素网格的中心移到mnist图像的中心,使他们几何中心对齐。图像在坐标轴中,一般都是图像左上角在坐标原点O,所以mnist数据图像的中心在坐标(14,14):(下面那个图是数字5哦)
下面就是离散化rx,ry(蓝色的点),因为浮点数坐标在图像中是没有办法用的,所以把它变成整数坐标:(蓝色的点是原来的网格,橘黄色是离散化后的点:
后面要做的就是双线性插值,从而找到每个rx,ry(蓝色的点)的像素值,最后就会返回一张球面图像,同时图像的像素不再是传统的方格,而是球形的网格。
图像数据的问题解决了,下面就可以对这些图像做卷积了,如何重新定义这个“旋转”的卷积呢?
首先,我们对旋转一个函数做定义,在量子力学中,有公式** L R f ( x ) = f ( R − 1 x ) L_Rf(x)=f(R^{-1}x) LRf(x)=f(R