본문 바로가기
Artificial Intelligence/Basic

Human Pose Estimation 이란? (2022)

by SuperMemi 2022. 4. 4.
반응형

 

Human Pose Estimation Ultimate Overview in 2022

 


 

 

Human Pose Estimation with Deep Learning - Ultimate Overview in 2022 - viso.ai

Pose Estimation is a computer vision technique to predict and track the location of a person or object. List of use cases and architectures.

viso.ai

 

위의 글을 해석하여 정리한 글입니다.

 

Pose estimation 은  컴퓨터비전에서 유명한 과제중 하나 입니다. 컴퓨터 비전은 사람의 시각을 모방하여 기계가 컴퓨터 영상을 처리할 수 있게 해줍니다. 

 

이 글은 pose tracking 방법에 대한 쉬운 설명 글입니다.

 

  • 정의 : 무엇이 pose estimation 인가?
  • 다른 변형 : Human pose estimation, head pose estimation, animal pose estimation
  • 어떻게 pose estimation 이 작동하는가?
  • Pose estimation 딥러닝 방법
  • Use Cases

 


정의 : 무엇이 pose estimation 인가?

 

Human pose estimation & trackingsemantic key points 들을 검출하고, key points 들의 관련성을 찾고, 지속적으로 추적하는 컴퓨터비전 과제입니다. Semantic key points 는 말 그대로 의미 있는 점입니다. Human pose estimation 의 경우 "오른쪽 어깨", "왼쪽 무릎" 등이 Semantic key points 가 됩니다. 

 

실시간(real-time) 비디오에서 semantic keypoint 를 tracking 하는 것은 매우 큰 컴퓨팅 자원이 요구 됩니다. 최근 여러 발전들로 자율주행이나 배달 로봇등에 실시간으로 적용할 수 있게 되었습니다.

 

오늘날, 가장 강력한 이미지 처리 모델들은 대부분 CNNs 에 기반하고 있습니다. 따라서, Human pose inference 에서도 CNNs 기반으로 state-of-the-art(SOTA) 모델들이 탄생하였습니다.

 

Bottom-up vs. Top-down methods

 

Pose estimation 의 모든 연구는 bottom-up 과 top-down 방식으로 구분지을 수 있습니다. 

 

  • Bottom-up 방식 : 먼저, 이미지에서 사람의 관절을 모두 추정합니다. 그리고 이를 특정한 포즈 또는 하나의 사람객체의 포즈로 그룹지어주는 방식입니다. ex. DeepCut model 
  • Top-down 방식 : 사람 detector를 이용하여 사람객체를 먼저 뽑아냅니다. 그리고 각 사람 객체에서 관절을 추정합니다. 

 

Pose Estimation 의 중요성

 

전통적인 object detection 에서 사람들은 bounding box, 즉 직사각형 박스로 사람이 검출되었습니다. 이와 달리 pose detection, pose tracking 을 이용하면, 컴퓨터는 사람에 대해 훨씬 잘 이해할 수 있게 됩니다. 그러나, 현재의 pose tracking 방법은 빠르지도 않고 겹치는 상황에서 잘 추정하지 못한다는 한계가 있습니다.

 

고성능 실시간 pose detection, tracking 이 컴퓨터 비전의 주된 트랜드로 자리를 잡아가고 있습니다. 실시간으로 사람의 포즈를 잘 추적한다면 사람의 행동에 대한 이해를 훨씬 세밀하게 잘 알 수 있게됩니다. 예를 들어 자율주행에서 보행자의 움직임을 탐지하고 추적하여 종합적으로 판단한다면 훨씬 안전하고 좋은 성능을 만들어 낼 수 있습니다.

 

 

What is Human Pose Estimation?

 

Human pose estimation 은 이미지나 비디오에서 사람의 관절 또는 부위를 예측하는 것이 목적입니다. 보통 사람의 특정 행동에 의해 특정 포즈 움직임이 만들어지므로, 사람의 포즈를 잘 아는 것은 사람의 행동 인식에 매우 중요한 역할을 합니다. 

 

What is 2D Human Pose Estimation?

2D Human pose estimation 은 이미지나 비디오 같은 시각 정보들 속에서 2차원 위치나 spatial location을 추정하는 것을 말합니다. 고적적인 2D Human pose estimation 방식은 엔지니어들이 직접 사람의 각 부위를 feature extraction 하는 hand-crafted 방식을 사용해왔습니다. 

 

최근의 딥러닝 기반의 접근은 single-person 뿐만 아니라 multi-person pose estimation 에서도 엄청난 성능향상을 거두었습니다. 2D human pose estimation 으로 유명한 방식은 OpenPose, CPN, AlphaPose, HRNet 등이 제안되어 왔습니다.

 

 

What is 3D Human Pose Estimation?

 

