라벨링된 데이터를 기다릴 것인가, 말 것인가? Nanit의 사람 자세 추정 모델 구축 방식
이 글은 AI 번역본입니다. 오역이 있을 경우 댓글로 알려주세요.
Created on September 16|Last edited on September 16
Comment
참고: 이 보고서의 패널과 플롯은 기초 데이터의 프라이버시를 보호하기 위해 스크린샷으로 제공됩니다.
Nanit에 대해 한마디
이 블로그 글에서는 Nanit 팀이 제품용 모델을 구축할 때 겪는 과제와 고려 사항을 단계별로 살펴봅니다. 특히 인간 포즈 추정 사례를 통해 자세히 설명하겠습니다.
을 위해 Nanit, 이들의 제품과 서비스는 부모를 위한 지원 체계를 구축하여, 그 어느 때보다 자녀의 발달에 더 가까이 다가갈 수 ��게 합니다. 부모 지원 시스템의 일환으로, Nanit은 신장 측정을 제공하며, Smart Sheets 제품 그리고 아이의 신체 발달 이정표를 더 잘 이해할 수 있도록 합니다. 우리는 작업 내용을 공유했습니다 전에, 그리고 그들은 W&B에서 모델을 학습합니다.
이 글의 나머지 부분은 Nanit 연구원 한 사람의 관점에서 작성되었습니다.
소개
인간 키포인트 추정은 디지털 시각 영역에서 사람을 표현하는 자연스러운 방식이며, 컴퓨터 비전의 기본 과제 중 하나입니다. 동작 인식, 포즈 추정, 애니메이션, 트래킹 등 다양한 컴퓨터 비전 응용 분야에 활용됩니다. 그러나 가림, 스케일, 조명, 장면 유형 등 여러 요인의 변동으로 인해 상당한 엔지니어링적 난제를 제기합니다.

인간 키포인트 주석 예시
자체 데이터셋과 요구사항에 맞춘 지도학습 기반 인간 포즈 추정 모델을 개발하려면, 상당히 방대한 데이터 수집과 번거로운 주석 작업이 모두 필요합니다. 여기서 핵심적으로 고려해야 할 트레이드오프는 주석이 달린 데이터의 양과 비용, 그리고 출시까지 걸리는 시간 간의 균형입니다.
이 시점에서 선택지는 두 가지입니다. 대량의 데이터를 기다려 긴 개발 주기를 감수한 뒤에야 오류를 발견하든지, 아니면 더 많은 기법을 동원해 모델을 반복적으로 개선하되 과적합 위험을 감수하든지입니다. 우리의 실험에서는 두 번째 방식을 선택하겠습니다.

