🙃

RetinaFace: Single-stage Dense Face Localisation in the Wild

Tags
Object Detection
Created
2021/01/29 07:01
Publication
Rate
3
Source
https://arxiv.org/abs/1905.00641
Summary
(상세 페이지 참고)

Reference

RetinaFace는 multi-task learning을 비롯한 detection의 여러 테크닉들을 적극적으로 도입하여 성능을 높인 one-stage SOTA face detection 모델이다. 논문에 따르면 CPU 연산으로도 real-time serving이 가능할 만큼 효율적이라고 한다.
RetinaFace는 다음과 같은 항목들을 동시에 학습함으로써 가장 적절한 feature를 학습하고자 한다.
Face classification: 해당하는 anchor들이, 자신이 찍은 범위가 얼굴인지 그냥 배경인지를 구분하는 classification task이다. 즉 얼굴이 할당된 (positive) anchor는 되도록이면 1을 출력하고, 배경이 할당된 (negative) anchor는 되도록이면 0을 출력하는 classifier를 학습한다. Binary softmax loss function을 이용한다.
Face box regression: Positive anchor에 대해, 얼굴의 범위를 나타내는 bounding box {tx,ty,tw,th}\{ t_x, t_y, t_w, t_h \}를 예측하는 regression task이다. 각각 중심점의 좌표(x, y)와 너비(w), 높이(h)를 나타낸다. smooth-L1L_1 loss function을 이용한다.
Facial landmark regression loss: 얼굴의 5가지 keypoints, 즉 양 눈의 중심점, 코 끝, 두 입꼬리의 위치를 예측하는 regression task이다. {lx1,ly1,...,lx5,ly5}\{ l_{x_1}, l_{y_1}, ..., l_{x_5}, l_{y_5} \}를 예측한다고 표현할 수 있겠다. 역시 smooth-L1L_1 loss function을 이용한다.
Dense regression loss: Mesh decoder를 통해 렌더링된 2D face image를 원 이미지와 비교하여 pixel 단위의 예측을 수행하는 regression task이다. (Competition에 참여하는 관계로) 현재(2020/04/29) original repo에 dense regression에 해당하는 branch는 포함되어 있지 않다.
이렇게 위의 5가지의 multi-task learning을 통해 얼굴과 관련된 가장 적절한 feature를 학습하고, 이를 통해 face localization의 효율을 높이고자 하는 것이 바로 RetinaFace이다. 주목할 만한 branch는 바로 landmark regression branch와 dense regression branch인데, ablation test를 통해 밝혀진 바로는 landmark regression branch는 robust하게 모델의 성능을 끌어올리며, dense regression branch는 약간의 variance가 있지만 landmark branch와의 시너지가 두드러진다.
학습 시에는 negative anchor에 대해서는 classification loss만, positive anchor에 대해서는 다른 모든 multi-task loss가 부과되는데, ground truth와 IOU가 0.5 이상인 anchor는 positive anchor로, IOU가 0.3 이하인 anchor는 negative anchor로 분류하며 그 외의 anchor는 무시한다. FPN에 의한 각각의 branch에 서로 다른 3가지 scale의 (aspect ratio는 1인) anchor box를 할당하며, negative box와 positive box의 비율을 조정하기 위해 OHEM(Training Region-based Object Detector with Online Hard Example Mining)을 활용(loss가 가장 높은 negative anchor들을 선택하여 negative:positive 비율이 최대 3:1이 되도록 조정)한다. 추론 시에는 box voting method를 이용해 최종 결과를 도출한다.
여러 가지 SOTA 테크닉들을 합리적으로 동원하여 만들어낸 SOTA face detection 모델이다.
첫 번째 읽을 때는 처음 보는 것들이 너무 많아(mesh decoder, FPN, OHEM, context module, ...) 무슨 소린지 뭐 하나도 몰랐는데, 다른 논문들을 따라 탐색하고 다시 읽으니 생각보다 메시지가 명료한 페이퍼였다. 아직도 mesh decoder가 뭔지는 모르겠지만, 추후에 관심이 생기면 다시 한 번 공부해보기로 한다.
E.O.D.