그렇다면 3D Human Pose Estimation 은 무엇일까요? 단순하게 말하면 신체 관절을 3차원 공간에서 위치를 추정하는 것을 말합니다. 몇몇 방법에서는 사람의 관절뿐만 아니라 3D human mesh 로 구성하기도 합니다. 3차원 공간의 정보는 훨씬 많은 정보를 제공하기 때문에,  최근 몇년간 아주 큰 각광을 받아 왔습니다. 다양한 응용이 가능하고 입체 애니메이션 산업이라든지, 가상현실, 증강현실 뿐만 아니라 행동 예측까지 적용할 수 있습니다. 또한 이는 하나의 이미지 또는 비디오에서도 작동할 수 있습니다.

 

다양한 각도의 이미지나 추가적인 센서(IMU or LiDAR)의 정보를 융합하여 3D pose estimation을 구현할 수도 있습니다. 2D human datasets 은 쉽게 구할 수 있는 반면, 3D pose 의 경우 image annotation 이 매우 힘드며, 수작업으로 라벨링을 하더라도 라벨이 정확하지 않습니다. 그러므로, 최근 몇년간 매우 큰 발전이 있었음에도 여전히 3D pose traking 은 여전히 극복해야 할 문제가 많습니다. Model generalization, robustness to occlusion, and computation efficiency 등의 문제가 존재합니다.

 

 

3D Human Body Modeling

 

Human pose estimation 에서, 사람 신체 부위의 위치는 사람 신체의 재현을 위해 이용됩니다. Human body modeling 또한 human pose estimation 에서 하나의 중요한 분야라고 할 수 있습니다. 시각적 데이터에서 추출된 특징이나 keypoints 들을 이용하는데 특히, model-based 접근의 경우 human body pose 를 묘사하고 추론하고 이를 2D 또는 3D render 하기 위해 사용됩니다. 

 

대부분의 방식은 N-joints rigid kinematic model 을 사용합니다. 이 모델은 body kinematic structure 또는 body shape 정보를 포함하고 있는 joints와 limbs 를 가진 하나의 entity 로 사람의 신체를 표현합니다.

 

Human body modeling 에는 세가지 종류의 모델 종류가 존재합니다.

 

  • Kinematic Model : skeleton-based model 이라고도 불립니다. 2D pose estimation 뿐만 아니라, 3D pose estimation 에도 적용할 수 있습니다. 이는 flexible 하면서 매우 직관적인 방식입니다. Human body structure 을 표현하는 관절 위치와 limb orientation 셋으로 구성되어 있스며, skeleton pose estimation model 은 신체 부위간의 관계를 파악학 위해 이러한 데이터 셋을 사용합니다. 그러나 skeleton 방식은 texture 나 shape 정보를 잘 표현하지 못한다는 단점이 있습니다.
  • Planar Model : contour-based model 이라고도 불립니다. 2D pose estimation 에서 사용됩니다. Planar model 은 사람의 형태나 모습을 표현하기 위해 사용되는 모델입니다. 일반적으로 여러개의 직사각형으로 신체 부위를 표현합니다. Active Shape Model(ASM) 이 주로 사용됩니다.
  • Volumetirc model : 3D pose estimation 에 사용됩니다. 딥러닝 기반의 3D human mesh를 추정하는 여러개의 유명한 모델들이 존재합니다. 예를들어, GHUM & GHUML(ite)는 end-to-end 딥러닝 방식으로 매우 고해상도 데이터 셋에서 학습된 모델입니다. 
  •  

 

Main Challenges of Pose Detection

 

Human pose estimation 에서의 주된 어려움은 무엇일까요? 

사람 데이터를 사용하기 때문에 옷을 입고 있는 데이터가 대부분 입니다. 옷에 의해 사람의 형태가 바뀌어 보일 수 있습니다. 또한 여러사람이 겹쳐있는 경우, 또는 배경 모델이 인식하기에 매우 어려워집니다.  또한 날씨나 조명에 훨씬 강인해져야 합니다. 이뿐만 아니라 사람이 보기에도 알아보기 힘든 저해상도 데이터거나 관절 부위가 너무 얇거나 작을 경우에도 인식하기 힘들게 됩니다. 

 

 

다른 변형 1 : Head Pose Estimation

 

컴퓨터 비전에서 사람의 머리 또는 얼굴 추정 또한 중요한 과제 였습니다. 예를 들어, Gaze estimation, modeling attention, fitting 3D models to video, face alignment 등 다양한 응용이 있습니다. 

 

고전적으로 target face 의 keypoints 를 이용하여 연산하여 처리합니다. 2차원과 3차원 사이 일치 문제를 mean head model 을 통해 해결합니다.

 

3D head pose 의 재건 능력은 keypoint-based 얼굴 표현 분석의 부산물입니다. 이는 딥러닝 방식으로 뽑아낸 2D facial keypoints 를 기반으로 하며, 겹치는 문제나 극단적인 변화에 강인합니다. 

 

 

다른 변형 2 : Animal Pose Estimation

 

대부분 최신 연구들은 사람데이터에 집중해왔습니다. 그러나 몇몇 모델은 동물이나 차 같이 object pose estimation 으로도 사용이 가능합니다. 

 

Animal pose estimation 은 labeled data 가 부족하고 self-occlusion 문제가 심각해서 훨씬 더 어렵습니다. 또한 동물들은 매우 빈번한 interaction으로 occlusion을 유발하고 개별 keypoint를 추정하기 매우 어려운 구조적 형태를 가지고 있는 경우가 많습니다. 또한 동물들은 매우 다양한 형태를 가지고 있으며 각각의 종별 데이터 수가 매우 적습니다.

 

