[Human Pose Estimation] Openpose 모델에 대하여

MarkAny·2022년 3월 16일
2

Human Pose Estimation

목록 보기
2/2

Pose Estimation : Top-down vs Bottom-up

Human Pose Estimation은 자세를 추정하는 방식에 따라 크게 두가지 종류로 나눌 수 있습니다. Top-down, Bottom-up 방식으로 나뉘는데, 각자 장단점을 간략하게 적어보면 다음과 같습니다.

Top-down

  • 이미지에서 사람을 먼저 찾고, 찾은 사람의 Bounding Box에서 자세를 추정
  • 사람을 먼저 찾고, 사람안에서 joint들을 찾기 때문에 정확도가 Bottom-up방식보다 높다
  • 검출된 사람들을 순회하며 joint들을 찾기 때문에 속도가 Bottom-up방식보다 느리다

Bottom-up

  • 이미지에서 joint들을 먼저 찾고, joint들의 상관관계를 분석하여 이들을 연결하여 자세를 추정
  • 정확도는 Top-down 방식에 비해 떨어지지만, Object Detection 과정이 없기 때문에 속도가 빨라 실시간 처리에 사용 가능

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

Openpose는 2017년 발표된 Human Pose Estimation 모델 중 하나로, CVPR에서 발표가 이루어 진 뒤 추가적인 개선 이후 2019년에 공개된 모델입니다. 논문의 제목에서 알 수 있듯이 PAF(Part Affinity Fields)를 통해 실시간으로 Multi-Person Pose Estimation이 되는 Bottom-up방식의 모델입니다. [공식 Github]에서 소스코드를, [공식 arxiv]에서 논문을 확인할 수 있습니다.



위와 같은 이미지가 입력으로 주어졌을 때, Openpose 모델이 자세를 추정하는 과정을 간략하게 설명드리겠습니다. 먼저 고전 CNN모델중 하나인 VGG19(논문에서 구현한 방식)모델을 이용하여 joint들을 찾아 heatmap을 만듭니다.

위와 같이 joint들의 heatmap을 만들었다면, 다음은 joint들의 상관관계 분석을 위해 PAF(Part Affinity Fields)를 구성해야합니다.

다음으로는 구성한 PAF를 이용하여 joint들을 적절히 나누고, 연결해야합니다.

간선들을 전부 찾은 뒤, 적절히 나누고 연결하는 과정은 K-partite graph(K분할 그래프)문제로 연결되며 이는 여러개의 bipartite graph(이분 그래프)문제로 쪼갤 수 있고 이는 이미 알려진 문제로 다항시간내에 해결할 수 있습니다. 마지막으로 분할한 joint들을 index에 따라 적절히 연결하면 다음과 같은 결과를 얻을 수 있습니다.


Realtime, Multi-Person

Openpose의 저자는 Openpose 모델이 Realtime, Multi-Person 환경에서도 우수한 성능을 보여준다는 점을 논문의 제목에서부터 강조하고 있습니다. 저자는 다른 Human Pose Estimation 모델인 AlphaPose와 Mask R-CNN과 성능을 비교하여 이를 근거로 들었습니다. 자료는 아래와 같습니다.

Openpose(아래쪽 평평한 두 개의 선)의 추론 시간은 이미지 내의 사람이 몇명이든 일정한 것이 가장 큰 특징입니다. 위에서 설명했듯이 Bottom-up방식의 장점중 하나라고 할 수 있습니다. 반면에 AlphaPose와 Mask R-CNN의 경우 이미지에 등장하는 사람 수에 비례해서 추론 시간이 늘어나는 것을 확인할 수 있습니다. 이를 통해 확실하게 Openpose가 Realtime, Multi-Person 환경에서 유리하다는 것을 알 수 있습니다.


Not only for human pose, but also for vehicle keypoints

Openpose 논문의 마지막 부분에서는 사람이 아닌 승용차나 버스와 같은 차량에 대해서도 같은 방식을 통해 keypoint detection을 진행할 수 있다고 말합니다. 이를테면 차량의 루프, 범퍼, 타이어등의 joint들을 찾고 이들을 연결하는 것이라고 할 수 있습니다.

위의 예시 사진들에서 볼 수 있듯이 차량의 크기에 상관없이, 차끼리 겹치는 상황이나 차량이 가려진 경우등에도 우수한 결과를 내는 것을 확인할 수 있습니다.


Concluding

오늘은 Openpose 모델에 대하여 알아보았습니다. Openpose는 오픈 소스로 공개된 최초의 실시간 자세 추정모델임에 그 의의가 있습니다. 또한 일반적인 자세뿐만이 아닌 사람의 얼굴이나 손, 발, 더 나아가 차량과 같은 경우에도 keypoint를 적용하여 응용할 수 있다는 점이 큰 특징이라고 할 수 있습니다.

# MARKANY_둘러보기

profile
마크애니 기술 블로그 입니다.

0개의 댓글