[CVPR2021] Dual Attention Guided Gaze Target Detection in the Wild...

[CVPR2021] Dual Attention Guided Gaze Target Detection in the Wild...

Disclaimer

이 글은 2021 CVPR의 논문 Dual Attention Guided Gaze Target Detection in the Wild를 바탕으로 하여 리뷰 형식으로 작성하였음을 밝힙니다.

이 논문은 사람의 시선을 추정하는 Gaze Estimation을 3D dimension 단계에서 수행하는 논문입니다.

관련 분야 : 3D Gaze Estimation, Monocular Depth Estimation, Gaze Target Detection

0. Abstract

Gaze Target detection은 scene에서 사람이 어디를 응시하고 있는지 추정하는 태스크입니다. 기존에는 2D 상에서

gaze estimation이 이뤄졌지만, 3D에서의 연구는 활발히 진행되지 않았습니다.

이 논문에서는 gaze를 추정하는 기법으로 Three-stage method를 제안합니다.

그림1. Architecture for gaze target detection in the wild (논문 Figure 2.)

3가지 stage는 다음과 같습니다.

stage1 에서는 얼굴의 방향으로부터 3D 시선을 추정하는 coarse-to-fine strategy gaze estimation을 수행합니다.

stage 2에서는 1) 평면상의 시선 벡터로부터 field of view(가시범위)를 표현하는 FOV Attention Map과 2) depth 정보를 활용하여 불필요한 객체를 제거하는 Depth Attention Map을 포함하는 DAM(Dual Attention Module)를 생성합니다.

stage 3에서는 1) 시선의 target이 이미지 내에 존재하는지를 이진분류하는 작업과 2) 만약 이미지 내에 존재한다면 그 위치를 추정하는 localization을 포함한 2개의 sub-tasks를 수행합니다.

그러면 구체적으로 각각의 stage에서 어떤식으로 수행하는지 알아보겠습니다.

1. Introduction

introduction 섹션에서는 논문이 해결하고자 하는 문제점과 해결 방법에 대해서 간략히 소개합니다.

설명에 따르면 Gaze cue(시각 신호)를 통해서 사람이 어디를 응시하는지를 알아내어 어떤 관심사를 갖는지, 또는 social context를 추정하거나 또 다른 신경생리학적 연구 등에 사용될 수 있다고 합니다.

하지만 기존의 연구들은 특정 장비가 필요하거나 VR/AR device를 착용하는 등의 제한된 환경이 갖추어져 있을 때에만 gaze 분석이 이루어졌습니다. 따라서 실제 상황에서 적용되기 어려운 수준이었습니다.

딥러닝의 접목으로 많은 진전이 이루어졌지만 여전히 3가지 주요한 문제가 해결되지 않았습니다.

기존의 연구는 모두 2D 상에서 연구가 이루어졌고, depth channel에 대한 추정은 하지 않았습니다. 따라서 특정 2D 방향을 예측하더라도 앞쪽을 보는 건지 옆쪽을 보는건지 뒤쪽을 보는건지 알 수 없었습니다. 기존의 기법들에서는 2D 시각 신호를 활용하기 때문에 depth가 다르지만 같은 방향의 2개 이상의 object에 대해서 어느 object를 바라보는지 알기 어려웠습니다. 대부분의 방법은 head-pose와 gaze 방향을 단순 맵핑하기 때문에 시선과 얼굴의 방향이 일치하지 않을 때의 상황을 반영하지 못한다는 문제가 있습니다. 그림 2. Examples of gaze target detection(a) and failure cases of existing methods (b,c,d), 논문 FIgure 1.

a)가 정상적인 추정을 한 예시이지만, (b), (c), (d)는 기존 기법들에서 발생하는 몇가지 문제점을 예로 들어 보여줍니다. 각각 위에서 설명한 문제점의 1번 2번 3번에 대한 예시입니다. 그림에서 노란 색은 Ground-Truth이고 빨간 색은 잘못된 예측 결과입니다.

(물론 다른 연구들에서 이러한 문제를 해결하고자 하는 시도가 많이 이루어졌지만, 이 논문에서는 이러한 문제들이 완벽하게 해결되지 않았다고 판단한 것 같습니다.)

이러한 관찰에 따라서 이 논문에서는 3 stage 기법을 활용하여 문제를 해결하고자 했습니다.

2. Related Work

Gaze Target Detection

특정 주체가 이미지 내에서 어떤 target을 바라보고 있는지 탐지하는 task

주로 gaze estimation과 saliency model으로 분리되서 수행되었습니다.

Monocular Depth Estimation

이미지 내에서 depth를 추정하는 task로 물체간의 공간적 관계를 이해하는데 중요하게 사용됩니다.