이러한 문제를 해결하기 위해 사람에게 적용된 모델을 동물에게 적용하는 transfer learning 기술이 적용되어 왔습니다. 예를 들어 DeepLabCut 등이 있습니다. 

 

다른 변형 3 : Video Person Pose Tracking

 

복합적인 상황에서의 Multi-frame human pose estimation 은 매우 복잡하고 많은 컴퓨팅 자원을 필요로 합니다. 정지된 이미지에서 joints detector들은 좋은 성능을 보이는 반면, 실시간 트래킹을 위한 비디오 시퀀스에서 모델을 적용해보면 성능이 떨어지는 경우가 존재합니다.

 

Motion blur, video defocus, pose occlusions, inability to capture temporal dependency among video frames 등이 성능 저하의 원인이 됩니다. 

 

기존의 RNN을 적용하면 spatial context modeling이 어려워 집니다. DCPose 같은 최신 multi-frame human pose estimation framework에서는 비디오 프레임간 temporal 단서를 이용하여 keypoint detection을 용이하게 합니다. 

 

 

How does Pose Estimation work?

 

Pose estimation 은 pose 와 orientation 을 이용하여 사람이나 물체의 위치를 예측하고 추적합니다. 따라서 poes estimation 을 이용하여 이미지나 비디오에서 신체의 위치를 추정할 수 있습니다. 일반적으로, 대부분의 pose estimator 는 2 steps frameworks 입니다. 먼저 bounding box로 사람을 탐색합니다. 그리고 각 박스에서 사람의 pose를 추정합니다. 

 

Pose estimation 은 사람이나 물체의 key points 를 찾아냅니다. 예를 들어 사람의 경우 key points 는 팔꿈치, 무릎, 손목 등이 될 수 있습니다. Single-pose estimation 의 경우 주어진 영상에서 하나의 물체의 pose 를 추정하는 것이 목적이고, Multi-pose estimation 의 경우 여러 물체를 탐지하는 것이 목적이 됩니다.

 

Human pose estimation 에서 가장 유명한 데이터 셋은 MS COCO Dataset 입니다. 17개의 다른 keypoints (classes)로 구성되어 있으며 각 keypoints 는 3개의 숫자로 구성되어 있습니다.

(x,y,v) -- x,y 는 좌표를 나타내며 v 는 keypoint 가 영상에서 보이는지 여부를 나타냅니다.

 

"nose", "left_eye", "right_eye", "left_ear", "right_ear", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", "left_hip", "right_hip", "left_knee", "right_knee", "left_ankle", "right_ankle"

 

Pose Estimation with Deep Learning

 

딥러닝의 급격한 발전으로, 고전적 컴퓨터 비전 방식에 비해 딥러닝 기반의 모델들이 훨씬 월등한 성능을 보여주고 있습니다. 

 

다음은 Human pose detection, tracking 분야에서 유명한 모델입니다.

 

The Most popular Pose Estimation methods

  • Method #1 : OpenPose
  • Method #2 : High-Resolutiono Net (HRNet)
  • Method #3 : DeepCut
  • Method #4 : Regional Multi-Person Pose Estimation (AlphaPose)
  • Method #5 : DeepPose
  • Method #6 : PoseNet
  • Method #7 : DensePose

Deep Learning based Pose Detection methods

 

1. OpenPose

  • Bottom-up approach for multi-person human pose estimation
  • Open-sourced Real-time with high accuracy
  • API --- Flexibility oof selecting source images from camera fields, webcams, and others, more importantly for embedded system applications (ex, CCTV)
  • Lightweight version is enough for Edge inference applications with on-device processing

 

2. High-Resolution Net (HRNet)

  • Neural network for Human Pose Estimation
  • Find key-points (joints) with respect to the specific object or person in an image
  • The neural network maintains high-resolution representations when estimating postures
  • Good for the detection of human posture in televised sports

 

3. DeepCut

  • Bottom-up approach for multi-person human pose estimation
  • Detecting the number of people in an image and then predictin gthe joint locations for each image
  • Video, images

 

4. Regional Multi-Person Pose Estimation (AlphaPose)

  • Top-down method.
  • It is useful for detecting in the presence of inaccurate human bounding boxes
  • Optimal architecture for estimating human poses via optimally detected bounding boxes
  • AlphaPose architecture is applicable for detecting both single and multi-person poses in images or video fields

 

5. DeepPose

  • Leverages the use of deep neural networks
  • Captures all joints

 

6. PoseNet 

  • Pose estimator architecture built on tensorflow.js to run on lightweight devices suc as the browser or mobile device.
  • Single pose, Multi pose

 

7. DensePose

  • Mapping all human pixels of an RGB image to the 3D surface of the human body
  • Single pose, Multi pose

 

8. TensorFlow Pose Estimation

  • Tensorflow Lite provides pose estimation with a lightweight ML model optimized for low-power edge devices

 

 

Use Cases

 

 


반응형