ViTPose를 활용한 인간 포즈 추정 모델 학습 및 평가 가이드

ViTPose 아키텍처 개요

ViTPose는 Vision Transformer(ViT)를 핵심 백본으로 활용하여 인간 포즈 추정(Human Pose Estimation) 작업을 수행하는 딥러닝 프레임워크입니다. 기존 CNN 기반 모델과 달리 패치 단위의 어텐션 메커니즘을 통해 전역적 맥락을 효과적으로 포착하며, 다양한 벤치마크 데이터셋에서 높은 정확도를 기록하고 있습니다. 이 가이드에서는 해당 오픈소스 프로젝트의 코드베이스를 분석하고, 모델을 직접 학습 및 평가하는 절차를 다룹니다.

소스 코드 디렉토리 구조

효율적인 실험 관리를 위해 프로젝트는 다음과 같은 모듈형 디렉토리 구조를 따릅니다.

  • configs/: 모델 아키텍처, 하이퍼파라미터, 데이터 파이프라인을 정의하는 Python 설정 파일이 위치합니다.
  • datasets/: COCO, MPII 등 다양한 포즈 데이터셋을 로드하고 전처리하는 커스텀 Dataset 클래스를 포함합니다.
  • models/: ViT 백본, 포즈 헤드, 손실 함수 등 신경망의 핵심 레이어와 모듈이 구현되어 있습니다.
  • tools/: 분산 학습, 모델 평가, ONNX 내보내기 등 주요 워크플로우를 실행하는 엔트리포인트 스크립트를 제공합니다.
  • utils/: 로깅, 시각화, 키포인트 지표 계산(NMS, OKS 등) 등 공통 유틸리티 함수를 관리합니다.

모델 학습(Training) 파이프라인

모델의 가중치를 업데이트하고 학습을 진행하기 위해 tools 모듈의 트레이닝 스크립트를 호출합니다. 아래 예시는 다중 GPU 환경에서 분산 학습을 수행하는 명령어입니다.

python -m tools.train \
    --config configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192.py \
    --work-dir ./experiments/vitpose_base_coco \
    --seed 2024 \
    --gpu-ids 0 1 2 3 \
    --resume

주요 인자 설명:

  • --config: 실험에 사용할 설정 파일의 경로를 지정합니다.
  • --work-dir: 체크포인트와 로그 파일이 저장될 출력 디렉토리를 정의합니다.
  • --resume: 이전 학습이 중단된 경우, 가장 최신 체크포인트부터 이어서 학습을 재개합니다.

모델 평가(Evaluation) 및 추론

학습이 완료된 모델의 성능을 정량적으로 측정하려면 테스트 스크립트를 실행합니다. 단일 노드 멀티 GPU 환경에서의 평가 명령어는 다음과 같이 구성할 수 있습니다.

python -m tools.test \
    --config configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192.py \
    --checkpoint ./experiments/vitpose_base_coco/best_coco_AP_epoch_210.pth \
    --gpus 4 \
    --eval mAP

이 명령어는 지정된 체크포인트를 불러와 검증 데이터셋에 대한 추론을 수행한 후, 평균 정밀도(mAP) 및 평균 재현율(mAR)과 같은 포즈 추정 특화 지표를 콘솔에 출력합니다.

설정 파일(Configuration) 커스터마이징

configs/ 디렉토리 내의 Python 파일은 실험의 모든 세부 사항을 제어합니다. 설정 파일은 상속(inheritance) 구조를 지원하여 중복을 최소화합니다. 주요 구성 요소는 다음과 같습니다.

  • Model Architecture: ViT의 패치 크기, 임베딩 차원, 트랜스포머 인코더의 레이어 수 및 어텐션 헤드 수를 정의합니다.
  • Data Pipeline: 이미지 리사이징, 랜덤 회전, Half-body 크롭 등 데이터 증강(Augmentation) 기법과 텐서 정규화 파라미터를 설정합니다.
  • Optimization: AdamW 옵티마이저의 초기 학습률, 가중치 감소(Weight Decay), 그리고 코사인 어닐링(Cosine Annealing) 학습률 스케줄러의 주기를 구성합니다.

사용자는 _base_ 디렉토리의 기본 설정을 상속받은 후, 특정 실험에 필요한 파라미터만 오버라이딩(Overriding)하여 새로운 설정 파일을 손쉽게 생성할 수 있습니다.

태그: ViTPose VisionTransformer HumanPoseEstimation DeepLearning PyTorch

5월 26일 17:01에 게시됨