이 논문에서는 Ranftl et al이 제안한

Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer

방법을 사용하였습니다.

3D Gaze Estimation

3D gaze estimation은 geometric methods와 appearance-based gaze methods로 분리됩니다.

전자는 정확도가 높지만 실험 setting에서 잘 동작한다는 제한적인 문제가 있습니다.

후자는 좀 더 practical하지만 정확한 예측이 어렵다는 단점이 있습니다.

3. Method

이 논문에서 사용된 방법들에 대해서 각각 구체적으로 알아보겠습니다.

3.1 3D Gaze Estimation (stage 1)

그림 3. Stage 1

이 논문에서는 강인한 coarse-to-fine 전략을 제안하였는데, 이는 실제 상황에서 잘 동작하는 일반화가 뛰어난 모델이라고 주장합니다.

만약 이미지상에서 눈이 가려지거나 뒷모습이기때문에 한쪽 눈만 보이거나 하는 등의 상황에서는 coarse하게 head-pose를 기본으로 대략적인 추정을 수행합니다.

하지만 눈이 뚜렷하게 잘 보이는 상황에서는 추출한 gaze를 직접적으로 고려하여 추정합니다.

위 그림에서 Head Pose Extractor는 이미지 내에서 사람의 얼굴을 Detect 하는 과정을 거친 후에 Head Pose Extractor와 Eye Detection, Eye Feature Extractor 과정을 거치게 됩니다.

head pose에 대한 label은 도리도리할 때의 horizontal 방향을 나타내는 yaw와 끄덕끄덕할 때의 vertical한 방향 변화를 나타내는 pitch로 나타냅니다.

Gaze Estimation은 아래와 같은 식으로 표현되는데, 눈이 탐지가 되면 f_l과 f_r을 활용하고 그렇지 않으면 h만을 활용합니다.

최종적으로 3D Gaze Estimation을 거치고 나면 $g = (g_x, g_y, g_z)$를 출력합니다. 여기서 g_x와 g_y는 2D 이미지의 평면상의 방향를 나타내고, g_z는 depth 정보를 담게됩니다.

Eye-Detection을 수행할 때, false-positive는 안좋은 학습 방향을 야기하기 때문에 이를 최대한 줄이기 위해서

double-check 방법을 사용했다고 합니다.

먼저 head-pose를 예측한 후에 이 각도가 카메라 방향을 기준으로 하여 특정 각도를 넘으면 (이 논문에서는 경험적으로 60도로 설정) 눈이 가려질 것이라고 판단하여 eye feature를 추출하지 않습니다. 1)에서 false positive가 걸러지지 않으면 facial landmark를 추출하여 왼쪽 눈과 오른쪽눈의 landmark의 거리가 합리적인지 판단하여 한번 더 걸러낸다고 합니다. 구체적으로 어떤 기준을 사용하였는지는 논문에서 밝히지 않았습니다.

3.2 Dual Attention Module (Stage 2)

그림 4. Stage 2

두 번째 단계는 보라색 박스로 나타낸 DAM입니다. 이는 2가지의 Attention Map으로 구성되어 있습니다.

FOV Attention Map

첫 번째로는 FOV(Field of View) Attention Map (M_f)입니다. 여기서는 위 그림에서 박스친 부분에서 아래 그림에 해당합니다. 마치 눈을 시작으로 특정 방향으로 빛이 퍼져나가는것처럼 보이는데, 이는 사람의 가시범위(field-of-view)를 2차원 평면상에 표현한 것입니다.

이를 수식으로 표현하면 다음과 같습니다.

그림 5. FOV attention map theta 그림 6. arccos graph

(i, j)는 이미지 상의 임의의 점이고 (h_x, h_y)는 head pose, (g_x, g_y)는 gaze estimation 결과의 x, y좌표입니다. theta가 작을수록 응시점(fixation point)에 가까운 픽셀이라는 뜻입니다. arccos는 위의 그림과 같이 그릴 수 있으므로 값이 1에 가까워질수록 0이됩니다.

그림 7. FOV attention Map 수식

최종적으로 위와 같은 수식을 거쳐 FOV attention map을 표현합니다.

그림 8. 왼쪽은 원본 이미지, 오른쪽 FOV attention map

위의 그림에서 오른쪽이 FOV attention map을 표현한 것이고 theta가 작은, 즉 응시점과 가까운 픽셀들이 더 밝게 표현된 것입니다.

Depth Attention Map

두 번째로는 Depth Attention Map (M_d)입니다. 이미지 내의 depth를 표현하기 위해서 Depth Rebasing이라고 명명한 방법을 사용합니다.

먼저 depth esimator를 통해서 픽셀마다 0과 1사이의 I_d 값으로 표현합니다. 이때, 낮은 값일수록 카메라로부터 더 멀리 떨어져있다는 것을 의미합니다.

