논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

KPNet: Towards Minimal Face Detector

Problem

  • 넓은 범위의 스케일의 얼굴을 모두 검출하기 위해서는 깊고 복잡한 백본이 요구된다.
  • 가벼운 네트워크에 높은 해상도를 입력하면 앵커를 잘 설정하더라도 receptive field의 한계로 성능이 좋지 않는 문제가 있다.
  • 하지만 낮은 이미지의 입력을 넣는 경우에는 가벼운 네트워크라도 기존의 깊고 복잡한 백본만큼의 성능을 보여주었다.
  • 가벼운 네트워크라도 top-down 방식의 앵커 기반 방법은 레이블링된 박스의 정의나 품질에 따라 민감하여 다루기가 어렵다.

Essence

  • 앵커를 이용하여 객체의 박스를 추정하는 방법의 대안으로 랜드마크를 이용하여 박스를 생성하는 bottom-up 방식을 생각할 수 있다.

  • 이를 위하여 가볍지만 좋은 성능을 내는 KPNet 프레임워크를 제안하였다.

    • 이는 이미지를 저해상도로 변환하여 가벼운 백본으로 입력하도록 하였고,
    • 얼굴의 속성을 박스 대신 키포인트로 생각하여 비효율성을 제거하였다.
  • KPNet은 각 랜드마크가 종속성 없이 별도로 춪어된다는 점에서 기존 pose estimation과는 다른 문제이다.

Detail

  • KPNet의 동작을 살펴보면, 먼저 얼굴이 존재하는 스케일을 찾고, 스케일 맵과 랜드마크 히트맵으로부터 키포인트를 계산한 다음, 기존의 (Song 2018)의 연구에서 나온 방법으로 랜드마크에서 박스를 생성하여 출력하였다.

Fine-graded scale approximation

  • 키포인트를 잘 찾기 위해 먼저 얼굴이 있는 위치를 찾고자 하였다.
  • CNN은 저해상도 이미지에서도 얼굴의 스케일 정보를 추정할 수 있으므로, 박스를 추정하는 대신 박스의 크기를 추정하는 방법을 사용하였고, 여기에 위치 정보까지 추정할 수 있도록 하였다.
  • 스케일 맵 은 백본의 마지막 출력에서 3x3 컨볼루션 레이어 하나를 통과시켜 생성한다.
  • 의 크기를 가지며, 는 prediction 가능한 얼굴의 스케일 수이다.
  • 이미지 내의 크기 를 가지는 각 얼굴에 대해 채널 인덱스 로 계산한다. 여기서 는 이미지의 긴 축으로 720p 이미지에서는 1280이 되며, 이 때 검출 가능한 가장 작은 크기는 20 픽셀이 된다.
  • 논문에서는 을 사용하였다.
  • 위치 인덱스는 얼굴의 중심 위치 에 를 이용하여로 계산하였다. 는 네트워크의 stride를 의미한다.
  • 에서 각 얼굴에 해당하는 위치에 1 값을 할당할 수 있으나, 다른 연구들에서 사용하는 것처럼 2D Gaussian 함수를 사용하도록 하였다.
  • 반지름 을 사용하고 중심 을 이용하여 주변 지점에 Gaussian 함수에 따른 값들을 할당하였다.

  • 학습 시 입력 이미지는 256으로 리사이즈해서 학습하였고, 로스는 binary multi-class cross entropy를 사용하였다.

  • 여기서 는 각각 GT와 추정 값을 의미하고, 의 픽셀수를 의미한다.
  • 실제 사용할 때에는 일정 threshold를 넘는 값 들을 선택하고, 로부터 역산하여 스케일 을 계산한 뒤, 스케일 proposal 를 생성하였다.

Scale adaptive soft-argmax operator

  • 랜드마크는 직접 위치를 regression하지 않고 히트맵 방식으로 추정하도록 하였다.
  • 역시 백본의 마지막 3x3 컨볼루션 레이어 하나를 통과시켜 크기의 feature map을 생성하였다. 는 키포인트의 수이다.
  • 기존 논문처럼 단순히 argmax를 이용하지 않고 scale adaptive soft-argmax라는 방법을 사용하였다.
  • 먼저 앞 단계에서 주어진 각 proposal 내에 있는 feature map 픽셀들에 대해서, softmax를 정의하였다.

  • 여기서 는 채널 위치의 값을 의미하므로, 따라서 proposal 내의 히트맵 값에 대해서만 softmax를 취하는 것이다.
  • 이제 각 랜드마크의 좌표를 계산은 아래와 같다.

  • 여기서 의 가로 세로 크기이고, 인 경우에만 값을, 그렇지 않으면 0을 나타낸다.
  • 이렇게 계산된 랜드마크와 GT 와의 로스는 다음과 같이 계산한다.

  • Inference 시에는 키포인트를 계산한 뒤에, 눈, 코의 점수와 기존 스케일 proposal의 점수를 더해서 최종 점수를 계산한다.

  • 는 spatial 차원에서의 최대 값이고, 는 두 눈과 코의 인덱스를 나타낸다.

Backbone architecture

  • 백본으로는 Robust stacked hourglass network와 DRNet이라는 두개의 CNN 구조를 사용하였다.

Add a Comment Trackback