Stacked Hourglass Networks for Human Pose Estimation

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


본 논문에서는 이미지의 모든 scale에 대한 정보를 downsapmling과 upsampling과정을 이용하여 pixel-wise output을 생성하는 것을 목표로 한다. 또한 single hourglass를 확장하여 여러 hourglass module을 연속하여 결합한 stacked Hourglass Networks 구조를 소개한다. 이 구조는 여러 scale들에 대해 반복적인 bottom-up, top-down inference를 가능하게 한다. 이에 표준  pose estimation benchmarks에서 확연한 성능 향상을 보여준다.

* pixel- wise :  이미지의 개별 픽셀에 대한  semantic class

*Inference(추론)를 하기까지 차원축소의 단계와 차원 증가의 단계를 거치는 형태를 명칭 하는 것으로 보인다.


Network Architecture

Human pose estimation의 경우 얼굴이나 손과 같이 local evidence을 중요시하는 네트워크와는 다르게 full body에 대한 이해가 필요하다. 때문에 여러 scale에 걸쳐 필요한 정보를 찾아낼 수 있어야 한다. 이에 본 논문에서는 Hourglass를 이용하여 feature들을 잡아내어 네트워크의 출력인 픽셀 단위의 예측에 반영하도록 한다. 기존의 다른 방법의 경우 여러 크기에 대한 feature를 뽑아 분리된 다수의 파이프라인을 사용하지만 본 논문에서는 Skip layer를 이용하는 하나의 파이프 라인만을 이용하여 spatial information을 유지하는 방식을 사용한다. 본 논문에서 제안하는 네트워크의 Architecture는 아래 그림과 같다.

*Skip layer의 기본 개념은(convolution + pooling)의 과정을 여러 단계를 거치면서 feature-map의 크기가 작아지면 detail한 부분이 많이 사라지게 되기 때문에 최종 과정보다 앞선 결과를 사용하여 detail을 보강하자는 것이다.

 

 

Convolution layer와 max pooling layer를 이용해 feature의 저차원까지 내리며 이 과정에서 max pooling layer이후에 branch를 내보내고 각 resolution에 맞는 convolution 연산을 따로 한다. 가장 낮은 resolution에 도달한 후, up sampling을 이용해서 resolution을 다시 올린다. 이때 branch에서 빼서 계산한 정보들을 같이 조합하며 차원을 올린다. Upsampling으로는 Nearest Neighbor Upsampling 방식을, feature와의 조합에는 element wise(요소별) addition 연산을 이용한다.  stacked houglass network 연산을 거친 후에는 두번의 1x1 convolution 연산을 하여 각 joint의 heat map을 최종 output으로 뽑게 된다.

 



Hourglass Design

위에서 설명한 Stacked hourglass network에서 hourglass network 하나를 자세히 살펴보면 아래 그림과 같이 생겼다. FCN이랑 비슷하지만 bottom-up processing과 top-down processing모듈의 symmetric 한 distribution이 다른 점이라고 저자는 이야기한다. 

 


Layer Implementation

Residual module은 메모리의 사용량을 최소화하기 위해 bottleneck 구조를 가지고 있다. Hourglass 네트워크의 모든 residual module의 output크기가 256 사이즈인데, 컨볼루젼을 하면 64 채널로 줄어들었다가 다시 복구되어 최대 해상도 크기는 256을 유지한다. 참고로 Hourglass Network 내부의 모든 residual module은 output channel의 크기가 256이다.

 

 


Stacked Hourglass with Intermediate Supervision

Stacked Hourgalss Networks는 다수의 Hourglass Network를 쌓아놓은 구조로 반복적인 bottom-up, top-down inference를 가능하게 한다. 이를 통해 initial estimates와 이미지 전반에 대한 feature를 다시 추정할 수 있다. 여기서 중요한 점은 중간중간에서 얻어지는 예측값들에 대해서도 ground truth와의 loss를 적용할 수 있다. 아래 그림에서 파란색 박스 부분에서 Hourglass Network를 통과하여 특징을 추출한 결과(히트맵)를 생성해 낸다. 히트맵으로 추출된 특징 값을 다시 ground truth와 비교해서 loss값을 뽑아낸다.  중간중간 적용되는 loss로 인해 좀 더 깊고 안정적인 학습이 가능하리라 예상할 수 있다. 논문에서는 8개의 Hourglass Network를 이어 붙여서 사용했다고 명시되어 있다.

 


참고문헌

 

[분석] Stacked Hourglass Networks for Human Pose Estimation

[분석] Stacked Hourglass Networks for Human Pose Estimation 03 Jul 2018 주관적 의견은 이탤릭체로 표기하였습니다. Introduction 사진 속에 담긴 사람들에 대해 더욱 이해를 높이기 위해서는 그들이 취하고 있는

curt-park.github.io

 

[논문리뷰] Stacked Hourglass Networks (Human Pose Estimation)

사실 이전에 읽었지만 Pose Estimation에서 가장 혁신적인 논문을 리뷰해보도록 하겠다. Stacked hourglass network : 모래시계를 쌓아둔 모양을 가진 네트워크 인데 정말 그렇게 생겼다. 이 논문은 Newell ECCV

hansonminlearning.tistory.com

 

[Part Ⅶ. Semantic Segmentation] 3. FCN [1] - 라온피플 머신러닝 아카데미 -

Part I. Machine Learning Part V. Best CNN Architecture Part VII. Semantic Segmentat...

blog.naver.com