Paper link : https://proceedings.neurips.cc/paper_files/paper/2015/hash/33ceb07bf4eeb3da587e268d663aba1a-Abstract.html
Spatial Transformer Networks
Requests for name changes in the electronic proceedings will be accepted with no questions asked. However name changes may cause bibliographic tracking issues. Authors are asked to consider this carefully and discuss it with their co-authors prior to reque
proceedings.neurips.cc
➡️ Abstract
CNN은 강력한 모델로 떠올랐지만, 여전히 입력 데이터에 대해 Spatial Invariance에 대한 계산 능력과 효율적인 파라미터 유지 능력이 부족하다는 한계가 있다. 본 논문에서는 추가적인 지도 학습이나 최적화 과정 없이도 feature map을 변환할 수 있는 학습가능한 모듈 Spatial Transformer를 연구했다. 이미지의 변환, 크기 조정, warping 등에 대한 Spatial Invariance를 효과적으로 학습할 수 있는 효과적인 모듈을 제안한다.
( * Spatial Invariance : 임의 변환된 입력 이미지에 대해서, 동일한 원본 이미지로 인식할 수 있는 성질 )
➡️ Introduction
CNN의 발전으로 Computer vision 분야는 큰 발전을 이룩했다. 비록 새로 개발된 모델 구조는 아니었지만, 이를 구조를 응용해서 Classfication, Localisation, Sematic Segmentation, Action Recogition 등 다양한 분야에서 최고의 성능을 확보할 수 있었다.
이미지 데이터를 추론하는 모델에게 기대하는 속성 중 하나는, Object의 질감과 모양으로부터 자세나 부분의 변화를 분리하는 것이다. CNN은 Max-pooling layer를 사용함으로써 위와 같은 속성인 Spatial invariance를 확보할 수 있었는데, 만약 입력 이미지 데이터에서 변화하는 부분이 너무 작거나 큰 경우에는 잘 인식하지 못하는 한계가 있었다.
본 논문에서 소개하는 Spatial Transformer 는 모델이 공간적인 변화를 잘 인지할 수 있게 만들어주는 모듈인데, 일반적인 neural network 구조에 쉽게 추가해서 사용할 수 있다. 또한 고정된 receptive field를 갖는 pooling layer와는 달리, Spatial Tranformer는 동적으로 적절한 변화점을 인식할 수 있게 해준다. 이러한 특성으로 인해서 단순히 변화가 일어나는 지점을 찾는 것 뿐만 아니라, 다음 layer의 연산을 돕기 위해 feature를 일반적으로(canonical) 변환하는 기능도 수행할 수 있다.
Spatial Transformer는 CNN 구조에 결합되어 다음과 같은 다양한 작업에 활용될 수 있다.
- Image Classifcation
- Figure1과 같이 숫자의 위치나 크기가 모두 다른 sample들에 대해서 Classifcation 과정이 원활하게 진행될 수 있도록 해당 모듈을 사용할 수 있다.
- Co-localisation
- 동일한(단, 알 수 없는) 클래스의 다른 인스턴스를 포함하는 이미지 집합이 주어지면, 해당 모듈을 통해 각 이미지에서 인스턴스를 위치 지정하는데 활용될 수 있다.
- Spatial Attention
- Attention 메커니즘을 필요로 하는 작업에 사용될 수 있는데, 이로 인해 낮은 해상도의 이미지를 고해상도의 이미지 처럼 사용할 수 있게 되어 계산 속도에서 이점을 가질 수 있다.
➡️ Related Work
( 중략 )
➡️ Spatial Tranformers
Spatial Transformer는 feed-forward 단계에서 하나의 feature map을 입력으로 받고 내부적으로 공간 변화 연산을 수행하며 하나의 feature map을 출력하는 미분가능한 모듈이다. 여러 channel을 갖는 입력의 경우에는, 각 channel에 대해 동일한 기능을 각각 수행한다. 단, 이 섹션에서는 설명의 편의를 위해서 입력 데이터는 하나의 channel을 갖는다고 가정한다.
✔️ Localisation Network
Localisation network은 입력으로 feature map \({U \in \mathbb{R}^{H \times W \times C}}\)을 받고 (\({W}\)는 너비, \({H}\)는 높이, \({C}\)는 channel 수), 출력으로는 \({\theta}\)를 반환한다. 출력 \({\theta}\)는 이후에 있을 변환 \({\mathcal{T}}_\theta\) 의 파라미터로, \({\theta} = f_{loc}(U)\)로 표현된다. \({\theta}\)의 크기는 변환의 종류에 따라서 달라질 수 있다. 예를 들어 Affine 변환의 경우 \({\theta}\)는 6차원을 갖는다.
✔️ Parameterised Sampling Grid
입력 feature map에 대한 warping 연산은 각 출력 "pixel"은 feature map의 특정 위치를 중심으로 하는 sampling kernel을 통과함으로써 계산된다. 여기서 "pixel"이라는 표현은 꼭 원본 이미지에서의 픽셀을 뜻하는것에 국한되지 않고, feature map에서의 픽셀도 아우른다. 일반적으로 출력 pixel들은 regular grid \(G = \{ G_i \} \) 위에 있는 것으로 정의되는데 ( \({G_i = ({x}^t_i, {y}^t_i))}\) ), 이때 출력 pixel들이 모여서 출력 feature map \({U \in \mathbb{R}^{H^{\prime} \times W^{\prime} \times C}}\) 를 구성한다. (\({W}^ {\prime} \)는 grid의 너비, \({H}^ {\prime} \)는 grid의 높이, \({C}\)는 입력 feature map에서와 동일한 channel수)
설명의 편의를 위해서 \({\mathcal{T}}_\theta\)는 2차원 Affine 변환 \({\mathbf{A}_\theta}\)라고 가정한다. (다른 변환들은 아래에서 재차 다룰 예정)
$ \left(\begin{array}{c}x_i^s \\ y_i^s\end{array}\right)=\mathcal{T}_\theta\left(G_i\right)=\mathrm{A}_\theta\left(\begin{array}{c}x_i^t \\ y_i^t \\ 1\end{array}\right)=\left[\begin{array}{lll}\theta_{11} & \theta_{12} & \theta_{13} \\ \theta_{21} & \theta_{22} & \theta_{23}\end{array}\right]\left(\begin{array}{c}x_i^t \\ y_i^t \\ 1\end{array}\right) \tag{1} $
\({(1)}\)번 식은 Affine 변환으로, pointwise transformation의 예시이다. \({ ({x}^t_i, {y}^t_i) }\)는 출력 feature map에서 grid의 target 좌표이고, \({ ({x}^{s}_i, {y}^{s}_i) }\)는 입력 feature map에서 정의된 source 좌표이다. 이때 각 입출력 공간에서의 높이와 너비는 정규화된 값을 사용한다 \(( -1 \leq {x}_i^s, {y}_i^s \leq 1, \;\; -1 \leq {x}_i^t, {y}_s^t \leq 1 )\)
$ \mathrm{A}_\theta=\left[\begin{array}{ccc}
s & 0 & t_x \\
0 & s & t_y
\end{array}\right] \tag{2} $
위와 같이 변환 \({\mathcal{T}}_\theta\)는 더 제한적(constrained)일 수 있는데, 다양한 \({s}, {t}_x, {t}_y\)의 값 변화에 따라 cropping, translation, isotropic scaling과 같은 변환 효과를 얻을 수 있다. 이 parameter가 8개가 되면 평면에 projection시키거나 piece-wise 아핀 변환, thin plate spline과 같이 조금 더 일반적인 변환도 할 수 있다. 앞선 내용들을 정리하면, 변환에 사용되는 parameter들이 어떻게 설정되냐에 따라 다양한 변환을 표현할 수 있고 이 parameter들이 미분가능하도록 구현하면 backpropagation을 통해 localisation network 출력 \({\theta}\)를 학습을 할 수 있다는 것이다. 예를들어 attention, affine, projection, thin plate spline 변환들이 표현 가능한 일반적이면서도 미분가능한 변환 \({\mathcal{T}}_\theta = M_{\theta}B\)가 있을 때, \({B}\)는 \({(1)}\)번 식에서 G와 동치로 target grid를 의미하며 \({M_\theta}\)는 \({\theta}\)로 parametrized 된 행렬이다. 이 경우에 입력 데이터에 대해서 \({\theta}\)를 학습을 할 수 있고, 작업의 종류에 따른 \({B}\) 행렬도 학습할 수 있다.
✔️ Differentiable Image Sampling
입력 feature map에 대해서 공간 변환을 수행하기 위해, sampler는 입력 feature map \({U}\)를 따라 샘플링된 점들의 집합인 \({\mathcal{T}}_{\theta}(G)\)를 입력받고 샘플링된 출력 feature map \({V}\)를 반환해야 한다. 모든 \({i}\)에 대해서 \(\mathcal {T}_\theta(G)\) 위의 \(({x}_i^s , {y}_i^s)\) 좌표들은 sampling kernel을 통과하여 output feature \({V}\) 위의 특정한 pixel로 변환된다. 이는 아래와 같은 식으로 표현할 수 있다.
$ V_i^c=\sum_n^H \sum_m^W U_{n m}^c k\left(x_i^s-m ; \Phi_x\right) k\left(y_i^s-n ; \Phi_y\right) \forall i \in\left[1 \ldots H^{\prime} W^{\prime}\right] \forall c \in[1 \ldots C] \tag{3} $
\({\Phi}_x\)와 \({\Phi}_y\)는 bilinear interpolation과 같이 일반화된 sampling kernel \(k\left(\right)\)의 parameter이다. \({U}_{nm}^c\)는 입력 데이터의 \({c}\)번 째 channel에서 \((n, m)\) 위치 값이고, \({V}_i^c\)는 \({c}\)번 째 channel의 \(({x}_i^t, {y}_i^t)\) 위치의 \({i}\) 번 째 pixel 출력 값이다. sampling 연산은 모든 channel에 대해서 독립적으로 수행됨으로써, channel 사이의 spatial consistency가 유지된다.
이론적으로 \({x}_i^s\) 와 \({y}_i^s\)에 대해서 미분이 가능하다면 다른 어떠한 sampling kernel을 사용해도 무방하다. 아래는 \({(3)}\) 번 식에 integer sampling kernel을 적용한 예시이다.
$ V_{i}^{c}=\sum_{n}^{I I}\sum_{m}^{W}U_{n m}^{c}\delta(\lfloor x_{i}^{s}+0.5\rfloor-m)\delta(\lfloor y_{i}^{s}+0.5\rfloor-n) \tag{4} $
\(\lfloor x+0.5\rfloor\) 는 \({x}\)를 가장 가까운 정수로 반올림(0.5를 더해준 다음 내림하게 되면 반올림을 하는 것과 같음)해주고 \({\delta}\) 는 Kronecker delta function이다. 이 kernel은 단순히 \(({x}_i^s, {y}_i^s)\) 에서 가장 가까운 pixel을 \(({x}_i^t, {y}_i^t\)로 복사하는 역할을 한다. 또 다른 예로는 bilinear sampling kernel을 사용하는 것이고, 그 식은 아래와 같다.
$ V_{i}^{c}=\sum_{n}^{I}\sum_{m}^{W}U_{n m}^{c}\,\mathrm{^{max}}^{}(0,1-\left|x_{i}^{s}-m\right|)\,\mathrm{max}(0,1-\left|y_{i}^{s}-n\right|) \tag{5} $
앞서 언급한 것 처럼 결국 sampling을 수행하면서 backpropagation을 가능하게 하려면, \({U}\) 과 \({G}\)에 대해서 미분가능해야한다. \({(5)}\) 번 식을 편미분하게 되면 아래와 같은 식을 얻을 수 있다.
$ \frac{\partial V_{i}^{c}}{\partial U_{n m}^{c}}=\sum_{n}^{H}\sum_{m}^{W}\mathrm{max}(0,1-|x_{i}^{s}-m|)\operatorname*{max}(0,1-|y_{i}^{s}-n|) \tag{6} $
$ \frac{\partial V_{i}^{c}}{\partial x_{i}^{s}}=\sum_{n}^{H}\sum_{m}^{W}U_{n m}^{c}\operatorname*{max}(0,1-|y_{i}^{s}-n|)\left\{\begin{array}{l l}{{0}}&{{\mathrm{if~}|m-x_{i}^{s}|\geq1}}\\ {{1}}&{{\mathrm{if~}m\geq x_{i}^{s}}}\\ {{-1}}&{{\mathrm{if~}m<x_{i}^{s}}}\end{array}\right. \tag{7} $
( \({(7)}\)번 식과 동일한 방식으로 \( \frac{\partial V_{i}^{c}}{\partial y_{i}^{s}} \)도 계산 가능하다. )
위 편미분 식을 통해 해당 sampling이 미분 가능하며 loss gradient를 입력 feature map과 sampling grid의 좌표로 backpropagate 할 수 있음을 보여준다. 따라서 더 이전의 localisation network의 parameter \({\theta}\)까지의 backpropagation도 가능하다 (식 \({(1)}\) 참고 ).
✔️ Spatial Transformer Networks
앞서 설명한 세 모듈 localisation network, grid generator, sampler를 합쳐서 Spatial Transformer Network를 구성하게 된다. 이 네트워크 구조는 어떠한 CNN 아키텍쳐에도 적용될 수 있으며 사용되는 개수에도 제한이 없다. 해당 구조를 추가함으로 써, 모델은 기존 학습 과정 중간에 동적으로 전체 cost를 최소화하는 feature map을 변환 방식을 함께 학습한다. 또한 기존의 모델 속도에는 크게 영향을 미치지 않는다. 마지막으로 여러 개의 Spatial Transformer 구조를 CNN 구조가 깊어지는 중간에 사용하게 되면 모델이 더 추상적인 representation을 다루게하는 효과가 있다.