* 본 블로그 포스트에서 사용된 표, 이미지 및 기타 관련 자료는 해당 논문에서 발췌한 것입니다. 이 자료들은 논문의 내용을 요약하고 이해를 돕기 위한 참고용으로 제공됩니다. 또한, 해석 과정에서 일부 오류가 있을 수 있으니 원 논문을 참고하여 확인하시기 바랍니다.
1. Introduction
BlazePose의 필요성과 배경을 설명하며 시작합니다. 인간의 신체 포즈를 추정하는 기술은 헬스 트래킹, 수화 인식, 제스처 컨트롤과 같은 다양한 응용 분야에서 중요하게 사용됩니다. 그러나 모바일 기기에서 실시간으로 신체 포즈를 추정하기 위해선 기존의 복잡한 신경망을 경량화하는 것이 필수적입니다. BlazePose는 이러한 요구에 맞춰, 모바일 환경에서도 높은 성능을 발휘하도록 설계된 경량화된 CNN 기반 인체 포즈 추적 모델을 제안합니다.

2. Model Architecture and Pipeline Design
- 2.1 Inference Pipeline (추론 파이프라인): BlazePose는 탐지기-추적기 구조를 채택해 높은 실시간 성능을 달성합니다. 탐지기가 인체의 전반적인 위치를 감지하고, 추적기가 이 위치를 바탕으로 각 프레임의 키포인트 좌표를 예측합니다.
- 2.2 Person Detector (사람 탐지기): 신체 부위 중 얼굴이나 상반신 같은 비교적 고정된 부분을 기반으로 탐지하여, 인체의 위치를 정확하게 감지합니다. 이를 통해 강력한 신체 감지 성능을 유지하면서도 경량화가 가능하게 설계되었습니다.

- 2.3 Topology (토폴로지): BlazePose는 얼굴, 손, 발을 포함한 33개의 주요 신체 키포인트로 구성된 토폴로지를 사용합니다. 이는 다양한 응용 프로그램에서 활용할 수 있도록 기존의 여러 포즈 추정 시스템과 호환됩니다.

- 2.4 Dataset (데이터셋): 60,000여 개의 이미지를 사용하여 모델을 학습시키며, 특히 중첩된 상황을 시뮬레이션한 데이터 증강을 통해 폐색 상황에서도 견고한 성능을 발휘하도록 설계되었습니다.

- 2.5 Neural Network Architecture (신경망 아키텍처): BlazePose는 히트맵 기반 키포인트 추정과 회귀 방식을 결합해, 추론 중 히트맵 계층을 제거하고 경량화된 임베딩을 통해 좌표 회귀를 수행합니다.

- 2.6 Alignment and Occlusions Augmentation (정렬 및 폐색 증강): 신체의 주요 부분인 힙을 기준으로 이미지 정렬을 수행하며, 다양한 회전과 이동 증강을 통해 사람의 위치와 크기를 효과적으로 조정할 수 있도록 합니다.
3. Experiments
BlazePose의 성능을 평가하기 위해 OpenPose와 비교 실험을 수행했습니다. 두 가지 모델 BlazePose Full과 BlazePose Lite의 성능을 측정하여, Yoga/피트니스 동작에서는 BlazePose가 OpenPose를 상회하는 결과를 보였으며, 모바일 CPU에서 OpenPose 대비 25-75배 빠른 속도로 작동했습니다. 성능 평가 지표로 PCK@0.2를 사용하였으며, 이는 신체의 특정 크기 기준으로 키포인트 정확도를 측정하는 방식입니다.

4. Applications
BlazePose는 단일 인체 포즈를 실시간으로 추정하여, 수화 인식, 피트니스 트래킹, 증강 현실(AR)과 같은 응용 프로그램에 최적화되었습니다. 또한 BlazeFace, BlazePalm과 일관된 33 키포인트 토폴로지를 사용하여 손 및 얼굴 포즈 추정을 위한 기반 모델로도 활용 가능합니다.

