Docker로 피트니스 AI 모델 구동하기 (1) - 이미지 내부 폴더 구조

Jiyeahhh·2021년 11월 8일
0

[Project] AI 홈트 앱

목록 보기
5/9

사용 데이터 (피트니스 자세 이미지 - AI 허브)
https://aihub.or.kr/aidata/8051

길고 긴 시간 끝에 docker 설치를 끝내고, 이미지 로드까지 성공했다!

  • 우선 지금 사용하고 있는 노트북에는 nvidia 그래픽이 없어서 GPU로 돌릴 수가 없다.
  • 그래서 크롬 원격으로 다른 데스크톱으로 돌려 볼 예정이고, 그 전까지는 내부 폴더 구조 및 코드 리뷰를 해볼 생각이다.

  • 코드는 Ubuntu 18.04CUDA 10.1에 따라 개발
  • PyTorch 1.3.1 사용

1. 내부 폴더 구조

${ROOT}  
|-- data  
|-- demo
|-- common  
|-- main  
|-- output 
|-- tool
  • data contains data loading codes and soft links to images and annotations directories.
  • demo contains demo codes.
  • common contains kernel codes for FitNet.
  • main contains high-level codes for training or testing the network.
  • output contains log, trained models, visualized outputs, and test result.
  • tool contains data pre-processing code (get_exercise_dict.py), which makes exercise_dict.json.

여기서 main 폴더 안의 코드들이 neural network학습시키고 테스트할 수 있는 주요 코드들 ❗


1-1. data

${ROOT}  
|-- data  
|   |-- Sleek 
|   |-- |-- data
|   |   |   |-- exercise_dict.json
|   |   |   |-- Day01_200921_F
|   |   |   |-- Day02_200922_F
...
|   |   |   |-- Day34_201106_F

1-2. main

${ROOT}  
|-- main  
|   |-- config.py  
|   |-- model.py  
|   |-- run_test.py
|   |-- run_train.py
|   |-- test.py
|   |-- train.py

1-3. output

${ROOT}  
|-- output  
|   |-- log  
|   |-- model_dump  
|   |-- result  
|   |-- vis  
  • 대용량 저장 공간이 필요하므로 소프트 링크 형식으로 output 폴더를 만드는 것이 좋음
  • log folder contains training log file.
  • model_dump folder contains saved checkpoints for each epoch.
  • result folder contains final estimation files generated in the testing stage.
  • vis folder contains visualized results.

2. Running FitNet

  • 3.7.3 버전 이상의 python과 본인의 OS에 맞는 pytorch 설치하기
  • main/config.py에서 모델에 관한 하이퍼 파라미터 설정 가능 (network backbone and input size, ..)

💡 두 가지 단계

  • 1) exer
    ⇒ 운동 유형을 예측하도록 학습 (e.g., push up and benchpress)
  • 2) attr
    ⇒ 운동 속성을 예측하도록 학습 (e.g., too fast)

2-1. Train

  • stage의 인자 값으로 exer를 넘기면 운동의 종류, attr을 넘기면 운동의 상태를 학습

1) exer

  • main 폴더 안에서 실행
python train.py --gpu 0-3 --stage exer --exer_idx -1
  • --gpu 0-3 대신 --gpu 0,1,2,3 사용 가능

2) attr

  • main 폴더 안에서 실행
python train.py --gpu 0-3 --stage attr --exer_idx $EXER_IDX
  • --gpu 0-3 대신 --gpu 0,1,2,3 사용 가능
  • $EXER_IDXdata/Sleek/data/excise_dict.json에 정의된 exercise index

💡 Batched training

  • 운동의 수가 많기 때문에, exer, attr 단계에서 모든 운동에 대해 학습시킬 수 있는 batched training script 제공
python run_train.py

2-2. Test

  • 학습된 모델output/model_dump/에 위치
  • exerattr 중에서 테스트하고 싶은 단계 선택
  • main 폴더 안에서 실행
python test.py --gpu 0-3 --stage $STAGE --test_epoch 20 --exer_idx $EXER_IDX
  • --gpu 0-3 대신 --gpu 0,1,2,3 사용 가능
  • $STAGEexer, attr 둘 중 하나여야 함
  • $EXER_IDX$STAGEexer일 때 -1
    그렇지 않으면 exercise_dict.json에서 선택

💡 batched test

  • main 폴더 안에서 실행
python run_test.py

3. 결과 예시


🔎

  • 스쿼트, 푸쉬업, 플랭크만 뽑아서 모델 개발하기
  • pytorch -> tensorflow lite
profile
람차람차

0개의 댓글