赞
踩
仿照了这个博主的方法,读每一篇文献的时候都要问自己
它做了什么?用什么方法做的?效果如何?有什么缺点?
这些几个问题,以加深自己的理解。
参考了外网一个博主的博客几何深度学习:群等变卷积网络
参考了知乎回答:从群等变卷积网络到球面卷积网络
参考了一个lecture的PPT,链接一时没找到,有需要的话我再去找找。
这篇博客主要是对G-CNN的原理进行讲解,后续可能还会有对github源代码的解读,敬请期待!届时链接会贴在这里。
回顾一下“卷积/自相关”的公式 [ f ∗ g ] ( s ) = ∫ − ∞ + ∞ f ( x ) g ( s − x ) d x {\left[ {f*g} \right]\left( s \right) = \int_{ - \infty }^{ + \infty } {f\left( x \right)} g\left( {s - x} \right)dx} [f∗g](s)=∫−∞+∞f(x)g(s−x)dx
[ f ⋆ g ] ( s ) = ∫ − ∞ + ∞ f ( x ) g ( s + x ) d x {\left[ {f \star g} \right]\left( s \right) = \int_{ - \infty }^{ + \infty } {f\left( x \right)} g\left( {s + x} \right)dx} [f⋆g](s)=∫−∞+∞f(x)g(s+x)dx
这里s都是Z^2上的点。可见要实现卷积/自相关,函数 f f f和 g g g有一个必须进行翻转或平移,而 s s s放在哪里,代表哪个函数要进行相应的翻转或平移操作。G-CNN的思想在于,它把图像可能存在的各种旋转、对称等操作丢给了滤波器,让输入保持不变,而滤波器进行各种变换,二者在数学上是等价的。
这个等价性非常重要,因为论文中的卷积运算,其实都是“相关”运算。卷积是 ∗ * ∗,而相关是 ⋆ \star ⋆。前面我都有注意区分,但是3.5.2之后我有些地方的 ∗ * ∗没有改成 ⋆ \star ⋆,大家注意下就好。(论文作者反正就是最开始声明下二者是可以互换的,然后就混用起来了,无语)
将图的变换等价为滤波器的变换,借鉴了群论思想。
输入图像经过G-CNN卷积层后的特征图具有群的结构,对输入图像进行任何在群中的变换,输出特征图都是不变的,因而对群中的操作具有鲁棒性。将输出特征图进行全连接层回归,进行预测即可。
不变性指的是,对输入进行一定的变换,输入会保持不变。以毕加索的画为例,无论输入的画风多么艺术化,如果网络的识别结果都是“人”,则说明该网络具有不变性。
等变性是函数上的概念。
在变换群 G G G和域 X X X下,函数 Φ \Phi Φ被认为是等变的,当下式成立:
Φ ( T g 1 ( x ) ) = T g 2 ( Φ ( x ) ) ∀ ( x , g ) ∈ ( X , G ) \Phi \left( {T_g^1\left( x \right)} \right) = T_g^2\left( {\Phi \left( x \right)} \right)\;\;\forall \left( {x,g} \right) \in \left( {X,G} \right) Φ(Tg1(x))=Tg2(Φ(x))∀(x,g)∈(X,G)
注:一般而言,这里的 x ∈ Z 2 x \in Z^2 x∈Z2。其实 x x x代表的是一张图像,写成 f ( x ) f(x) f(x)会更容易理解。 f ( x ) f(x) f(x)的意思是,在坐标 x x x处,像素的值为 f ( x ) f(x) f(x)。此时 Φ ( T g 1 ( x ) ) = T g 2 ( Φ ( x ) ) \Phi \left( {T_g^1\left( x \right)} \right) = T_g^2\left( {\Phi \left( x \right)} \right)\; Φ(Tg1(x))=Tg2(Φ(x))就可以写成 Φ [ T g 1 [ f ( x ) ] ] = T g 2 [ Φ [ f ( x ) ] ] \Phi \left[ {T_g^1\left[ {f\left( x \right)} \right]} \right] = T_g^2\left[ {\Phi \left[ {f\left( x \right)} \right]} \right]\; Φ[Tg1[f(x)]]=Tg2[Φ[f(x)]]。
其中 x x x属于域 X X X,比如平面实数域 R 2 R^2 R2,整数域 Z Z Z等等; g g g属于群 G G G, T g 1 T_g^1 Tg1和 T g 2 T_g^2 Tg2都是 g g g的算子形式。举个例子,如果 G G G是 p 4 p4 p4群, g g g就可以 r r r,也就是旋转 90 90 90度。而 T g T_g Tg是对 g g g的算子实现,根据作用对象的不同可以有很多形式。作为具体的算子形式, T g 1 T_g^1 Tg1和 T g 2 T_g^2 Tg2不一定完全一样,但是他们实现的“效果”是一样的。下图就是旋转的一种矩阵实现,也可以有很多其他方法。
等变其实就是算符和函数间能够互相交换,存在对易性。
通俗点解释就是,对原图进行 T g T_g Tg变换,和对原图的特征图进行 T g T_g Tg变换,得到的输出是一样的。
二者对比:
不变性: Φ ( T g ( x ) ) = Φ ( x ) \Phi \left( {
{T_g}\left( x \right)} \right) = \Phi \left( x \right) Φ(Tg(x))=Φ(x)
等变性: Φ ( T g 1 ( x ) ) = T g 2 ( Φ ( x ) ) \Phi \left( {T_g^1\left( x \right)} \right) = T_g^2\left( {\Phi \left( x \right)} \right)\; Φ(Tg1(x))=Tg2(Φ(x))
CNN对平移具有等变性
CNN对旋转不具有等变性
稍后会进行更详细的解释和证明。
假设有一个仙人掌的照片, r r r代表顺时针旋转90°, m m
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。