SphereNet(2018)
์ด ํฌ์คํธ๋ ์ ๊ฐ ๊ฐ์ธ์ ์ธ ์ฉ๋๋ก ์ ๋ฆฌํ ๊ธ ์ ๋๋ค.
SphereNet: Learning Spherical Representations for Detection and Classification in Omnidirectional Images (ECCV 2018) pdf
- Unofficial github: ๊ณต์ ๊ตฌํ์ ์๋๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์ง์ ๊ตฌํํ ๋ชจ๋ธ์ด๋ค.
- SphereConv2D & SphereMaxPool2D
- Kernel Pattern Look-up Table
- Uniform sampling
- OmniMNIST
- Spherical Object Detection
- SphereConv2D & SphereMaxPool2D
Kernel Sampling Method
โ โThe central idea of SphereNet is to lift local CNN operations from the regular image domain to the sphere surface where omnidirectional images can be represented without distortions.โ
โ โThis is achieved by representing the kernel as a small patch tangent to the spehre.โ
- $S$: unit sphere
- $S^2$: its surface
- $\mathbf{s} = (\phi, \theta) \in S^2$
- ์ $\mathbf{s}$๊ฐ $S^2$ ์์ ์์ด, ์ขํ๊ฐ ์๋/๊ฒฝ๋๋ก ํํ๋๋ค๋ ๋ง์ ๊ณง โequirectangular image ์์ ์๋คโ๋ ๋ง์ด๋ค.
- $\Pi$: tangent plane located at \(\mathbf{s}_{\Pi} = (\phi_{\Pi}, \theta_{\Pi})\)
- $\mathbf{x}$ : a point on $\Pi$ by its coordinates $\mathbf{x} \in \mathbb{R}^2$
- $\Pi_0$: tangent plane located at $\mathbf{s} = (0 ,0)$.
โ โA point $s$ on the sphere is related to its tangent plane coordinates $\mathbf{x}$ via a gnomonic projection.โ
Sampling at the center
Equirectangular์ ์ค์ฌ์์ ์ํ๋ง = step size $\Delta_{\theta}$, $\Delta_{\phi}$ ๋งํผ sampling ํจ.
\[\begin{aligned} \mathbf{s}_{(0, 0)} &= (0, 0) \\ \mathbf{s}_{(\pm 1, 0)} &= (\pm \Delta_{\theta}, 0) \\ \mathbf{s}_{(0, \pm 1)} &= (0, \pm \Delta_{\phi}) \\ \mathbf{s}_{(\pm 1, \pm 1)} &= (\pm \Delta_{\theta}, \pm \Delta_{\phi}) \end{aligned}\]์ค์ ๋ ผ๋ฌธ์์์ notation
์๋์ ๊ณต์๋ค๊ณผ notation์ด ์ฝ๊ฐ ์ ๋ง์์, ํฌ์คํธ์ ๋ฐฉ์์ผ๋ก $\phi$์ $\theta$ ์์๋ฅผ ๋ฐ๊ฟจ๋ค.
์ด๋, ๊ฐ sampling point๋ค์ด tangent plane $\Pi_0$์ ์ด๋์ ์๋์ง ๊ณ์ฐํ ์ ์๋ค. gnomonic projection์ ์ด์ฉํด ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
๊ทธ๋์ Sampling pattern \(\mathbf{s}_{(j, k)}\)๋ ๊ณง, ์๋์ ๊ฐ์ kernel pattern $\mathbf{x}_{(j, k)}$๋ฅผ ์ ๋ํ๋ค.
\[\begin{aligned} \mathbf{x}_{(0, 0)} &= (0, 0) \\ \mathbf{x}_{(\pm 1, 0)} &= (\pm \tan \Delta_{\theta}, 0) \\ \mathbf{x}_{(0, \pm 1)} &= (0, \pm \tan \Delta_{\phi}) \\ \mathbf{x}_{(\pm 1, \pm 1)} &= (\pm \tan \Delta_{\theta}, \pm \sec \Delta_{\theta} \tan \Delta_{\phi}) \end{aligned}\]๊ณต์ ์ ๋
์์ ๊ณต์์ด ์ ์๋ฟ์ง ์์์ ์ง์ ์ ๋ํด๋ณด๋ ค๊ณ ํ๋ค.
๋จผ์ $\mathbf{s}_{(0, 0)} = (0, 0)$์ธ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
์ด๋ $(\theta_{\Pi_0}\, , \phi_{\Pi_0}) = (0, 0)$์ด๋ค.
์ด์ ๊ณต์์ ๋์ ํด๋ณด์.
\[\begin{aligned} x(0, 0) &= \frac{\cos 0\sin (0 - 0)}{\sin 0 \sin 0+ \cos 0\cos 0\cos (0- 0)} = 0\\ \\ y(0, 0) &= \frac{\cos 0 \sin 0- \sin 0\cos 0\cos (0- 0)}{\sin 0 \sin 0+ \cos 0\cos 0\cos (0- 0)} = 0 \end{aligned}\]๊ทธ๋ผ ๋ถ์์ ํ ์ด ๋ชจ๋ 0์ด ๋๊ธฐ ๋๋ฌธ์, ์์์ ์ ๋ํ $\mathbf{x}_{(0, 0)} = (0, 0)$์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ผ๋จ ๋ค์ ๊ณผ์ ์ ์งํํ๊ธฐ ์ ์ $(\phi_{\Pi_0}\, , \theta_{\Pi_0}) = (0, 0)$์ ๋ง์ถฐ์ ๊ณต์์ refine ํ์.
\[\begin{aligned} x(\theta, \phi) &= \frac{\cos \phi \sin (\theta - 0)}{\sin 0 \sin \phi + \cos 0\cos \phi \cos (\theta - 0)} \\ &= \frac{\cos \phi \sin \theta}{\cos \phi \cos \theta} = \frac{\sin \theta}{\cos \theta} = \tan \theta \\ \\ y(\theta, \phi) &= \frac{\cos 0 \sin \phi - \sin 0\cos \phi \cos (\theta - 0)}{\sin 0 \sin \phi + \cos 0\cos \phi \cos (\theta - 0)} \\ &= \frac{\sin \phi}{\cos \phi \cos \theta} = \frac{\tan \phi}{\cos \theta} \end{aligned}\]์ด๋ฒ์๋ \(\mathbf{s}_{(\pm 1, 0)} = (\pm \Delta_{\theta}, 0)\)์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
์ด๋, $(\theta_{\Pi_0}\, , \phi_{\Pi_0}) = (0, 0)$์ด๋ค.
๊ณต์์ ๋์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
\[\begin{aligned} x(\pm \Delta_{\theta}, 0) &= \frac{\sin \theta}{\cos \theta} = \frac{\sin (\pm \Delta_{\theta})}{\cos (\pm \Delta_{\theta})} = \pm \tan \Delta_{\theta}\\ \\ y(\pm \Delta_{\theta}, 0) &= \frac{\tan 0}{\cos \pm \Delta_{\theta}} = 0 \end{aligned}\]๊ทธ๋์ ์์์ ์ ๋ํ \(\mathbf{x}_{(\pm 1, 0)} = (\pm \tan \Delta_{\theta}, 0)\)์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
Inverse gnomonic projection
์์์๋ kernel์ ์ค์ฌ์ \(\mathbf{s}_{\Pi_0} = (0, 0)\)์ผ๋ก ์ก์๋ค๋ฉด, ์ด๋ฒ์๋ \(\mathbf{s}_{\Pi} = (\theta_{\Pi}, \phi{\Pi})\)๋ก ์ก์.
์ด๋, kernel paattern $\mathbf{x} = (x, y)$์์ sampling pattern $\mathbf{s} = (\theta, \phi)$๋ ์๋์ ๊ฐ์ด ์ ๋ํ ์ ์๋ค.
์์์ด ๋ง์ด ๋ณต์กํ๋ฐ, ๊ฐ๋จํ ์ผ์ด์ค์ธ $\mathbf{s}_{\Pi_0} = (0, 0)$์์ ์ดํด๋ณด์.
์ฌ์ค ์ด ๊ณต์์ ์์์ ์ดํด๋ณธ, sampling pattern $\mathbf{s} = (\theta, \phi)$์์ kernel paattern $\mathbf{x} = (x, y)$๋ฅผ ์ ๋ํ๋ ๊ณต์์ ์ญํจ์๋ค.
Implementation
Equirectangular Image์์ row์ ๋ํ ์ ๋ณด๊ฐ ๊ฐ๋ค๋ฉด ๋ชจ๋ ๋์ผํ kernel sampling deviation์ ๊ฐ์ง kernel์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ์ด๊ฒ์ row์ ๋ฐ๋ผ ๊ณ์ฐํ์ฌ look-up table์ ์ ์ฅํ ํ ๊บผ๋ด ์ด๋ค๋ ๋ง์ด๋ค.
Experiment
Spherical Image Classification
Conv layer์ Pool layer๋ฅผ SphereConv์ SpherePool๋ก ๊ต์ฒดํด์ฃผ๋ฉด ๋๋ค.
ํ-๋ฒ
Spherical Object Detection
Spherical Single Shot MultiBox Detector(Sphere-SSD)๋ฅผ ์ ์ํ๋ค.
ํฅ๋ฏธ๋ก์ด ์ ์ IoU๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ๋ polygonal region์ ๋์ผํ tangent plane์ ๋งคํํ์ฌ ๊ทธ ์ํ์์ IoU๋ฅผ ๊ตฌํ๋ค๋ ์ ์ด๋ค. Equirectangular Image์์ IoU๋ฅผ ๊ตฌํ์ง ์์ ์ ์ด ํฅ๋ฏธ๋กญ๋ค.
Classification: Omni-MNIST
์-๋ต
Object Detection: FlyingCars
360 ์ด๋ฏธ์ง์ ๋ํ Dataset์ด ๋ถ์กฑํ์ฌ ๋ ผ๋ฌธ์์ ์์ฒด์ ์ผ๋ก FlyingCars Dataset์ ๋ง๋ค์๋ค๊ณ ํ๋ค.
๋จ์ํ๊ฒ 360 ์ด๋ฏธ์ง์ 3D car model์ ๋ถ์ธ ํ์์ด๋ผ๊ณ ํ๋ค.
๊ธฐ์กด 360 ์ด๋ฏธ์ง Detection ๋ฐฉ๋ฒ๋ณด๋ค ๊ฐ์ ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋์๋ค.
์ฃผ๋ชฉํ ์ ์ Detection๋ ์ด๋ฏธ์ง๋ฅผ ์ดํด๋ณด๋ฉด, Equirectangular์ Discontinuity ๋ฌธ์ ๋ฅผ ์๋ฒฝํ๊ฒ ํด๊ฒฐํ๊ณ ์๋ค๋ ์ ์ด๋ค!!
Transfer Learning: OmPaCa
๊ธฐ์กด์ perspective dataset์์ ํ์ต๋ ๋ชจ๋ธ์ Spherial Layer๋ฅผ ์ ์ฉํ ์คํ์ด๋ค.
๋ ผ๋ฌธ์์ ์คํ์ ์ํด Omnidirectional Parked Cars(OmPaCa) Dataset์ ์๋กญ๊ฒ ์ ์ํ๋ค.
KITTI Dataset1์์ ํ์ต์ํจ perspective SSD model์ Sphere-SSD ๋ชจ๋ธ๋ก ๋ณํํ์ฌ fine-tune ํ์๋ค.
-
UC Berkeley์์ ๊ณต๊ฐํ โ์์จ์ฃผํ์ฉ ํ์ต ๋ฐ์ดํฐโ์ด๋ค.ย ↩