🕜

Relation-aware Global Attention for Person Re-identification

Tags
Re-identification
Created
2021/01/31 08:20
Publication
CVPR'20
Rate
3
Summary
(상세 페이지 참고)

Reference

다른 대부분의 computer vision 분야가 그렇겠지만, 특히 person re-identification에 대해서는 모델의 attention 능력이 핵심적인 역할을 한다. Multi-camera view에서의 background clutter, pose variation 등의 요소가 모델의 feature learning에 큰 작용을 하기 때문이다.
통상적으로 모델의 attention 역량을 강화시키기 위해 특정한 형태의 convolution block(module)을 고안하여 삽입하는데, 대표적으로는 CBAM(Convolutional Bottleneck Attention Module)이나 NL(Non-Local) 모듈 등이 있다. 하지만 CBAM은 7 x 7 크기의 비교적 큰 kernel size를 이용하기는 했지만, 국소적인 receptive field만을 고려하여 attention을 얻어내는 local attention module이고, Non-Local 모듈은 global feature relation을 이용하기는 하지만 이러한 relation을 attention을 얻어내기 위한 weight로 사용하는 데 그치며(즉 relation을 weight로 한 weighted summation을 통해 attention을 얻어낸다), 더욱이 다른 논문의 실험에서 밝혀지기를 이러한 relation은 spatial information invariance를 가진다. 즉 해당 feature의 위치 정보를 제대로 반영하지 못한다.
논문에서는 효과적인 attention을 위해서는 global feature relation을 고려해야 하며, spatial information이 제대로 반영되어있어야 한다고 주장한다. 그리고 위 모듈의 한계를 극복할 수 있는 새로운 모듈인 RGA(Relation-aware Global Attention)을 제안한다.

RGA

RGA 모듈은 각각 spatial attention, channel attention을 위한 독립적인 모듈인 RGA-S, RGA-C로 나뉜다. 두 모듈의 매커니즘은 동일하기 때문에 하나의 모듈만 소개하는 것으로 충분하다. 고로 RGA-S를 정리한다.
Feature map XRC×H×WX \in R^{C \times H \times W}를 생각해보자. Spatial attention을 위해 이를 N=H×WN = H \times W개의 CC dimensional feature node (vector)로 구성된 feature map {xii=1,2,...,N}\{ x_i | i = 1, 2, ..., N \}으로 재구성한다. 그러면 두 feature xi,xjx_i, x_j의 relation은 다음과 같이 표현할 수 있다.
ri,j=fs(xi,xj)=θs(xi)Tϕs(xj)r_{i, j} = f_s(x_i, x_j) = \theta_s{( x_i )}^T \phi_s{( x_j )}
이 때 θs(xi)=ReLU(BN(Wθxi))\theta_s{(x_i)} = \text{ReLU}{( \text{BN}{( W_\theta x_i )} )}, ϕs(xi)=ReLU(BN(Wϕxi))\phi_s{(x_i)} = \text{ReLU}{( \text{BN}{( W_\phi x_i )} )} 이며, Wθ,WθRC/si×CW_{\theta}, W_{\theta} \in R^{C/s_i \times C}는 spatial information에 무관하게 공유되는 parameter이다. 여기서 두 parameter를 독립적으로 학습함으로써 relation은 방향성을 가지는(directional) relation이 된다.
이제 이러한 방향성을 가지는 relation 값들을 모은 행렬 RsRN×NR_s \in R^{N \times N}에 대해, ii번째 feature에 대한 global relation을 관련된 모든 relation을 stack한 ri=[Rs(i,:),Rs(:,i)]R2Cr_i = [R_s(i, :), R_s(:, i)] \in R^{2C}으로 생각할 수 있다.
또한 이 페이퍼에서는 spatial attention을 구하기 위해 원래의 feature 값 또한 고려하기 위해 원래의 feature xix_irir_i를 concatenate한다. 하지만 두 벡터는 다른 벡터 공간에 존재하기 때문에 각각의 다음과 같이 벡터를 새로이 mapping하여 concatenate한다.
y~i=[poolc(ψs(xi)),φs(ri)]\tilde{y}i = [ \text{pool}c{(\psi_s{(x_i)})}, \varphi_s{( r_i )} ]
이 때 ψs(xi)=ReLU(BN(Wψxi))\psi_s{(x_i)} = \text{ReLU}{( \text{BN}{( W{\psi} x_i )} )}, WψRC/s1×CW{\psi} \in R^{C/s_1 \times C}이며, φs(ri)=ReLU(BN(Wφri))\varphi_s{(r_i)} = \text{ReLU}{( \text{BN}{( W_{\varphi} r_i )} )}, WφR2N/2s1×2NW_{\varphi} \in R^{2N/2s_1 \times 2N}이다. poolc\text{pool}_c는 channel dimension에 대한 GAP를 의미한다.
마지막으로 이러한 y~i\tilde{y}_i를 통해 다음과 같이 attention을 구한다. W1W_1는 feature map의 dimension을 s2s_2의 비율로 축소하며, W2W_2는 dimension을 1로 축소한다.
ai=sigmoid(W2ReLU(W1y~i))a_i = \text{sigmoid}{( W_2 \text{ReLU}{( W_1 \tilde{y}_i )} )}
RGA-C로의 확장 역시 동일하다. 처음의 feature map을 CC개의 W×HW \times H dimensional feature node로 생각하면 그만이다.

Implementation

Backbone architecture는 공정한 비교를 위해 표준 backbone이라 부를 수 있는 ResNet-50를 이용한다. 마지막 stage 4의 down-sampling은 제거하며, 각각 stage 1~4 이후에 RGA-SC 모듈을 배치한다. s1,s2=8s_1, s_2 = 8로 설정한다.
Loss로는 label smoothing을 통한 identity loss(classification loss)와 hard mining을 통한 triplet loss를 이용한다. Re-ranking은 사용하지 않는다.
Market, CUHK, MSMT 데이터셋에 대해 SOTA를 달성했음을 보이며, 폭넓은 ablation study와 CBAM, NL 모듈과의 비교 등을 통해 RGA 모듈의 효율성을 입증한다.
여러 가지 실험을 통해 모듈의 효과를 다양한 측면에서 입증해낸 것이 꽤 흥미로웠고, 모듈 자체가 굉장히 체계적으로 짜여진 느낌이 들어서 재밌었다. 체계적인 느낌이 들었던 이유는 각각의 매커니즘(?)에 대한 논리를 (입증하지는 못했더라도) 제시했기 때문인 것 같다. Attention은 비단 re-id뿐 아니라 여러 가지 task에서 굉장히 중요한 역할을 할 것이라고 개인적으로 생각하기 때문에 또 재밌었다. 이 모듈을 가지고 여러 가지 실험을 해 보아도 재미있겠다.
또 한 가지 흥미로운 점은, CAM을 통해 모델이 face에는 집중하지 않는 모습을 보여주었다는 것인데, 페이퍼에서는 low-resolution으로 인해 face로부터 discriminability를 확보할 수 없었기 때문일 것이라고 예측한다. 왠지 미래의 작업에 괜찮은 힌트를 줄 수 있을 것 같아 메모한다.
E.O.D.