논문 읽기/Pose Estimation

[논문 읽기] Hourglass(2016), Stacked Hourglass Networks for Human Pose Estimation

AI 꿈나무 2021. 5. 6. 17:02
반응형

 오늘 읽은 논문은 'Stacked Hourglass Networks for Human Pose Estimation' 입니다. pose estimation 논문은 처음 읽어보네요ㅎㅎ

 

 hourglass network를 첫 논문으로 선택한 이유는 detection 분야에서 CornerNet이 hourglass을 backbone으로 사용하기 때문입니다. hourglass로 찾아낸 특징점을 바운딩 박스를 생성하는데 사용하는데요ㅎㅎ hourglass network가 무엇인지 호기심이 생겨 읽게 되었습니다!

 

 논문을 읽고 아쉬웠던 점은, loss function이 정확하게 나와있지 않았었습니다. pose estimation 분야는 어떻게 loss를 계산하는지 궁금했었는데, 단순히 mse loss를 사용한다고만 나와있었네요. 공부할 기회가 생기면 관련 논문도 읽어봐야겠습니다.

 

Hourglass Network

 

 Hourglass Network는 8개의 hourglass module을 쌓은 모델입니다. 각 hourglass module사이에 intermediate supervision이 존재합니다. 각 요소가 어떻게 구성되어 있고 어떤 역할을 하는지 한번 살펴보겠습니다.

 

(1) hourglass module

 

 위 그림은 hourglass module입니다. 하나의 block은 residual unit을 의미합니다. 입력값이 최소 resolution을 갖도록 residual unit을 통한 down sample을 거칩니다. 최소 resolution에 도달한 뒤에 biliear upsample 방식으로 원래 입력값 크기로 복원합니다. 또한 동일한 크기의 resolution 끼리 element-wise addition 연산을 수행합니다.

 

 위와 같은 과정을 거치면, 최소 resolution이 지니고 있는 얼굴, 손과 같은 local 정보와 원래 입력 크기가 지니고 있는 몸 전체, 사람의 방향, 팔의 형태를 함께 이용할 수 있다고 합니다.

 

residual unit

 hourglass module 내부에서 사용하는 residual unit입니다.

 

(2) Intermediate Supervision

intermediate supervision

 

 intermediate supervision은 hourglass module의 출력값을 다음 hourglass module로 전달하기 위해 사용합니다. 또한 위 그림에서 파란색 부분에 해당하는 heatmap을 생성하여 loss를 계산합니다.

 

 이전 hourglass 출력값에 1x1 conv를 거쳐서 두 개의 branch로 나뉘어 집니다. 하나의 branch는 heatmap을 생성하고, 다른 branch는 다음 hourglass module에 입력되기 위한 과정을 거칩니다. heatmap에서 loss를 계산한 뒤에 1x1 conv 연산을 수행하여 채널 수를 조정합니다. 다음 hourglass module에 입력되기 전에, 3개의 값이 addition 연산을 통해 하나의 값으로 결합됩니다.

 

 hourglass module을 여러번 거치면서 재평가의 효과가 있다고 합니다. 초기의 hourglass 출력값은 각 hourglass를 거치면서 재평가가 되고 중간중간 loss가 계산되기 때문에 점점 refinement가 되는 효과가 있습니다.

 

 loss는 MSE를 사용한다고 나와있는데, 정확한 수식이나 구현 방법에 대해서는 나와있지 않습니다.

 

Performance


참고자료

[1] arxiv.org/pdf/1603.06937.pdf

반응형