Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

cvpr2017
cvpr
sota
convolutional
pose-estimation

(Curtis Kim) #1

Introduction

이미지에 포함된 여러 사람의 관절을 모두 찾으려면 어떻게 해야할까? 대부분의 경우 알려진 방식이 Top-Down이라고 표현되는데, 이는 아래와 같은 방식이었습니다.

  • Human Detector를 이용해 사람을 검출함.
  • 검출된 사람의 위치로부터 이미지를 Crop해 Pose Estimation Module에 넘김.
  • 즉, 검출된 사람 각각에 대해 Pose를 찾도록 반복 수행.

반면 이 논문에서는 Bottom-up 이라고 표현하는 방식으로, 이미지에 대한 반복적인 처리 없이, 한번에 좋은 결과를 얻은 것이 인상적입니다.

  • 모든 사람의 각 관절의 위치로 예상되는 부분들을 찾아냄.
  • 각 관절의 위치를 이어 각 개별 인물들에 해당하는 관절 위치로 재생성함.

대게 Bottom-up 방식은 정확도 면에서 많이 떨어지던 것이 대부분의 상황이었습니다.

위와 같은 방식에서 성능을 높이기 위해서, 각 관절들의 위치를 Heatmap 형태로 잘 찾아내면서 동시에 각 관절들의 관계를 'Part Affinity Map’이라는 또 다른 Output으로 부터 얻어, 취합하는 방식으로 접근했습니다.


Method

앞서 잠시 언급했듯, 네트워크가 출력하는 것은 2가지로 아래와 같습니다.

  • Part Confidence Maps. 일종의 Heatmap 입니다. 각 관절이 있을 것 같은 위치를 표현합니다.
  • Part Affinity Fields. 일종의 관계를 표현하는 Vectormap 입니다. 특정 관절로부터 다른 관절로 이어지는 것을 표현한 맵입니다.

Part Affinity Fields가 조금 개념이 친숙하지 않을 수 있는데, 단순히 관절의 연결 관계를 표현한 맵일 뿐입니다. 예를 들어 오른쪽 어깨와 오른쪽 팔꿈치는 연결이 강하므로 그 둘 사이에 Part Affinity Fields 에는 1에 가까운 큰 값으로 채워지는 벡터맵입니다. 이 때, 오른쪽 어깨와 오른쪽 팔꿈치라고 하더라도 그 둘이 서로 다른 사람이거나, 아니면 오른쪽 어깨와 왼쪽 팔꿈치와 같이 관계없는 경우에는 0에 가까운 작은 값으로 채워지는 벡터맵이게 됩니다.

이 때, Stacked Hourglass Network for Human Pose Estimation에서와 비슷하게, 동일한 구조를 반복적으로 연결해 refine하는 구조를 사용했습니다.

즉 위 그림에서처럼, Part Confidence Maps 와 Part Affinity Fields 를 출력하고 나면 이 정보와 애초에 입력되었던 이미지의 Feature를 모아서 다음 네트워크에 넘기고, 다음 네트워크가 결과를 또 그 다음 네트워크에, 그렇게 마지막 네트워크에 도달할 때 까지 반복합니다.

이는 Stacked Hourglass Network for Human Pose Estimation에서말씀드린 것처럼 refine을 위한 것인데, 네트워크가 사람의 모습이나, 관절 간의 관계, 이미지 컨텍스트를 통한 유추 등을 배울 수 있도록 돕는 효과가 있습니다.

이렇게 여러번에 걸쳐 반복적으로 얻어진 Part Confidence Maps, Part Affinity Fields는 정답과의 L2 Loss를 통해 계산하도록 설계되어 있습니다.

Part Confidence Maps는 관절이 있는 위치를 중심으로 정규 분포를 따르는 Smooth한 형태로 정답을 만들었고, Part Affinity Fields는 관절과 관절 사이를 잇도록 적절한 두께로 1을 채워넣는 형태로 정답을 만듭니다.

Multi-person Parsing using PAFs

네트워클르 통해서 여러 사람에 대한 관절 정보를 얻게됩니다. 문제는 해당 관절이 어떤 사람의 것인지, 관절과 관절 간의 관계를 어떻게 이어야 원래 사람의 모습으로 복원할 수 있는지는 조금 더 처리가 필요합니다.

일반적으로 이 문제는 NP-Hard한 Matching 문제이지만, 우리는 Part Affinity Fields라고하는 (믿을만한) 관절간의 관계 데이터가 있으므로 이 문제를 relax해서 bipartite matching 하는 것으로 결과를 얻게 됩니다.

이 부분 덕분에 여러 사람에 대한 Parsing 과정도 매우 빠르고 효과적으로 이루어지게 되었습니다. 이는 사실 결국 PAFs가 정확하다는 믿음에 기반하는 것입니다.

Results

MPII 에서 압도적인 #sota 결과를 보입니다.

COCO 2016 Challenge에서도 1위를 기록했습니다.

이 부분이 조금 재미있는데, 기존의 Top-Down 방식에서 잘 알려진 CPM 이 Human Detection에 의한 에러가 없다고 가정하더라도, 이 논문의 모델이 매우 근접한 성능을 보인다는 주장입니다. 추가로 현존하는 꽤 좋은 성능의 Detector인 SSD와 결합하면 이 논문의 모델보다 많이 못미치는 성능이므로, 여기서 주장하는 방식이 꽤 괜찮다는 것을 말하고 있습니다.

여러 사람에 대해 각각 처리하지 않아도, 한 이미지에 대해 Network Forwarding 결과를 적절히 취합하는 방식이므로, 9명의 예제에 대해 100ms 수준의 CNN 연산 시간과 0.58ms 수준의 후 처리가 필요했다고 합니다.


Towards Accurate Multi-person Pose Estimation in the Wild
(Curtis Kim) #2

저자가 CVPR에서 발표한 영상입니다.