Technology
이번 글에서는 빠르고 쉽게 On-Device AI를 구현하고 다양한 서비스를 개발하는 데 도움이 되는 MediaPipe에 대해 소개해 드리고자 합니다. MediaPipe는 구글에서 배포한 오픈소스 프로젝트로 이를 이용하면 아래와 같이 모바일에서 얼굴 인식 하는 App을 손쉽게 배포할 수 있습니다.
Sewoong Moh
April 4, 2024
안녕하세요. AI 추론 최적화 엔진을 만들고 있는 Optimium 팀의 모세웅(Sewoong Moh)입니다. 지난 글들에서 On-Device AI가 무엇인지, 그리고 On-Device AI를 구동할 Hardware AP가 무엇인지, On-Device AI를 위해 최적화가 왜 필요한지, 어떻게 Optimium이 최적화를 하는지 알아봤습니다.
이번 글에서는 빠르고 쉽게 On-Device AI를 구현하고 다양한 서비스를 개발하는 데 도움이 되는 MediaPipe에 대해 소개해 드리고자 합니다. MediaPipe는 구글에서 배포한 오픈소스 프로젝트로 이를 이용하면 아래와 같이 모바일에서 얼굴 인식 하는 App을 손쉽게 배포할 수 있습니다.

그럼 이제 MediaPipe에 대해 더 자세히 알아볼까요?
MediaPipe는 무엇인가요?
MediaPipe란 구글이 만들어 배포한 머신러닝 프레임워크로, 많은 사람이 쉽고 빠르게 On-device AI를 구현할 수 있도록 설계되었습니다. 간편한 설치와 코드 몇 줄만으로 손쉽게 AI 모델을 적용할 수 있습니다. 그리고 MediaPipe는 Web App, Mobile(Android, iOS), Desktop, Edge Device, IoT Device 등 다양한 환경에서 통일화된 규격으로 적용할 수 있어 확장성과 적용성이 뛰어납니다. 이는 NVIDIA GPU가 많이 사용되는 Large-scale AI와 달리, 다양한 하드웨어 선택지가 존재하는 On-device AI 시장에서 중요한 특징으로 간주됩니다. 또한, 오픈 소스이기 때문에 누구나 코드에 Contribute 할 수 있고 소스 코드를 보고 입맛에 맞게 수정할 수 있다는 장점이 있습니다.
MediaPipe는 크게 Deploy Pipeline을 구성하는 MediaPipe Task와 다양한 AI Task를 포괄하도록 공개된 MediaPipe Model로 구성되어 있습니다.
MediaPipe Task
MediaPipe Task는 AI 모델을 Deploy 하기 위해 사용자가 마주하는 인터페이스를 뜻합니다. 일반적으로, AI Task는 하나의 모델로만 구성되지 않습니다. 예를 들어 눈과 코의 위치를 찾는 Task는 1) 먼저 얼굴을 인식하고 2) 얼굴 부분만 잘라낸 뒤 3) Face Landmark를 인식하여 눈과 코의 위치를 찾는 과정이 진행됩니다. 이렇게 전/후 처리를 비롯하여 다수의 AI 모델을 수행하는 경우가 많습니다. MediaPipe는 이러한 Logic들이 내부에서 Pipeline화 되어 추상화되어 있기 때문에 사용자는 노출된 API를 몇 번만 Call 하면 원하는 작업을 수행할 수 있습니다.
또한 Android, Web/JavaScript, Python 등 다수 플랫폼을 지원하기 때문에 다양한 하드웨어에 적용이 가능하고 사용자 데이터에 맞는 모델을 학습할 수 있는 API도 제공합니다.
MediaPipe Models
MediaPipe는 이미 학습되어 바로 적용할 수 있는 많은 AI 모델들을 제공합니다. 2024년 3월 기준으로 Vision/NLP/Audio 분야 다양한 Task에 대한 Pre-trained Solution들을 제공합니다. 대표적인 예시로 아래 몇 가지가 나열되어있고 Full List는 https://developers.google.com/mediapipe/solutions/examples 에서 찾아볼 수 있습니다.
Pose Landmark Detection
Iris Landmark Detection
Face Mesh Detection
Selfie Segmentation
MediaPipe 아주 칭찬해 👏
MediaPipe는 다양한 장점으로 교육부터 보안, AR/VR 등의 다양한 산업군에서 사용되고 있습니다. 이에 대한 이유는 아래와 같습니다.
1. 간편한 Deployment
몇 줄의 코드로도 AI 모델을 Deploy 할 수 있기 때문에 프로토타이핑에 적합하며, 다양한 하드웨어와 플랫폼에 적용하기 쉬워서 개발 시간을 단축할 수 있습니다.
2. 높은 성능
오픈 소스임에도 성능이 뛰어나서 프로토타이핑뿐만 아니라 실제 상용 제품에도 적용 가능합니다. 예를 들어, 오픈 소스 모델에서 발생할 수 있는 Data Imbalance 문제에 대해서도 아래 표에서 볼 수 있듯이 다양한 민족, 인종, 성별 등에서도 모두 높은 성능을 보입니다. (Data Imbalance는 편향된 데이터셋을 활용하여 학습되어 특정 상황에만 높은 성능을 보이고 범용적으로 적용하기 어려움을 보이는 현상입니다.) 실제로 다양한 산업군에서 MediaPipe 모델을 상업적 용도로 활용하고 있는 사례를 심심찮게 찾아볼 수 있습니다.