그림 9. Depth estimator의 Normalization 수식

여기서 (i, j)는 target object의 head boudning box 내의 모든 좌표를 의미하고 N또한 그 안의 픽셀의 개수를 의미합니다. 따라서 수식의 뒷단이 bouding box의 평균 depth가 됩니다.

이미지 내의 모든 픽셀의 depth에서 bouding box의 평균 depth를 빼서 정규화(Normalization)시키면 0보다 큰 값을 갖는 F_d 는 상대적으로 foreground 라고 할 수 있고 F_d가 낮은 픽셀은 카메라로부터 멀리 떨어진 background 라고 분류할 수 있습니다.

그림 10. 3 class depth classification 수식

이렇게 segmentation된 pixel을 3가지의 클래스로 분류할 수 있습니다.

이를 그래프로 그려보면 아래와 같습니다.

그림 11. 그림 10을 그래프로 표현

여기까지는 아직 gaze estimation에서 추출했던 depth 정보를 활용하지 않은 분류 결과입니다. 이를 반영하여 수식으로 나타내면 아래와 같습니다.

그림 12. 최종 Depth Attention Map 수식

gaze estimation에서 추출했던 depth 정보인 g_z를 활용하여 depth attention map(M_d)를 완성합니다.

여기서 시그마는 경험적으로 골랐다고 논문에서 이야기하고 그 값은 0.3이라고 합니다.

즉, 만약 사람의 시선이 앞쪽을 보고 있었다면 g_z값은 -1에 가까운 값이 되는데 그렇다면 M_front 그래프를 활용하여 앞쪽에 있는 픽셀에 더 큰 값을 부여하게 됩니다.

반면, 사람의 시선이 뒤쪽을 보고 있었다면 g_z 값은 1에 가까운 값이 되고 그렇다면 M_back 그래프를 활용하여 뒤쪽에 있는 픽셀에 더 큰 값을 부여하는 것입니다.

그림 13. 왼쪽 원본 이미지, 오른쪽 Depth Attention Map 반영

위 이미지의 오른쪽은 depth attention map을 나타내는데, 사람의 시선이 앞쪽이므로 depth값이 큰 (카메라로부터 가까운) 객체들이 밝게 표현된 것입니다.

그림 14. Dual Attention Map 수식

최종적으로 구한 두개의 attention map을 pixel wise 곱을 통해서 표현하면 depth와 사람의 시선이 모두 반영된 attention map을 그릴 수 있게 됩니다.

그림 15. Visualization results of attention modules 논문 FIgure 4.

3.3. Gaze Target Detection (stage 3)

stage 3인 마지막 단계에서는 dual attention map과 원본 이미지를 concat 하여 backbone으로 명명되는 feature extraction 단계를 거칩니다(resnet50).

이후에 2가지 Head를 각각 거치며 sub-tasks를 수행하게 됩니다. 여기에는 Binary Classification Head와 Heatmap Regression Head가 해당됩니다.

binary classification head는 시선이 향하고 있는 부분이 이미지 내에 존재하는가 혹은 그렇지 않은가를 분류하는 이진 분류 문제입니다. 여기에는 2가지 conv layer와 2개의 출력 노드를 갖는 1개의 fc layer로 구성되어 있습니다.

반면 heatmap regression head는 말그대로 최종적인 heatmap을 결정하기 위한 layer입니다. 여기에는 2개의 conv layer와 3개의 deconv layer로 구성되어 있고 최종 출력 결과는 입력 사이즈와 동일할 것입니다.

Total Loss

최종적인 Loss는 stage 3에서 이진분류를 수행하는 L_cls와 히트맵 회귀를 수행하는 L_reg, 그리고 마지막으로 gaze estimation Loss (Angular Loss)인 L_ang으로 총 3개의 Loss의 가중합으로 이루어져 있습니다.

그림 16. Total Loss

4. Experiments

그림 17. 논문 Table 3, Table 4

5. Conclusion

이 논문에서는 3 stages를 갖는 기법을 소개하며 unconstrained 3D gaze estimation을 제안하였습니다. 방법이 복잡하지 않지만, 기존에 해결하지 못했던 gaze-estimation 분야의 어려움을 간단하면서도 효과적인 아이디어를 통해 해결하여 2021년 CVPR에 등재되었습니다.

Disclaimer

이 글은 2021 CVPR의 논문 Dual Attention Guided Gaze Target Detection in the Wild를 바탕으로 하여 리뷰 형식으로 작성하였음을 밝힙니다.

from http://aperxnt-ml.tistory.com/4 by ccl(A) rewrite - 2021-09-24 00:27:21