ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자세 추정(Pose Estimation) MLP 모델 개발 - 1
    전공 공부/AI 2020. 1. 20. 17:24
    728x90

     

     

    서 있는 자세, 앉아 있는 자세를 분류해내는 간단한 딥러닝 모델을 개발하려고 한다.

    위의 두 자세들을 정확히 분류를 한다면, 여러 복잡한 자세들을 추가할 예정이다.

     

    PoseNet 모델을 활용하여 각 관절의 좌표 값들은 얻어낼 수 있으나,

    해당 좌표 값을 가지고 직접 운동 인식 알고리즘을 구현하기에 어려움이 있었다. 

    이때, 자세 추정 관련 동영상을 보다 생각의 전환을 통해, 운동하는 각 자세의 좌표 값들을 학습 데이터로 구성하고,

    자세를 분류하는 딥러닝 모델을 구현하여, 규칙 기반 알고리즘으로 운동을 인식하면 어떨지 생각해보았다.

     

    스쿼트 운동으로 예를 들어 보이겠다.

    스쿼트 운동은 스쿼트 자세로 앉았다가 일어나는 시점에 카운트를 센다.

    따라서 스쿼트 자세로 앉은 자세, 서 있는 자세 두 가지 자세를 분류하는 딥러닝 모델만 있으면, 규칙 기반으로 쉽게 구현이 가능하다.

    만약 스쿼트 운동을 현재 좌표 값으로 인식하는 알고리즘을 직접 구현한다면, 꽤나 복잡할 것이다.

     

     

    이번 장에서는 각 자세의 데이터 셋을 구성하는 과정을 기록한다.

     

     

    먼저, 서 있는 자세, 앉아 있는 자세에 대한 데이터 셋을 구성하기 위해서

    PoseNet 모델을 활용하였다.

    https://github.com/tensorflow/tfjs-models/tree/master/posenet

     

    tensorflow/tfjs-models

    Pretrained models for TensorFlow.js. Contribute to tensorflow/tfjs-models development by creating an account on GitHub.

    github.com

    인공지능 모델 학습을 위한 좌표를 저장하기 위해 다음과 같은 제약사항을 두었다.

     

    1. 수많은 데이터(좌표 값)들을 빠른 시간 내에 얻도록 함  (버튼을 한 번 클릭하여, 0.4초의 간격으로 좌표들을 연속적으로 저장)

    2. 좌표 값들을 얻을 때 모든 관절의 좌표(16개)를 얻도록 함 (모든 관절이 잡히지 않으면 데이터 저장 x)

    3. 모든 관절을 추정한 정확도가 일정 정확도 이상이어야 좌표를 저장  (각 관절이 모두 70% 정확도 이상일 때만 저장)

     

    728x90

     

     

    위의 PoseNet 모델과 node.js를 활용하여 좌표를 저장할 수 있는 간단한 웹 페이지를 구현하였다.

    간단히 구현한 좌표 저장을 위한 웹 페이지

     

     

    'n초 당 m회 좌표 저장' 버튼을 누르면, 설정한 값(현재는 0.4초마다 30회 좌표 저장)만큼 좌표 저장을 수행한다.

    서 있는 자세와 앉아 있는 자세 각각 약 200개로 총 400개의 데이터를 구성하였다.

    이때, 좌표를 저장하는 동안 조금씩 움직여 다양한 좌표 값들을 저장하도록 한다.

    현재 좌표 저장 진행 상황을 나타내도록 하였음

     

    '데이터 셋 다운로드' 버튼을 누르면, 저장된 좌표들을 csv 파일로 저장한다.

    저장된 데이터 셋

     

     

    다음 장에서는 이 데이터 셋을 가지고 아주 간단한 MLP 모델을 구현해보겠다.

     

    본 연구는 과학기술정보통신부 및 정보통신기술진흥센터의 SW중심대학지원사업의 연구결과로 수행되었음
    728x90

    '전공 공부 > AI' 카테고리의 다른 글

    자세 추정(Pose Estimation) MLP 모델 개발 - 2  (13) 2020.01.20

    댓글

Designed by Tistory.