[논문리뷰]Stacked Hourglass Networks for Human Pose Estimation
2D image 기반의 Human Pose Estimation에서 Feature Extractor으로 가장 많이 사용하고 있는 Hourglass Network대해 논문리뷰를 해보려고 한다.
지금은 3D HPE 연구가 활발히 진행되고 있지만, Human Pose를 이해하기 위해서 이 논문을 공부하는 것은 필연적이라고 생각한다.
사실 이전에도 읽었지만, 딥러닝과 수학적인 지식이 부족한 터라 이해하기 쉽지 않았다. 그동안 기초를 다지며 이 논문을 반드시 이해하리라 다짐했다. 그럼 논문리뷰를 시작하도록 한다!
Abstract
- 2016년 당시, Human Pose Estimation 분야에서 새로운 Network 구조였다.
-
bottom-up 방식과 top-down 방식의 결합으로 all scales에서 feature extraction이 가능하다.
-
Hourglass Network의 사용하여, MPII dataset에서 대략 2%의 정확도 상승 효과를 보았고 추정하기 더 어려운 관절인 무릎과 발목에서 4-5%의 정확도 상승 효과를 보았다.
- Hourglass Network는 오로지 RGB Image의 single person’s pose의 관절 추정에만 초점을 맞췄다.
대략적인 Hourglass Network에 대한 요약은 여기서 끝내고 Network의 구조에 대해서 살펴보도록하자.
Network Architecture
(1) Hourglass Design
이미지 내의 사람의 자세에 대한 정보를 모든 scale에서 추정하는 것이 굉장히 필요하다. 또한 얼굴이나 손처럼 지역적인 정보 또한 중요하게 다뤄야한다.
어떤 논문들은 모델 파이프라인을 분해해서 학습한 뒤 후에 결합하는 방식을 사용했지만, Hourglass Network는 매우 단순하고 공간적인 정보를 보전하기 위해서 skip layer를 사용한 single pipeline을 사용한다.
- Feature 추출과 가장 낮은 해상도를 얻기 위해서 Convolutional layer와 maxpooling layer를 사용한다.
- 각 maxpooling 단계에서, 네트워크가 별도로 갈라지며, 원래의 pre-pooled resolution에 convolution 연산을 더 적용한다.
- 가장 낮은 해상도에 도달한 후, upsampling에 해당하는 top-down 순서를 수행하고 scale 별로 추출한 feature들을 조합한다.
-
Hourglass Network는 Tomson의 과정을 따르고 upsampling은 nearest neighbor upsampling을 사용하며 feature들을 조합할 때는 elementwise addition(행렬덧셈)을 사용한다.
- Hourglass Network는 대칭 구조이다.
- output 해상도에 도달하면, 두 번의 연이은 1x1 convolution 연산을 통해 최종적인 prediction을 수행한다.
- 네트워크의 output은 관절이 존재할 확률이 담긴 heatmap이다.
(2) Layer Implementation
- 최종적으로 디자인으로 Fig.4.Left에 있는 Resudual module의 사용을 극대화했다.
- Filter 크기를 3x3 이상으로 사용하지 않았다.
- Bottlenecking은 각 layer가 축소될 때 전체 parameter 수를 제한한다.
- GPU memory로 인해 input size는 256 x 256
- Start : 7x7 convolutional layer / stride = 2 / maxpooling(256 $\rightarrow$ 64)
- Fig.4.Right를 보면, 두 개의 branch로 나눠지는데, 하나는 heatmap를 생성하고, 그 heatmap에 loss가 더해진다.
- 1x1 convolution은 채널 중간의 feature들을 match하기 위해서 heatmap을 재배치한다.
- 이전의 hourglass로 부터의 features와 1x1 convolution으로 연산된 features를 하나의 값으로 더한다.
(3) Stacked Hourglass with Intermediate Supervision
Stacked Hourglass라는 말 그대로 HG의 구조가 end-to-end 형태로 맞물려 있는 형태이다. 하나의 output이 그 다음 input으로 이어지는 형태다. 이러한 구조는 bottom-up과 top-down 방식의 추론을 반복하면서 재평가의 기능을 갖는다. 이러한 접근의 핵심은 heatmap 중간중간에 손실을 추가해 줄 수 있다는 것이다.
지역적인 맥락과 전역적인 맥락에서 추출된 feature들을 process할 수 있는 기회를 가지는 각 HG를 통과한 이후에 예측값들이 생성된다. 그 이후의 HG들은 높은 수준의 feature들을 고차원적인 공간적 관계에서 재평가하게 한다.
만약 Supervision이 upsampling 후에 제공된다면 재평가는 이루어지지 않아서 global context를 반영하지 못 할 것이다. 사람의 관절를 예측하는 데 있어서 전체 이미지의 공간적인 정보 또한 매우 중요하다.
하지만 Stacked HG는 이러한 걱정을 완화한다. local and global 단서들이 각 HG 모듈 내에서 통합되기 때문이다. 즉 사람의 관절 정보는 사진 내에서 공간적인 정보와 매우 밀접한 관련이 있으므로 이를 보존하는데 탁월한 기능을 수행할 수 있다는 말이다.
(4) Training Details
- FLIC (5003 images = 3987 training + 1016 testing)
- MPII Human Pose : 25k images, annotations for multiple people (40k =28k training + 11k testing)
- All input image size : 256 x 256
- RMSProp with learning rate 2.5e-4
-
Used BatchNormalization
- MSE loss function
- 2D Gaussian
HG를 8개를 쌓았을 때 가장 성능이 뛰어 났다.