Convolutional pose machines (CVPR 2016)

  • 논문 제목: Convolutional pose machines
  • 연구 기관: Carnegie Mellon University



본 연구는 아래 선행 연구의 후속 연구로써, 선행 연구의 전체 적인 기술 구조는 유사하게 적용하면서 선행 연구 기술 구조 내의 'hand-crafted' function 을 'neural network' function 으로 대체한 것이다. 이해를 돕기 위해, 본 리뷰를 보기 전에 선행 연구에 대한 간단한 리뷰를 먼저 보기를 권장한다. 선행 연구에 대한 리뷰 글은 여기를 클릭하면 볼 수 있다.



용어 정의
  • Stage
    • 선행 연구와 유사하게 동일한 처리 블럭을 순차적으로 연결한 구조를 뜻한다.
  • Part
    • 추정하고자 하는 사람의 관절
  • P (p: 1 ~ P)
    • 전체 part 개수
  • Belief map
    • 이미지 내 각 픽셀이 part 위치일 확률 (입력 이미지 크기와 동일 크기의 map)
    • 각 part 마다 1장 씩 할당
    • 각 ground truth part position 을 정점으로 하는 gaussian 형태의 확률 분포 
    • 아래 그림 (a) 에서의 bt 또는 아래 그림 (c) 에서 h' x w' x (P+1)
    • 선행 연구에서는 'confidence map' 이라고 표현하였음
  • Image patch
    • 전체 이미지 중 특정 location z 픽셀 주위의 일정 영역 (local image)
  • gt
    • Confidence map 을 출력하는 multi-class classifier
    • t 는 state index
    • 아래 그림 (c) 에서 (9x9C -> 1x1C -> 1x1C) 또는 아래 그림 (d) 에서 (11x11C -> 11x11C -> 11x11C -> 1x1C -> 1x1C)
    • t = 1 일 경우만 다른 구조이고, t>= 2 부터는 같은 구조임
  • ⍦
    • Feature extraction function (아래 그림에서 X 또는 X' 을 출력)
    • 아래 그림에서 X 및 X' 을 생성하는 CNN (9x9C -> 2xP -> 9x9C -> 2xP -> 9x9C -> 2xP -> 5x5C)
    • t >= 2 인 모든 feature extraction function 은 parameter 를 공유
      • t = 1 은 구조는 같으나 파라메터는 다름

전체적인 기술 구조는 아래 그림과 같다.


앞서 언급한 바와 같이, 본 연구의 기술 구조는 선행 연구의 multi-stage processing 구조와 유사하다. 각 stage 에서 multi-class classifier 를 통해 각 파트에 해하는 belief map 을 추정하고, 추정한 belief map 정보는 fine-tuning 을 위해 다음 stage 로 전달된다. 선행 연구에서는 multi-class classifier 가 'human-defined function' 이었으나, 본 연구는 CNN (convolutional neural network) 을 이용하여 classifier 를 구성하였다. CNN 구조는 위 그림에서 볼 수 있다. CNN 은 하위 레이어에서는 좁은 영역의 'local context' 를 해석하고, 상위 레이어로 갈 수록 receptive field 가 넓어지면서 넓은 영역의 'global context' 를 해석한다. 이렇게 해석된 정보는 각 state 를 구성하는 CNN 의 feature map 에 저장된다.

학습을 위한 손실 함수는 아래 수식과 같다. 각 stage 에서 각 파트의 ground truth belief map 과 추정한 belief map 의 L2 distance 를 손실함수로 설정하였다. 최종 손실 함수는 모든 stage 에서의 손실 함수를 더한 것으로 설정하였다.




위와 같은 네트워크 구조 및 손실 함수를 사용하게 되면, belief map 을 모든 stage 에서 추정하게 되므로, 이전 stage 에서의 추정 오차를 다음 stage 에서 보정하여 점진적으로 정교한 belief map 을 생성해 나가게 된다.

아래 그림은 "right elbow" 에 대한 belief map 을 보여주고 있다. Stage 가 진행될 수록 보다 정교한 belief map 형성 과정을 볼 수 있다. (a) 는 stage 1 의 belief map 인데, left elbow 위치의 스코어가 더 높게 나타고 있으나, 최종 stage 3 에서는 right elbow 를 명확하게 가르키고 있음을 볼 수 있다.  Feature extraction function ⍦ 가 multi-layer CNN 으로 구성되어 있으며, stage 가 진행될 수록 convolution layer 수가 증가하므로, receptive field는 점차 커지게 된다. Receptive field 가 커지면, 그만큼 넓은 영역의 'context' 를 참조하여 현재 위치의 belief map 을 생성하게 된다. 이러한 특성으로 인하여, 특정 파트에 해당하는 belief map 생성 시, 다른 파트의 belief map 에 해당하는 'context' 정보를 참조할 수 있게 되어 보다 정교한 belief map 생성이 가능하게 된다.


아래 그림에서 receptive field size 가 커질 수록 성능이 향상되는 것을 볼 수 있다.


또한, 위의 손실 함수는 deep neural network 중간 지점에 loss insertion 을 배치시키므로, gradient vanishing problem 을 완화시키는 효과가 있다 (참고로, GoogLeNet 도 유사한 방식으로 중간 레이어 위치에 손실을 강제 삽입하여 gradient vanishing problem 을 완화시킨다.).

본 연구의 보고에 의하면, 머리, 목, 어깨 등 고정적인 부분은 검출이 잘 되나, 팔, 다리 등 움직임이 많고 변화가 큰 부분은 검출이 어렵다고 한다. 그러나, 파트 간의 'consistent geometry' 가 있으므로, 고정적인 부분 (오른쪽 어깨) 이 변동적인 부분 (오른쪽 팔꿈치) 검출을 위한 ‘cue’ 를 제공할 수 있다 (예를 들어 오른쪽 어깨 파트가 오른쪽 팔꿈치 파트 검출을 위한 'cue' 를 제공할 수 있다).  이를 위해서는, receptive field 가 넓어야 한다. Convolution cascading 구조가 receptive field 를 넓혀주는 역할을 하고 있다. 아래 그림에서 stage 가 진행되면서 오른쪽 어깨가 오른쪽 팔꿈치를 검출하는데 필요한 정보를 제공하여 (엄밀히 말하면 이것은 연구자의 추정이다.) 오른쪽 팔꿈치를 보다 정교하게 추정하는 과정을 볼 수 있다.



학습 시, 첫 번째 stage 에는 이미지 내 모든 사람의 key point 를 belief map 에 반영하고, 두 번째 stage 부터는 이미지 내 ‘primary person’ 1사람의 key point 만 belief map 에 반영하였다 (실험 결과에서 주요 오인식은 한 이미지 내에 여러 사람이 존재할 경우에 발생한다고 한다. 아마도 이러한 belief map 구성 때문이라고 추정된다). Ground truth belief map 을 파트 위치에서 peak 를 가지는 Gaussian shape 로 구성하는 것이 학습에 도움이 된다고 한다.

Stage 개수가 많을 수록 성능이 좋다고 한다. Stage 4 ~ 5개 정도에서 성능이 수렴하는 것으로 보인다. Stage-wise training 하는 방법 보다는 전체 stage 를 one-step training 하는 것이 더 좋다고 한다 (아래 성능 변화 그래프 참고).




CMU 는 본 연구가 가지는 여러 사람이 있을 경우의 성능 저하를 극복하기 위해 아래의 후속 연구를 진행하였다. 조만간 후속 연구에 대한 리뷰 글을 게재 예정이다.

Popular Posts

Recurrent models of visual attention (NIPS 2014)

Towards Accurate Multi-person Pose Estimation in the Wild (CVPR 2017)

Show, attend and tell: Neural image caption generation with visual attention (ICML 2015)

Multiple object recognition with visual attention (arXiv 2014)

DeepPose: Human pose estimation via deep neural networks (CVPR 2014)

Pose machines: Articulated pose estimation via inference machines (ECCV 2014)

Learning Transferable Architectures for Scalable Image Recognition (CVPR 2018)