이 글에서는 Nanit 팀이 데이터와 알고리즘 측면에서 이러한 과제를 해결하는 데 도움이 된 핵심 주제들을 공유합니다. 문제 정의에서 시작해 알고리즘 개선으로 나아가기까지, 우리가 모델을 개발해 온 순서에 따라 각 주제를 차례로 살펴보겠습니다.
Nanit의 우리는 골격 우리 사례에도 매우 유용한 모델이라고 판단했으며, 이 프로젝트를 위해 다음과 같은 목표를 설정했습니다:
- 개발하기 골격 키 측정 문제를 위한 모델
- 개발하기 골격 여러 목적을 위해 활용할 수 있도록 Nanit의 다양하게 분포된 데이터를 다루는 모델
이제 평가 지표를 살펴보겠습니다.
평가 지표
빠른 출시 속도는 어떤 회사의 성공에도 핵심적이며, 짧은 개발 경로로 높은 품질의 제품을 만들어 내는 것은 Nanit이 우리의 목표를 달성하는 데 큰 도움이 됩니다. 하지만 제품의 품질은 어떻게 정의할 수 있을까요?
처음부터 평가 지표를 명확히 정의하면 집중력을 유지하고 각 단계가 프로젝트 목표로 나아가고 있는지 검증할 수 있습니다. 프로젝트 목표를念頭에 두고, 사용자 관점에서 프로젝트 진행 상황을 어떻게 평가할지, 그리고 그것을 어떻게 “번역”하여 골격 모델. 그 결과 우리는 다음과 같은 지표를 사용하기로 했습니다:
키 높이 오차
이 지표는 최종 사용 사례를 검증하는 것으로, 골격 키 측정에서의 모델. 키 측정 알고리즘은 사람의 키포인트 집합에서 파생됩니다. 우리는 우리의 키 측정이 제공하는 사용자 경험과 정확도를 검증하는 것을 목표로 했습니다. 골격 전용 테스트 세트에서 표준 지표로 키 정확도를 확인하여 모델을 평가합니다.
PCKh
사용자 지표를 정의한 다음에는 한 단계 더 나아가 다음을 정의할 수 있습니다 골격 모델 평가 지표. 과제는 사용자 경험과 상관관계가 높은 모델 지표를 찾는 것입니다. 이러한 지표를 찾으면 더 나은 모델 평가는 더 나은 사용자 경험으로 이어집니다.
PCKh 지표는 골격 모델 자체의 성능을 평가합니다. PCKh는 머리 크기로 정규화한 Percent Correct Keypoints의 변형으로, 다음과 같이 정의됩니다. MPII 데이터세트(사람 자세 추정에서 흔히 쓰이는 데이터세트 중 하나)입니다. 관절은 GT 위치로부터 α·l 픽셀 반경 안에 있으면 올바른 것으로 간주합니다. ‘α’는 상수로, 예를 들어 PCKh@0.1(α = 0.1)이며, ‘l’은 머리 경계 상자에 대한 상대값입니다.
주목할 만한 점은, OKS (객체 키포인트 유사도)은 일반적으로 …에서 사용됩니다 COCO 키포인트 데이터세트입니다. 그러나 우리는 이를 사용하지 않기로 했고, 대신 MPII 지표를 따르며 PCKh@0.1을 사용했습니다. 골격 모델 평가. 키포인트 위치 정확도에 높이 측정이 더 민감하기 때문에 α = 0.1로 설정했습니다.
아키텍처
먼저 MPII와 COCO 같은 주요 데이터세트에서 학습 및 평가되어 성능이 입증된 아키텍처를 조사했습니다. 우리의 과제는 정교한 위치 추정이 중요하므로, 이를 달성하기 위해 필요한 고해상도 정보를 유지하는 아키텍처(아래 다이어그램 참조)를 우선적으로 검토했습니다.
우리는 선택했습니다 HRNet, 최상위 성능의 탑다운 인간 자세 추정 아키텍처( 확인해 보세요 Papers with Code) 히트맵 회귀에 기반합니다. 탑다운 아키텍처란 먼저 사람을 검출한 뒤 관절 위치를 추정하는 방식을 의미합니다.

HRNet 아키텍처
이 모델의 손실 함수는 보이는 관절에 한해 예측 히트맵과 GT 히트맵 사이의 평균제곱오차입니다. GT 히트맵은 관절의 GT 위치를 중심으로 한 가우시안 분포로 구성됩니다.

