Human Pose Estimation

이시우·2022년 12월 1일
0

human pose[AI]

목록 보기
1/2
post-thumbnail

Pose estimation은 영상 속에서 human object 자세(pose)를 추정하는 것입니다. 사람의 자세를 구성하는 주요 관절을 key point or joint라고 한다. 그래서 특정 pose를 만들어내는 key-points들을 찾아내는 task입니다.

✅ Key-points detection, Pose recognition

💡 <활용 분야/산업>
  • animation 제작
  • 게임, 아바타 동작(=meta bus)
  • 스포츠 영상 분석을 통한 서비스
  • medical assistance
  • CCTV

Marker vs Markerless system을 사용한다.

  • Markerless system은 RGB camera or depth camera를 이용하여 마커 없이 신체 joint 위치 추정할 수 있게 하는 시스템입니다. 그렇다면 축구장에서 반자동 오프사이드 판단 AI는 markerless system으로 마커없이 신체의 관절 포인트를 추정한다.

How? Input image상에서 key points의 x,y 좌표값 예측을 하는 과정이다.

입력 이미지 : RGB image
/ output : 사람의 Bounding Box와 탐지하고자 하는 point 좌표(x,y)

Single person pose estimation

말 그대로 입력 이미지 내 사람이 한명만 존재하는 경우를 나타냅니다.

Direct regression

  • 관절 별 좌표를 예측하는 것

bounding box를 사용해 사람이 존재하는 영역만 추출한다. ex. Bounding Box(x,y,w,h) = (120,150,200,300)

관졀별 좌표는 추출 전에 이미지내 좌표를 뽑아내기 때문에 BB에서 사람 영역만 뽑아내서 변환된 이미지 속의 좌표와는 다르기 때문에 변환이 필요합니다. 앞서 pre-processing한 내용에서 나온 산출 input 결과물을 가지고 CNN와 NN를 feature extractor로 사용해서 representation vector를 산출합니다. 산출된 벡터를 FC layer에 입력하여 관절별 예측 값을 산출할 수 있습니다.

(2k:k개의 관절별[x,y]처럼 1개의 관절에서 x,y 2개의 값을 가지고 있기때문에)

산출 예측값과 실제값의 차이가 발생하는데, MSE와 같은 loss_func을 이용해서 back propagation을 통해서 학습하고, 각 parameter에 반영해서 학습하는 방향이다.

앞에서 산출된 예측 관절 위치를 실제 이미지 내 위치로 역변환을 시킵니다. 이렇게 예측한 값은 정확하게 큰 이미지를 보면서 예측한 것이 아니라서 정교함이 좀 떨어진다는 결과가 나타날 가능성이 매우 높습니다. 그래서 예측한 값 근처로 BB를 다시 그린 다음에 crop해서 다시 CNN을 거치게 시킵니다.

  • 실제 이미지 내에서 왼쪽 어깨 예측값과 오른쪽 엉덩이 예측값 사이 거리를 계산하고 실제 이미지에 예측한 관절 위치를 중심으로 하는 BB 생성한다. 예를 들어서 BB의 너비와 높이는 델타(왼쪽 어깨 예측값과 오른쪽 엉덩이 예측값 사이 거리)

Heatmap based estimation

(2015) Efficient Object Localization Using Convolutional Networks(CVPR)

Heatmap[loc = (x,y)] // GT좌표 (x,y)를 Model로 하는 가우시안 분포 Heat map방식을 이용한다.

output을 x,y좌표 대신 heatmap을 통해 상대적인 빈도, 확률 값으로 가져가도록 한다. input image의 여러 pose로 인해 생기는 다양성을 잘 포용하도록 한다. 좌표 기반 방법론보다 높은 성능을 얻어냈다.

  • 특정 관절이 존재할 만한 곳은 heatmap 형태로 출력하는 것

Multi person pose estimation

입력 이미지 내 사람이 두 명 이상 존재하는 경우로 AI 심판이 파악해야하는 추정 방식이다.

Top-down approach

사람을 우선적으로 dectecting한 후 탐지 결과내에서 관절 별 좌표를 예측하는 방식

Mask R-CNN 동작

1) 객체가 있을만한 영역탐지(BB regression)

2) 탐지한 영역 내 어떠한 범주가 있는지 예측(classfication)

3) 상자 내 픽셀이 탐지한 범주인지 아닌지 분류(segmentation, pixel wise classfication)

Mask R-CNN basic architecture에 human pose estimation에 해당하는 내용 추가한다.

input image → feature extractor에서 image 특징을 추출하여 RPN를 통해서 어디가 객체가 있을지에 대한 정보를 알려준 후보군에서 Bounding box regression & classfication을 진행합니다. 이러한 분류한 객체 pixel에 binary class segmentation에서 속하는지 아닌지를 예측하게 됩니다. 그리고 추가된 human pose estimation에서 관절별 좌표를 가지고 해당하는 픽셀이 관절에 속하는지 예측하게 됩니다.

<손실함수>

Loss=LossRPN(reg)+LossRPN(classfi)+LossBB(reg)+LossBB(classfi)+LOSSsegment+LosshumanposeLoss = Loss_{RPN(reg)} + Loss_{RPN(classfi)} + Loss_{BB(reg)} + Loss_{BB(classfi)} + LOSS_{segment} + Loss_{humanpose}

⇒ Multi- task learning

Bottom-up approach

탐지하고자 하는 관절에 대한 위치 예측 후 사람별로 나누는 과정입니다.

Human pose estimation 평가지표

Percent of Detected Joints(PDJ)

기존 HPE 적용 사례**

  1. AI-based app(자세 교정) / hand-pose(수화)
    • Zenia(요가)
    • 골프픽스(골프)
  2. Athlete pose detection
  3. Motion tracking for gaming
  4. Infant Motion Analysis
  5. Fall detection
    • Markerless로 pose estimation으로 인명 피해를 최소화하는 방식이다
  6. Motion Transfer & Augmented Reality

    Reference

[AI 콜로퀴움] Human Pose Estimation 기술의 발전과 미래 (이경무 교수) : www.youtube.com/watch?v=GBpnsFfLt2Q

https://eehoeskrap.tistory.com/505

https://www.youtube.com/watch?v=w39bjQxm1eg

[서울대 AI 콜로퀴움] Human Pose Estimation 기술의 발전과 미래(이경무 교수)

[2022-S-3] Human Pose Estimation을 이용한 보행 장애 진단 시스템

Human action recognition running on PC and Nvidia Jetson TX2

profile
가까운 듯 먼 AI를 이해하는 과정

0개의 댓글