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