키 측정 과제를 위해, 우리는 과제에서 사용하는 관절과 MPII 데이터세트의 관절 간 겹침이 크다는 이유로 MPII로 사전 학습된 HRNet 모델을 출발점으로 선택했습니다. Nanit의 키 측정에 이 스켈레톤 모델을 활용하려면 추가 관절을 더해야 했습니다. 실무적으로는 모델의 출력 채널에 더 많은 히트맵을 추가하는 것을 의미합니다. 우리는 새로운 관절을 사전 학습 모델의 가장 가까운 관련 관절로부터 초기화하는 방식이 가장 효과적이라는 것을 확인했습니다.
또한 일반적인 사람 중심 이미지에서는 보통 머리가 위를 향해 있다는 점도 관찰했습니다 😊. 우리는 탑다운 접근을 활용해 학습 중 이미지의 상단에 머리 위치가 유지되도록, 이미지를 회전하는 전처리 단계를 추가했습니다.
데이터 수집
스켈레톤 주석 작업은 오래 걸리고 부담이 큰 일입니다. 짧은 출시 일정 안에, 제한된 예산과 적은 데이터로 확장성과 견고함을 갖춘 모델을 개발하기는 쉽지 않습니다. 한마디로, 데이터 주석은 모든 데이터 중심 프로젝트의 병목입니다. 따라서 데이터 관리는 목표를 올바르게 향해 가고 있는지 검증할 수 있는 절차와 함께 신중하게 수행되어야 합니다.
주요 과제는 골격 모델과 관련된 주요 과제는 인간 자세에 대한 민감도와, 가림(occlusion)이 있는 상황에서의 학습 능력입니다. 앞서 언급한 어려움과 데이터 주석 작업의 복잡성을 고려하여, 우리는 반복적(iterative) 접근을 선택했습니다. 데이터 수집은 시간과 비용 면에서 매우 비싼 과정입니다. 반복적 프로세스는 우리가 집중력을 유지하고 모델을 지속적으로 평가하도록 도와, 과도한 시간과 비용을 쓰지 않으면서도 프로젝트 목표를 향해 꾸준히 나아가게 해 주었습니다. 더 나아가 주석 팀에 빠른 피드백을 제공함으로써 노이즈 수준을 낮추는 데에도 기여했습니다.
우리는 주석이 완료된 데이터의 목표량을 ⅅ로 표기합니다. 개념 검증(POC)을 위해 ⅅ의 10%에 주석을 달았습니다. POC를 성공적으로 마친 뒤에는, 우리는 다음 작업에 집중했습니다. 골격 Nanit의 키 측정을 위한 모델이 제대로 작동하도록 하는 것이 목표였습니다. 데이터 수집은 이 목표의 요구사항을 충족하도록 설계되었으며, 그에 따라 사람의 자세, 가림, 센서 유형, 장면 등의 측면에서 우리가 원하는 데이터 분포가 결정되었습니다. 첫 번째 반복에서는 ⅅ의 추가 40%를 구성했고, 일부 자세에 집중하되 가림 발생 확률은 낮게 설정했습니다.
각 반복에서 새로운 데이터 청크로 학습한 뒤, 앞서 언급한 지표에 따라 모델 성능을 평가했습니다. 이 평가의 결과로, 프로젝트의 목표와 지표 관점에서 모델이 성능을 개선하기 위해 필요한 데이터의 유형을 도출했습니다.
또한 제한된 데이터 제약 속에서 코딩, 문헌 조사, 그리고 모델을 개선할 방법을 모색하는 일은 정해진 기간 내 프로젝트 성공의 핵심 요소입니다. 이러한 작업은 데이터 수집의 각 반복 단계 동안 지속적으로 수행되어야 합니다.

신뢰할 수 있는 작동 모델을 확보한 뒤, 우리는 반복적 방식을 유지하면서 ⅅ의 50%를 추가해 전체 포즈 추정 과제를 본격적으로 다룰 수 있는 탄탄한 기준선을 마련했습니다.
알고리즘 개선
아래에 소개하는 알고리즘 개선 사항들은 실제 실험과 진행 일정의 순서를 그대로 따릅니다. 우리는 일반적인 방법부터 시작해, 데이터 증강과 가중치 고정 정책을 거쳐, 스켈레톤 관절을 표현하는 방식을 바꾸어 모델 성능을 높이는 등의 고급 기법으로 확장해 나갔습니다.
데이터 증강
학습에 사용할 데이터가 제한적일 때, 데이터 증강은 모델 성능을 높이고 과적합을 줄이기 위한 기본적인 접근입니다. 증강 메커니즘을 구축할 때는 증강된 데이터가 원래 문제의 분포와 유사하게 유지되도록 하는 것이 중요합니다. 연속된 증강을 적용하면 우리가 해결하려는 문제의 목표 분포를 반영하지 못하는 비현실적인 이미지가 생성될 수 있으며, 그 결과 실제 데이터에서 성능 저하로 이어질 수 있습니다.
우리는 다음과 같은 몇 가지 유형의 증강을 활용하는 메커니즘을 마련했습니다:
- 기하 기반
- 픽셀 기반
- 노이즈 기반
여러 기하 기반 증강을 연속적으로 적용하는 것은 타당하지만, 픽셀 기반이나 노이즈 기반 증강을 많이 적용하면 비현실적인 이미지가 생성됩니다. 이를 해결하기 위해, 우리는 증강 유형별로 적용 개수를 제한하는 메커니즘을 마련했습니다.
어떤 증강을 사용할지 결정하는 과정은 다소 시행착오가 필요합니다. 우리는 RandAugment를 활용하면 스켈레톤 모델 학습에 적합한 증강을 고르고 과적합을 줄이는 데 도움이 된다는 것을 확인했습니다(아래 개발 타임라인 섹션 참조).
테스트 타임 증강
테스트 타임 증강(TTA)은 테스트 단계에서 데이터 증강을 활용해 모델 성능을 향상시키는 매우 강력한 메커니즘입니다.
HRNet 논문을 따라 우리 모델에도 TTA를 적용하기로 했습니다. 기본 증강은 입력 이미지를 수평으로 뒤집은 뒤, 원본과 뒤집은 이미지의 출력값을 평균 내어 관절 위치를 계산하는 방식입니다.
추가로, 미리 정의한 몇 가지 각도(예: ±15°)로 입력 이미지를 회전하는 등 더 많은 TTA도 검토했습니다. TTA의 트레이드오프는 향상된 정확도와 늘어난 추론 시간 사이의 균형입니다.

