SphereNet是适应全景图的卷积方式(学习框架),他通过扭曲卷积核元素的位置来抵消全景图的扭曲。SphereNet可以将透视图训练得到到的模型迁移在全景图上。 核心思想和EquiConvs类似。
改进采样方式,使用球面平均采样避免在全景图上靠近极点的地方过采样。
Introduction
为什么要提出SphereNet?
全景图正常是投影在球面的,此时不会扭曲。当时显示设备是2D,所以要把一个球面图像投影2D平面就需要做等距投影(equirectangular projection),此时这个图像称为等距图像(equirectangular image)。一个物体在等距图像的不同位置外观是会变换的,特别是再靠近极点地方,所以全景图会有扭曲失真情况。
而常规CNN,需要更多参数或训练数据/时间来学习全景图的这种扭曲。而且全景图数量少、标注困难,所以需要SphereNet其将几何变换直接引入CNN。
由于改变的是卷积核元素的采样位置,其他参数不用修改,所以是可以很方便从透视图迁移到全景图。
Related Work
- 利用权重图,每个像素当做顶点根据位置不同设置不同权重,实现使用图卷积网络,但是没有解决边界问题,只能用于小图(50 x 50)
- spherical CNNs将旋转不变性编码到网络中,但是原论文只给出分类实验,是否能够方便迁移到其他任务?
- 在靠近极点地方增大卷积核的大小,这种是对等矩形表示中扭曲的一种简单的近似,意味着权重只能沿着每一行共享,从而导致模型参数的显著增加
- 使用盒型投影,理解为6面图,每面是FOV=90的透视图。在边界地方不连续。
Method
Kernel Sampling Pattern
定义单位(半径为1)球为
S
S
S,球的表面为
S
2
S^2
S2,球上一点为
s
=
(
ϕ
,
θ
)
\mathbf{s}=(\phi, \theta)
s=(ϕ,θ),其中纬度
ϕ
∈
[
−
π
2
,
π
2
]
\phi \in\left[-\frac{\pi}{2}, \frac{\pi}{2}\right]
ϕ∈[−2π,2π] 和经度
θ
∈
[
−
π
,
π
]
\theta \in[-\pi, \pi]
θ∈[−π,π]。
定义切平面 Π \Pi Π,其中心位于 s Π = ( ϕ Π , θ Π ) \mathbf{s}_{\Pi}=\left(\phi_{\Pi}, \theta_{\Pi}\right) sΠ=(ϕΠ,θΠ),例如: Π 0 \Pi_{0} Π0表示经纬度都为0的切平面,即中心在 s = ( 0 , 0 ) \mathbf{s}=(0,0) s=(0,0)。
在 Π 0 \Pi_{0} Π0切平面上本地坐标用 x ( j , k ) \mathbf{x}_{(j, k)} x(j,k), j , k ∈ { − 1 , 0 , 1 } j, k \in\{-1,0,1\} j,k∈{−1,0,1}表示卷积核元素位置,如下:
x ( 0 , 0 ) = ( 0 , 0 ) x ( ± 1 , 0 ) = ( ± tan Δ θ , 0 ) x ( 0 , ± 1 ) = ( 0 , ± tan Δ ϕ ) x ( ± 1 , ± 1 ) = ( ± tan Δ θ , ± sec Δ θ tan Δ ϕ ) \begin{aligned} \mathbf{x}_{(0,0)} &=(0,0) \\ \mathbf{x}_{(\pm 1,0)} &=\left(\pm \tan \Delta_{\theta}, 0\right) \\ \mathbf{x}_{(0,\pm 1)} &=\left(0, \pm \tan \Delta_{\phi}\right) \\ \mathbf{x}_{(\pm 1,\pm 1)} &=\left(\pm \tan \Delta_{\theta}, \pm \sec \Delta_{\theta} \tan \Delta_{\phi}\right) \end{aligned} x(0,0)x(±1,0)x(0,±1)x(±1,±1)=(0,0)=(±tanΔθ,0)=(0,±tanΔϕ)=(±tanΔθ,±secΔθtanΔϕ)
比如
x
(
±
1
,
0
)
=
(
±
tan
Δ
θ
,
0
)
\mathbf{x}_{(\pm 1,0)}=\left(\pm \tan \Delta_{\theta}, 0\right)
x(±1,0)=(±tanΔθ,0)的表示:
对比EquiConvs,其实区别就在这个平面,SphereNet使用的是在点
s
=
(
ϕ
,
θ
)
\mathbf{s}=(\phi, \theta)
s=(ϕ,θ)的切平面,而EquiConvs使用的是边长等于夹角弧长的平面,2者区别在于平面中心点到球心的距离,SphereNet为1,EquiConvs为d=r/2tan(α/2),相同点是平面的fov与卷积核窗口对应的fov一致。
当切平面不在原点时,卷积核元素的切平面本地的平面坐标:
x
(
ϕ
,
θ
)
=
cos
ϕ
sin
(
θ
−
θ
Π
)
sin
ϕ
Π
sin
ϕ
+
cos
ϕ
Π
cos
ϕ
cos
(
θ
−
θ
Π
)
y
(
ϕ
,
θ
)
=
cos
ϕ
Π
sin
ϕ
−
sin
ϕ
Π
cos
ϕ
cos
(
θ
−
θ
Π
)
sin
ϕ
Π
sin
ϕ
+
cos
ϕ
Π
cos
ϕ
cos
(
θ
−
θ
Π
)
\begin{aligned} x(\phi, \theta) &=\frac{\cos \phi \sin \left(\theta-\theta_{\Pi}\right)}{\sin \phi_{\Pi} \sin \phi+\cos \phi_{\Pi} \cos \phi \cos \left(\theta-\theta_{\Pi}\right)} \\ y(\phi, \theta) &=\frac{\cos \phi_{\Pi} \sin \phi-\sin \phi_{\Pi} \cos \phi \cos \left(\theta-\theta_{\Pi}\right)}{\sin \phi_{\Pi} \sin \phi+\cos \phi_{\Pi} \cos \phi \cos \left(\theta-\theta_{\Pi}\right)} \end{aligned}
x(ϕ,θ)y(ϕ,θ)=sinϕΠsinϕ+cosϕΠcosϕcos(θ−θΠ)cosϕsin(θ−θΠ)=sinϕΠsinϕ+cosϕΠcosϕcos(θ−θΠ)cosϕΠsinϕ−sinϕΠcosϕcos(θ−θΠ)
卷积核元素的切平面本地的平面坐标反推到球(等距投影图片)上的经纬坐标
ϕ
(
x
,
y
)
=
sin
−
1
(
cos
ν
sin
ϕ
Π
+
y
sin
ν
cos
ϕ
Π
ρ
)
θ
(
x
,
y
)
=
θ
Π
+
tan
−
1
(
x
sin
ν
ρ
cos
ϕ
I
I
cos
ν
−
y
sin
ϕ
I
I
sin
ν
)
\begin{array}{l} \phi(x, y)=\sin ^{-1}\left(\cos \nu \sin \phi_{\Pi}+\frac{y \sin \nu \cos \phi_{\Pi}}{\rho}\right) \\ \theta(x, y)=\theta_{\Pi}+\tan ^{-1}\left(\frac{x \sin \nu}{\rho \cos \phi_{I I} \cos \nu-y \sin \phi_{I I} \sin \nu}\right) \end{array}
ϕ(x,y)=sin−1(cosνsinϕΠ+ρysinνcosϕΠ)θ(x,y)=θΠ+tan−1(ρcosϕIIcosν−ysinϕIIsinνxsinν)
其中,
ρ
=
x
2
+
y
2
\rho=\sqrt{x^{2}+y^{2}}
ρ=x2+y2 ,
ν
=
tan
−
1
ρ
\nu=\tan ^{-1} \rho
ν=tan−1ρ
整体过程为:
切平面本地的经纬坐标 -> 切平面本地的平面坐标 -> 球(等距投影图片)的经纬坐标
实现方面,卷积核元素的相对位置,在等距投影图像上每一行是一样的。可以使用查找表存储起来。由于反推得到的卷积核元素位置时带有小数,可以使用双线性插值或者最近邻插值,比如在希望得到特征图
f
f
f,位置
(
p
x
,
p
y
)
\left(p_{x}, p_{y}\right)
(px,py)处的值:
f
(
p
x
,
p
y
)
=
∑
n
H
∑
m
W
f
(
m
,
n
)
g
(
p
x
,
m
)
g
(
p
y
,
n
)
f\left(p_{x}, p_{y}\right)=\sum_{n}^{H} \sum_{m}^{W} f(m, n) g\left(p_{x}, m\right) g\left(p_{y}, n\right)
f(px,py)=n∑Hm∑Wf(m,n)g(px,m)g(py,n)
bilinear interpolation kernel:
g
(
a
,
b
)
=
max
(
0
,
1
−
∣
a
−
b
∣
)
g(a, b)=\max (0,1-|a-b|)
g(a,b)=max(0,1−∣a−b∣)
nearest neighbor kernel:
g
(
a
,
b
)
=
δ
(
⌊
a
+
0.5
⌋
−
b
)
g(a, b)=\delta(\lfloor a+0.5\rfloor-b)
g(a,b)=δ(⌊a+0.5⌋−b)
δ
(
⋅
)
\delta(\cdot)
δ(⋅)论文中描述为Kronecker delta function???。
但是表示=0为1,!=0为0更合理一些。
Uniform Sphere Sampling
如果在等距投影图像上均匀采样,那么在球面上(右边蓝色)靠近极点的地方是更密集的,这也就意味着,如果使用相同步长,在靠近极点的地方步长更"短"了,也就导致过采样。所以提出球面平均采样避免在全景图上靠近极点的地方过采样。
Spherical Image Classification
将SphereNet集成到图像分类网络中,不引入新的模型参数,也不需要改变网络的训练
Spherical Object Detection
需要利用anchor的物体检测网络,比如SSD、Faster-RCNN、YOLO2/3。和卷积核一样需要对anchor进行投影计算扭曲位置。
Experimental Evaluation
本文提出应用在全景图上的卷积方法,改方法重新计算卷积核元素位置,需要考虑训练/测试时间花费情况和实现复杂程度。