Data/AI

[회고] AI 프로젝트 3.네이버 개발자 인턴 지원 기회를 받은 실시간 영상 처리 서비스1

뚱요 2025. 5. 16. 18:29
반응형

이전 에피소드를 본다면 이 글이 더 재미있을 거예요!
[회고] AI 프로젝트 1. OTT 추천 서비스(데이터 기반 서비스 기획)
[회고] AI 프로젝트 2. 실시간 이미지 합성 서비스- 프로그래밍도 모르는 내가 딥러닝?

 

🧘🏻‍♀️ 코로나 시대, 집에서 운동을 가능하게 한 나만의 AI 홈트레이너

2021년 초, Covid-19으로 인해 집 밖으로 나가 운동할 수 없었던 시기로 이 시점에서 ‘집에서 잘 운동할 수 있는 방법이 뭐가 있을까?’ 질문으로 시작해, 웹캠을 활용한 실시간 AI 홈 트레이너 웹 서비스를 기획하고 개발했다. 이 프로젝트는 단순한 기술 구현을 넘어, 제게 데이터 사이언티스트로서의 문제 정의 능력, 데이터 중심적 사고, 그리고 자율적인 학습 역량을 확립해 준 소중한 경험이었다.
회고에 들어가기 앞서 당시 불가능하다고 빨리 주제 바꾸라고 했었을 때 굴하지 않고 유일하게 실시간으로 영상 처리하여 Computer Vision and Pattern Recognition(CVPR) 2020 workshop에서 채택된 <Yoga-82: A New Dataset for Fine-grained Classification of Human Poses> 논문보다 약 13,000장이 적은 데이터로도 13% p 이상 더 높은 정확도를 기록함과 동시에 네이버의 특정 부서 개발자 인턴 지원 기회도 얻었다.


이전에  실시간 이미지 합성 서비스- 프로그래밍도 모르는 내가 딥러닝? 에서 완성도 있는 서비스를 못했었기 때문에 이번 프로젝트에서는 실시간 영상처리는 기본으로 하고 실제로 서비스 가능한 정도로 목표를 두었다.
이 생각에서 출발해, 웹캠으로 나의 자세를 인식하고, 실시간으로 자세를 교정하며, 운동 시간을 측정하고 칼로리까지 알려주는 AI 홈 트레이너 웹 서비스를 만들게 되었다. 당시 직접 AI 엔지니어를 하면서 프로젝트 기획, 모델링, 프런트 단에서 주요 서비스를 프로그래밍 한 여정을 정리했다.

실제로 유저들이 사용하고 싶은 서비스에 대한 수요와 공급을 조사하면서 이 아이디어는 단순하지만, 당시에는 온라인으로 실시간  참고할 만한 구현 사례나 멘토가 없었다. 하지만 오히려 프로젝트 과정에서 창의력을 최대한 발휘할 수 있는 기회가 되는 프로젝트가 되었다. 하지만 동시에, 기술적으로 실현 가능한가?라는 거대한 물음에 부딪혔다.


📸 데이터 품질

이미 이전의 2차례의 OTT 추천 서비스과 실시간 이미지 합성 서비스를 만드는 프로젝트를 하면서 데이터의 양과 품질의 중요성을 일찍이 깨달았다.

또, 공부하면서 우연히 구루 Andrew Ng의 A Chat with Andrew on MLOps: From Model-centric to Data-centric AI을 접하여 모델기반 보다 데이터 기반의 AI가 효율성이 훨씬 좋다는 것을 알게 되었다! 그리고 유명한 말 Garbage in, garbage out(GIGO)와도 일맥상통한다.
그렇다면 이번에 나의 전략은 많은 시간을 대량의 고품질의 데이터를 확보하는 것! 그래서 논문에서 사용한 데이터 셋을 확보하기 위해서 찾아보던 중 <Yoga-82: A New Dataset for Fine-grained Classification of Human Poses논문과 Kaggle에서 제공하는 kaggle Yoga Poses dataset 107  데이터 셋을 사용했다.
Yoga-82에서는 데이터셋 제공이 아닌 특정 사이트에서 이미지를 받아오기 때문에 실제로 나온 이미지는 약 1만 장 소실이 있었다. 왼쪽과 같이 이미지가 없거나 html 포맷만 긁어 오는 경우가 있어 전처리가 필요한 상황
만약 이런 전처리라면 사람이 직접 하나하나 봐야 할까?

 