추론 시간 제약으로 인해 기본 TTA를 계속 사용하기로 했습니다.
관절 가중치
우리의 목표는 키 측정을 위한 스켈레톤 모델을 제공하는 것입니다. 이런 용도에서는 오차가 아기의 ‘가장자리’ 관절(예: 머리 꼭대기, 다리 끝부분)과 강하게 연관됩니다. 관절의 영향을 모델에 반영하기 위해 손실 함수에서 해당 관절에 서로 다른 모델 가중치를 적용했으며, 이를 통해 키 측정 애플리케이션에 중요한 관절에 스켈레톤 모델의 집중도를 높일 수 있습니다.
아래 그래프는 관절 가중치가 모델 성능 지표에 미치는 영향을 보여 주는 예시입니다. MeanSmS@0.1. MeanSmS@0.1 관련 관절에만 적용하여 키 측정에 해당하는 부분에서 계산한 평균 PCKh@0.1 지표입니다.

레이어 고정 및 히트맵 크기
전이 학습의 또 다른 일반적인 방법은 사전 학습된 모델의 레이어를 고정(freeze)하는 것입니다. 초기 학습에서는 HRNet의 Stage4를 제외한 모든 레이어를 고정한 상태로 시작했습니다. 각 HRNet 스테이지는 일련의 합성곱과 서로 다른 해상도의 융합으로 구성됩니다. 학습이 진행됨에 따라 과적합을 줄이기 위해(데이터가 적기 때문에) 더 많은 레이어(Stage4의 서브 모듈)를 고정하는 방안을 검토했습니다. 그러나 과적합을 줄이려는 시도 중에 과소적합 문제가 발생했습니다.
히트맵 크기를 키워 성능을 개선하는 방법을 고려했습니다. HRNet처럼 히트맵 기반의 키포인트 방식은 히트맵 단계에서의 양자화로 인해 성능 제약이 발생할 수 있습니다. 우리의 경우, 사전 학습된 모델은 64×64 크기의 히트맵으로 학습되어 있습니다.
레이어를 전혀 고정하지 않은 상태로 두 가지 실험을 수행했습니다
- 96×96 크기의 히트맵 출력(사전 학습 모델은 64×64)
- 비교를 위한 64×64 크기의 히트맵 출력