5. Conclusion
BlazePose는 모바일 환경에서 실시간 인체 포즈 추정을 가능하게 하는 경량화된 모델입니다. 이 모델은 AR 및 피트니스 트래킹 등 다양한 응용에서 신속하고 안정적인 성능을 보이며, 향후 더 많은 키포인트와 3D 지원을 추가할 수 있는 확장 가능성을 제시합니다.
* 네트워크 아키텍쳐 구조
BlazePose의 네트워크 아키텍처는 엔코더-디코더 구조를 활용하여 경량화와 실시간성을 동시에 확보한 것이 특징입니다. 이 아키텍처는 아래와 같은 기술적 요소들을 결합하여 작동합니다:
1. 탐지기-추적기 구조(Detector-Tracker Setup)
BlazePose는 인체 탐지와 포즈 추정을 위한 탐지기-추적기 구조를 사용합니다. 먼저 탐지기(detector)가 인체의 전반적인 위치를 감지하고, 이후 추적기(tracker)가 이 위치를 바탕으로 각 프레임의 키포인트 좌표를 예측합니다. 만약 추적기에서 사람이 감지되지 않을 경우, 탐지기가 다시 동작하여 프레임을 분석하게 됩니다. 이 구조는 연속된 프레임에서 인체 위치의 변화를 추적하여 높은 정확도의 포즈 추정을 지원합니다.
2. 33개 신체 키포인트 토폴로지
BlazePose는 인체의 주요 부분을 나타내는 33개의 키포인트를 기반으로 하는 토폴로지를 사용합니다. 이는 BlazeFace, BlazePalm, Coco와 같은 기존 모델의 키포인트를 모두 아우르는 구조로 설계되어, 얼굴, 손, 발 등의 부위를 효율적으로 포함할 수 있습니다.
3. 결합된 히트맵 및 회귀 방식
BlazePose는 히트맵 기반의 키포인트 추정과 회귀(regression) 방식을 결합하여 실시간 성능을 강화했습니다. 모델은 히트맵을 통해 각 키포인트의 위치를 학습하며, 오프셋(offset)과 회귀 손실을 함께 사용하여 추론 과정에서 불필요한 계층을 제거합니다. 이를 통해 경량화된 엔코더-디코더 구조가 이루어지며, 추론 단계에서는 히트맵 계층을 제외하여 경량성을 확보합니다.
4. 스킵 연결(Skip Connections)
BlazePose 아키텍처는 고유한 스킵 연결을 포함하여 다양한 단계에서 고수준 및 저수준 특성을 모두 반영할 수 있도록 설계되었습니다. 이 연결 구조를 통해 히트맵을 통한 피드백이 예측 단계에 직접적으로 전달되지 않으며, 오히려 독립적으로 학습된 회귀 계층으로 이동하여 전체적인 좌표 회귀 정확도를 높이는 역할을 합니다.
5. 기준 정렬 및 폐색 대응
BlazePose는 키포인트 감지의 신뢰성을 높이기 위해 폐색을 고려한 데이터 증강 방식을 사용합니다. 훈련 데이터셋에 다양한 시뮬레이션을 적용하여 폐색된 부분에서도 효과적인 포즈 추정이 가능하도록 설계되었습니다. 또한, 중심 정렬(centered alignment)을 통해 인체의 중심점(엉덩이 사이 지점)을 기준으로 위치를 설정하고, 힙과 어깨의 중심을 이용하여 회전과 크기 등을 보정합니다.
이와 같은 BlazePose 아키텍처의 설계는 주로 모바일 환경에서 실시간으로 신체의 자세를 정확하게 추정하기 위한 목적으로, 모바일 CPU에서도 빠르게 실행되는 경량화된 신경망을 구현하기 위해 설계되었습니다.
스킵 연결(Skip Connections)의 역할과 효과
1. 기울기 소실 문제 완화
- 깊은 신경망에서는 여러 레이어를 거치며 입력의 기울기(Gradient)가 점차 줄어드는 문제가 발생합니다. 이는 역전파(backpropagation) 과정에서 초기 레이어까지 충분한 기울기가 전달되지 못해 학습이 제대로 이루어지지 않는 기울기 소실 문제를 초래합니다.
- 스킵 연결은 입력 정보를 중간 레이어를 거치지 않고 직접 전달함으로써, 기울기가 손실되지 않고 초기 레이어까지 전달될 수 있도록 합니다. 이를 통해 역전파 시 모든 레이어에 충분한 기울기를 전달하여 네트워크 전체가 효과적으로 학습될 수 있습니다.
2. 잔차 학습(Residual Learning)
- 스킵 연결은 입력 `x`를 다음 레이어로 그대로 전달하면서, 각 레이어가 입력과 출력의 차이인 잔차(residual)만 학습하도록 만듭니다.
- 수학적으로는 `H(x) = F(x) + x`로 표현되며, 여기서 `F(x)`는 학습할 잔차로, 레이어는 기존 정보에 추가로 필요한 변동량만 학습하게 됩니다.
- 이렇게 하면 레이어가 학습해야 할 부하가 줄어들어 더 빠르고 효과적으로 학습이 이루어집니다. 즉, 모델이 이미 알고 있는 정보를 반복해서 학습할 필요가 없어져, 학습 속도와 효율이 크게 향상됩니다.
3. 정보 손실 방지 및 특징 보존
- 깊은 신경망에서는 저수준 특징(엣지, 색상 등)에서 시작해 점차 고수준 특징으로 변환됩니다. 이 과정에서 저수준의 세부 정보가 손실될 수 있습니다.
- 스킵 연결은 저수준 특징을 후속 레이어로 직접 전달하여, 고수준 특징과 저수준 특징이 함께 유지되도록 합니다. 이는 특히 이미지 인식 같은 작업에서 유용하며, 저수준 시각 정보를 유지해 더 정확한 예측을 가능하게 합니다.
4. 깊은 신경망의 학습 가능성 증가
- 스킵 연결은 깊은 신경망에서도 정보 전달을 안정적으로 유지하므로, 매우 깊은 구조에서도 학습이 잘 이루어지게 합니다. 예를 들어, ResNet(Residual Network)은 수백 개의 레이어를 가진 매우 깊은 구조임에도 스킵 연결 덕분에 학습이 가능해졌습니다.
- 이는 기존 신경망이 레이어가 깊어질수록 학습 효율이 떨어지는 문제를 극복한 사례입니다.
BlazePose에서의 스킵 연결 활용
BlazePose에서도 스킵 연결을 사용해 히트맵 기반 예측과 회귀 기반 예측을 결합합니다. BlazePose에서의 스킵 연결 사용의 구체적인 목적은 다음과 같습니다:
- 기울기 소실 문제 방지: 히트맵 기반의 저수준 위치 정보가 회귀 예측 레이어로 전달될 수 있도록 스킵 연결을 사용하여 기울기가 손실되지 않게 합니다.
- 고수준 및 저수준 정보 결합: 저수준 특징과 고수준 특징이 모두 유지되어 더욱 정밀한 좌표 추정이 가능해집니다.
- 그라디언트 스톱(Gradient Stop): BlazePose는 그라디언트가 다시 히트맵으로 전달되지 않도록 특정 연결에서 그라디언트를 중단함으로써, 서로 다른 학습 목표를 가진 레이어들이 독립적으로 학습할 수 있도록 합니다.
간단정리
스킵 연결(Skip Connections)은 다음과 같은 이유로 BlazePose와 같은 깊은 신경망의 학습 효율을 높입니다:
- 기울기 소실 문제를 완화하여 모든 레이어가 학습에 참여할 수 있도록 함
- 잔차 학습을 통해 학습할 필요가 있는 변동량만 학습하여 학습 속도와 효율을 향상
- 정보 손실을 방지하고 고수준과 저수준 특징을 모두 결합하여 더 정확한 예측을 가능하게 함
- 깊은 신경망에서도 안정적인 학습을 가능하게 하여, BlazePose가 실시간으로 높은 성능을 유지할 수 있도록 돕습니다.
따라서 스킵 연결은 BlazePose와 같은 모델에서 경량성과 성능을 동시에 확보하기 위해 필수적인 기술로 사용됩니다.