📸 반복적인 이미지 전처리 AI에게 업무를 시켜보자!

 

위의 질문에 대한 나의 답은 "아니다."이다. 요가 이미지를 약 5만 장 정도 수집했지만, 문제는 깨진 이미지와 딥러닝 모델이 인식하지 못하는 저품질의 요가 이미지에 대한 품질 관리가 필요했다. 사람이 직접 5만 장 넘는 데이터를 하나하나 확인하는 건 너무 비효율적이기에, 오히려 사람 신체를 인식하는 AI에게 이 작업을 맡기면 된다고 판단했다. Tensorflow Movenet이라 Pose Estimator 모델을 활용하여 다음과 같은 전략을 세웠다:

  • 이미지 확장자 일괄 변환
  • 각 요가 클래스 별로 이미지 디렉토리를 통해 관리
  • 모델이 잘 인식하지 못하는 경우 자동으로 디렉토리에서 제거
  • 그림자, 반사, 배경 등으로 인식이 왜곡된 이미지도 제거

전처리를 하고 나니, 처음의 5만 장에서 1.6만 장 수준으로 줄었지만, 오히려  모델의 성능 정확도 90% 이상으로 훨씬 안정적으로 나왔다. 실제로 Andrew Ng 교수님의 컨퍼런스에서 말한 data-centric AI 접근을 실천해 본 중요한 경험이었다.


🧠최적화를 위한 실험 자동화

지표 관리, 불균형 데이터 처리, 하이퍼파라미터 튜닝 등을 반영하여 요가 딥러닝 모델을 최적화하는 일이 남았다! 사실 이 부분에 대해서는 아직은 설명 가능한 인공 지능 (Explainable AI, XAI)가 아니기 때문에 직접 여러 조합을 다 해보는 것이 좋다고 하셨다.
Tensorflow library를 적극 이용하여 모델 성능 향상을 위해 아래와 같은 다양한 실험을 병렬적으로 진행했다:

요가 포즈 별로 지표 시각화

  • normalization 통해 robustness 향상
  • 딥러닝 모델을 통해 학습할 데이터의 복잡도 감소
  • Focal loss, class weight, data augmentation 등 불균형 데이터셋을 대응 방안에 대해 다각도로 실험
  • accuracy paradox에 빠지지 않고 입력 지표와 성과 지표 모두 리포트화하기
  • Keras Tuner를 사용한 자동화 하이퍼 파라미터 튜닝
  • 각 실험에 대해서 지표 리포트 생성 및 모델 weight 저장

 

data augmentation &amp; 저장한 모델 가중

그 결과, 81개 클래스 기준 Top-1 분류 정확도 92.1%를 달성했으며,  참고한 논문보다도 13.02% 더 높은 성능을 기록했다.


🔍 모델보다 중요한 것 데이터

이 프로젝트를 통해 배운 가장 큰 교훈은 좋은 모델을 만드는 것보다, 좋은 데이터를 준비하는 것이 훨씬 더 어렵고 중요하다는 것
모델 성능은 코드 몇 줄로 바꿀 수 있지만, 데이터의 품질, 일관성, 레이블링 기준은 더 많은 노력이 필요하다. 이 경험을 통해서 항상 "데이터를 먼저 보자"는 태도를 강화하게 되는 중요한 전환점이 되었다.
Andrew Ng 님께 감사 인사를..!

반응형