더 많은 레이어의 고정을 해제할수록 성능이 향상된다는 사실을 확인했습니다. 히트맵 크기와 거의 무관하게 모든 레이어의 고정을 해제했을 때 가장 좋은 결과를 얻었습니다. 데이터가 적다는 점을 고려하면 다소 직관에 반할 수 있지만, 문헌에서 다음과 같이 설명되는 가능한 이유를 찾았습니다. 딥 더블 디센트.
옵티마이저
다음 과제는 옵티마이저 선택에 도전하는 것이었습니다. Adam과 같은 적응형 옵티마이저는 Adam 은 신경망 학습의 사실상 기본 선택지가 되었습니다. 데이터가 제한적인 상황에서는 모델의 일반화가 어려운 과제입니다. 일반화를 향상시키기 위한 일반적인 방법으로 정규화가 있으며, 그중 하나의 선택지는 가중치 감쇠입니다. 그러나 Adam의 가중치 감쇠는 제대로 작동하지 않습니다.
AdamW 은 Adam에 가중치 감쇠를 올바르게 적용해 일반화를 개선하고 더 나은 모델을 만들도록 한 옵티마이저입니다. AdamW는 트랜스포머에서 널리 쓰이지만 HRNet 같은 CNN 기반 신경망에서는 상대적으로 덜 일반적입니다. 그럼에도 불구하고, 우리는 AdamW가 유용하다는 것을 확인했으며 성능이 약 0.3% 향상되었습니다.

분포 인지 표현 키포인트
새로운 분포 인지 좌표 표현 기법 (DARK) 이 방법은 모델에 구애받지 않는 플러그인으로 작동합니다. DARK는 히트맵 기반의 최신 인체 포즈 추정 모델 전반에서 성능을 크게 향상시킵니다.
무엇을 의미하나요? DARK 하나요?
- 가우시안 분포를 가정한 변조 히트맵 생성
- 테일러 급수를 이용한 극값 주변에서의 함수 추정
- 극점 계산을 통한 관절 좌표의 재정렬
우리의 경우, DARK를 사용해 다음과 같은 향상을 얻었습니다 약 0.9% Mean@0.1 평가 지표에서

개발 타임라인
이 부분에서는 모든 실험과 데이터 반복을 전용 타임라인에서 확인할 수 있습니다. 이를 모두 모아 보면 각 알고리즘 개선의 이점과 데이터 추가 효과가 명확하게 드러납니다.
테스트는 개발 과정 전반에 걸쳐 수행되었습니다. 각 단계마다 테스트를 활용해 우리가 집중을 유지하며 프로젝트 목표를 향해 나아가고 있는지 확인했습니다. 우리는 개선이 다음에서의 향상으로 이어지는지를 검증했습니다. 골격 모델(PCKh 모델 지표)의 개선이 키 측정(사용자 경험 지표) 향상으로 이어졌습니다. 실제로, 양자 간 상관관계는 골격 PCKh@0.1(해당 관절 기준, MeanSmS@0.1) 성능과 키 측정 정확도가 모두 높았으며, 이를 통해 우리가 올바른 지표를 보고 있다는 확신을 얻었습니다.

제한된 데이터로 반복적인 개발을 할 때의 주요 과제는 학습 데이터에 대한 과적합입니다. 우리는 학습 세트와 검증 세트에서의 PCKh@0.1 차이로 과적합을 정의했습니다. 과적합을 줄이는 데 가장 크게 기여한 요소는 우리의 증강 정책, TTA, 그리고 물론 데이터 추가였습니다.

요약
이 블로그 글에서는 ���제를 정의하고 우리가 해결하고자 한 바를 명확히 한 뒤, 목표를 설정하고 해결책을 향해 자신 있게 작은 걸음을 내딛는 과정을 살펴보았습니다. 번거로운 데이터 수집과 주석 작업 등 현실 세계의 제약을 어떻게 다뤘는지도 공유했습니다. 알고리즘 측면에서는 기본적인 방법부터 고급 기법까지 단계적으로 적용하며 모델 성능을 지속적으로 개선해 온 과정을 한 걸음씩 자세히 소개했습니다.
이번 개발에서 얻은 첫 번째 핵심 교훈은 처음부터 올바른 지표를 찾아 명확히 정의하는 것입니다. 즉, 제품과 비즈니스 KPI—이 경우에는 사용자 경험—에 실제로 어떤 영향을 미치는지 검증할 수 있는 지표를 세우고, 이를 모델 지표로 어떻게 전환할지까지 설계해야 합니다. 두 번째 핵심 교훈은 데이터는 늘 부족하다는 사실입니다. 주어진 데이터로 창의적으로 접근해 제때 품질 높은 모델을 제공해야 합니다.
참고 문헌
논문
데이터세트
Add a comment