[논문리뷰] Ergonomic posture recognition using 3D view-invariant features from single ordinary camera
본문 바로가기
Paper

[논문리뷰] Ergonomic posture recognition using 3D view-invariant features from single ordinary camera

by Migos 2020. 3. 21.
반응형

저널명 : Automation in Construction

 

TLDR; CNN 네트워크(Convolutional Pose Machine)을 통해 2차원 좌표 추출, 3차원 좌표 Regression, human3.6m 데이터셋(정답지) 으로 학습, 각도변환, Classification algorithm으로 각 자세 구분(Definition참조).

 

 

1. Ergonomic posture capture systems

정량적 자세분석을 위해 OWAS 체크리스트에서 정의하는 신체부위 위험자세 점수를 구하는 방식을 따른다.

OWAS 체크리스트는 크게 세 가지 부위의 자세점수를 합산해서 최종 점수가 도출되며, 아래와 같다.

 

2. Definition

Arms  A-C 로 갈수록 위험 Quantative definition
 A.  두 팔 모두 어깨보다 아래에 위치(Both arms below, shoulder level) 어깨각도 -90 ~ +90도
 B.  한 팔이 어깨 위에 위치(One arm at or above shoulder level) 한 어깨각도 +90 ~ +180도
 C.  두 팔이 어깨 위에 위치(Both arms at or above shoulder level) 두 어깨각도 +90 ~ +180도

 

Back A-C 로 갈수록 위험 Quantative definition
 A.  허리를 올바르게 폈을 때(Straight back) 허리각도 -20 ~ +20도
 B.  허리 굴곡자세(Back bent) 허리각도 (-60 ~ -20도) 또는 (+20 ~ +60도)
 C.  허리 굴곡 심한 자세(Back bent heavily) 허리각도 (-90 ~ -60도) 또는 (+60 ~ +90도)

 

Legs A-C 로 갈수록 위험 Quantative definition
 A.  한/두 다리로 서있는 자세(Standing with one or both straight legs) 무릎 굴곡각도 (0 ~ +20도)
 B.  무릎을 꿇은 자세(Knees bent) 무릎 굴곡각도 (+20 ~ +90도)
 C.  살짝 굽히고 있는자세=스쿼트자세(Squatting) 무릎 굴곡각도 (+90 ~ +180도)

 

3. 2, 3차원 좌표 추출 방법

좌표추출방법 : Convolutional Pose Machine (CPM)

CPM은 아래 포스팅 참고하시오!

 

2차원 이미지가 CPM 딥러닝 네트워크를 통과하면 히트맵(확률이 높은 위치) 에 표시가 된다. 확률이 높은 영역을 계속 Regression 하다보면 최종 좌표값이 도출되는데, 이 값을 가지고 3차원 상에 투영하여 Depth 정보를 나타내는 z값을 Regression한다. 

즉, 2D x,y Keypoint 추출 후 3D x,y,z 좌표 추출.

 

2차원 이미지에서 좌표를 추출해서 자세를 분석하면, View invariant 문제가 발생한다. 즉, 촬영하는 카메라 위치에 따라 좌표 및 각도가 왜곡되는 현상인데, 쉽게 얘기하면 정면에서 T 포즈를 취한 사람을 찍은 사진과, 동일한 자세를 양옆에서 찍은사진을 가지고 어깨 굴곡각도를 측정한다고 보면, 정면은 90도로 잘 측정되는 반면, 측면은 카메라를 가리키고있기 때문에 왜곡이 발생한다.

 

논문에서 얘기하고싶은 것은 2차원으로는 왜곡이 발생하니 3차원이 필요하다는 것이다.

 

4. 3D joint location estimation

Yp = argmax(t) bp[u, v]

  • belief map(heatmap) = landmark(p), x좌표(u), y좌표(v), stage(t)
  • stage(t) = CPM네트워크의 학습 단계

5. Training

3차원 Regression을 위한 데이터셋 : Human3.6m 데이터셋(3.6만개의 레이블링된 자세 데이터셋)

 

매 단계(stage)마다 belief map(heapmap)을 뽑아낸다.

예를 들면, 처음에 이미지 중심에서 작은 네모가 형성된다. 그 안에서 신체부위를 1차적으로 탐지한다. 그 다음 단계(stage)에서 네모 영역을 더 크게 확장하고 신체부위를 탐지한다. 매 단계(stage)를 거듭할 수록 네모영역은 커지고 탐지되는 신체부위는 더 많을 것이다. 

 

사진출처: http://openresearch.ai/t/cpm-convolutional-pose-machines/76

2차원 좌표를 뽑아내고 3차원좌표까지 뽑아낸 결과를 벤치마크 human3.6m 데이터셋과 비교해서 학습이 진행된다.

 

이렇게 도출한 3차원 x,y,z 좌표를 가지고 각도로 변환해서 자세를 구분한다. 각도를 사용한 이유는 사람의 키, 몸무게 등 여러 스케일에도 변하지 않는 값을 가지기 때문에 사용했다. 실제로 키넥트를 사용한 많은 논문들이 자세를 구분하는데 있어 각도를 사용하고 심지어 체크리스트도 각도에 따라 점수를 부여하는 방식을 따른다.

 

 

6. Evaluation

각도까지 뽑아 냈으면, 이제 Classification algorithm을 사용해서 신체부위(팔/허리/다리)의 정의된 자세(A,B,C)를 구분한다.

 

Classification algorithm

  • Back-propagation artificial neural network(BP-ANN)
  • Decision Trees(DT)
  • Support vector machine(SVM)
  • K-nearest neighbor classifier(KNN)
  • Ensemble classifiers(EC)

 

Classifier 검증방법

  • Confusion Matrix 5-fold cross validation.
  • F-1score

7. 결과 : 대부분 classifier 정확도는 90% 이상이었다.

  • arm : 98.7%(DT)
  • back : 99.5%(SVM)
  • legs : 99.8(SVM)

8.  Limitation

다리 bent, squart 자세를 구분하는데 어려움( Self occlusion때문).

 

9. Future work

신체부위의 움직임 속도, 힘의 크기 측정도 반영.

 

10. Summary(contribution)

1. using view invariant features from 2D camera.

2. using R3DJP & Joint angle features from 2D camera.

3. Outstanding classification accuracy.

 

 

반응형

댓글