3. License
MediaPipe가 인기 있는 또 다른 이유는 오픈 소스임과 동시에 아파치 라이선스 2.0을 채택하고 있기 때문입니다. 이는 소스 코드를 공개할 의무가 없으며 변형물의 특허 출원이 가능하고 자유롭게 상업적으로 사용할 수 있다는 것을 의미합니다.
💡 <Apache License>
· 아파치 라이선스와 더불어 오픈 소스 관련 대표적인 라이선스로 GPL 라이선스가 있습니다. GPL 라이선스는 내부적으로는 자유롭게 이용 가능하나 외부 배포 시 관련 소프트웨어 전체 소스 코드 공개 의무가 있습니다. 따라서 GPL 라이선스를 채택한 오픈 소스 프로젝트는 상업적 용도로 활용하기 어렵습니다.
4. Customization
높은 성능을 보이는 Pre-trained 모델을 활용할 수 있는 것은 큰 장점이지만, 때로는 사용자 고유의 데이터에 맞는 모델을 원할 수도 있습니다. 예를 들어, 사람의 Pose Landmark를 탐지할 때, Pre-trained 모델은 골반 부분을 2개의 점으로 인식할 수 있지만, 어떤 사용자는 골반 부분을 3개의 점으로 인식하도록 라벨링했을 수 있습니다. 이러한 경우에 대응하기 위해, MediaPipe는 Mediapipe Model Maker라는 간편한 API를 제공합니다. (단, 모델 구조를 변경하지 못하는 등의 한계점도 있습니다.)

그럼, 이제 속도의 한계를 보여줄게(feat.Optimium)
이렇게 활용성이 높은 MediaPipe도 그 활용성이 제한될 수 있습니다. 바로 Latency가 사용자 요구 사항을 만족하게 하지 못하는 경우입니다. 일반적으로 MediaPipe는 On-device AI에서 활용되는데 탑재 대상 하드웨어 성능이 부족하거나 발열 등의 이슈로 Thread를 제한적으로 활용하는 경우 등 다양한 이유로 Latency 요구 조건을 만족시키지 못할 수 있습니다. 실제로 공개된 MediaPipe를 활용한 많은 데모를 보면 30FPS 미만으로 구동되는 경우가 많습니다.
하지만, 저희 Optimium과 함께라면 실시간성을 충족할 수 있습니다. 아래의 예시 데모를 통해 직접 확인할 수 있습니다.
왼쪽 그림은 MediaPipe에서 백엔드로써 활용하는 TFLite(XNNPACK)으로 Pose Landmark Detection 모델을 구동하였을 때의 결과입니다. 그리고 오른쪽은 똑같은 모델을 백엔드로써 저희 Optimium을 활용하여 구동한 결과입니다. 보다시피 TFLite(XNNPACK) 대비 약 1.5~2.0배까지 빠른 FPS를 보입니다. TFLite는 실시간성을 충족시키지 못하고 Frame Drop이 발생하여 탐지된 Pose Landmark가 영상의 사람과 어긋나는 모습을 보입니다. 반면, 저희 Optimium은 실시간성을 충족하여 끊김 없이 영상 속 사람의 모습을 정확히 탐지할 수 있습니다. 이러한 결과는 자율 주행이나 운전자 시선 추적, 졸음 분석 등의 실시간성이 필수적인, 1~2 Frame Drop이 치명적인 어플리케이션에서 매우 큰 차이를 만들어줍니다.
좀 더 다양한 환경 내 Optimium의 성능 지표를 확인하고 싶으신 분들은 다음 링크 참고 부탁드립니다.
현재 Optimium은 베타테스트 진행 중이며 현재 서비스/연구 중이신 모델에서 같은 효과를 보고 싶은 모든 분들은 다음 링크를 통해 베타 신청을 해주세요 ✨
👉 https://wft8y29gq1z.typeform.com/to/Sv9In4SI?typeform-source=medium.com
그럼 또 다른 최적화를 향한 탐방에 대한 글로 찾아뵙도록 하겠습니다.
Life is too short, you need Optimium