olrlobt
[Pose Estimation] 다양한 Pose Estimation API 비교와 정리 본문
Pose Estimation
Pose estimation은 인공지능 및 컴퓨터 비전 기술을 사용하여 이미지나 비디오에서 인간의 포즈(자세)를 감지하고 추정하는 기술이다.
이미지 예 :
동영상 예 :
예를 들어, 얼마 전 올렸던 kakao pose API도 여기에 속한다.
https://olrlobt.tistory.com/46
Pose Estimation의 대표적인 API로는 국내의 Kakao Pose API, Ncloud Pose Estimation API 가 있고,
해외의 Media Pipe, TensorFlow, Move net, Pose net 등이 있다.
모두 같은 기능을 제공하는 것이 아니므로, 프로젝트의 목적에 맞는 API를 잘 보고 선택해야 한다.
Pose Estimation 분석
1. Pose Net
- 제작사: Google
- 2D 지원 여부: O
- 3D 지원 여부: X
- 멀티포즈 지원 여부: O
- 지원 언어 : JavaScript
- 특징:
- TensorFlow.js를 기반으로 한다
- 다른 Pose Estimation에 비해 성능이 전체적으로 떨어지는 편이다
- BodyPix와 결합하여 인간의 실루엣을 추출하는 기능도 제공한다
- Pose Net Test :
https://storage.googleapis.com/tfjs-models/demos/pose-detection/index.html?model=movenet
2. Blaze Pose
- 제작사: Google
- 2D 지원 여부: O
- 2D 포즈 추정 : O
- 3D 지원 여부: O
- 멀티포즈 지원 여부: X
- 지원 언어 : Python, JavaScript
- 특징:
- MediaPipe 프레임워크에서 사용되는 딥러닝 기반 포즈 추정 모델
- Pose Net의 상위 버전이다
- 상당히 높은 정확성을 보여준다
- 비교적 모델의 크기가 무겁기 때문에, 실시간성이 약간 떨어진다.
- 공식 홈페이지 :
https://google.github.io/mediapipe/solutions/pose.html
- Blaze Pos Test :
https://storage.googleapis.com/tfjs-models/demos/pose-detection/index.html?model=movenet
3. Move Net
- 제작사: Google
- 2D 지원 여부: O
- 3D 지원 여부: O
- 멀티포즈 지원 여부: O
- 지원 언어 : TensorFlow, Python, JavaScript
- 특징:
- MediaPipe 프레임워크에서 사용되는 딥러닝 기반 포즈 추정 모델, TensorFlow 지원
- 다른 Pose Estimation과는 다르게 움직임을 중점으로 제작되었다.
- 또한, 다른 Pose Estimation과는 다르게 모바일 기기에서도 실시간으로 동작하게 경량화되었다.
- 높은 정확도와 저전력 소비를 보장한다.
- 공식 홈페이지
https://www.tensorflow.org/hub/tutorials/movenet?hl=ko
- Move Net Test :
https://storage.googleapis.com/tfjs-models/demos/pose-detection/index.html?model=movenet
4. MediaPipe Pose
- 제작사: Google
- 2D 지원 여부: O
- 2D 포즈 추정 : O
- 3D 지원 여부: O
- 멀티포즈 지원 여부: X
- 지원 언어 : Python, C++, JavaScript
- 특징:
- Google에서 개발한 오픈소스 라이브러리
- 비디오 및 이미지에서 3D 포즈와 트래킹, 페이셜 랜드마크 검출 등 다양한 기능을 제공
- MediaPipe Pose는 높은 정확도와 실시간성을 보장
- Media pipe 손 탐지 테스트
https://codepen.io/mediapipe/pen/RwGWYJw
- Media pipe 포즈 탐지 테스트
https://codepen.io/mediapipe/pen/jOMbvxw
5. Open Pose
- 제작사: Carnegie Mellon University
- 2D 지원 여부: O
- 2D 포즈 추정 : O
- 3D 지원 여부: O
- 멀티포즈 지원 여부: O
- 지원 언어 : C++, Python, MATLAB, Java, JavaScript
- 특징:
- 인간의 포즈를 비디오나 이미지에서 감지하기 위한 오픈소스 라이브러리
- OpenPose는 딥러닝 모델을 기반으로 함
- 각 관절의 위치와 방향을 추정하는 것 외에도 손가락 추적, 얼굴 감지 등 다양한 기능을 제공
6. Kakao Pose
- 제작사: Kakao Brain
- 2D 지원 여부: O
- 2D 포즈 추정 : O
- 3D 지원 여부: X
- 멀티포즈 지원 여부: O
- 지원 언어 : Python, REST api
- 특징:
- Kakao Pose는 단일 또는 다중 인물의 포즈를 추정할 수 있으며, 높은 정확도를 보여준다.
- 또한, 편리한 API와 예제 코드를 제공하여 사용자 편의성이 높다.
- 이미지 분석의 경우, 최대 용량이 2MB이며,
- 긴 변의 길이가 최대 2048 pixel, 최소 320 pixel이다
- 동영상의 경우 최대 50MB, 영상 길이 최대 30초까지 무료 분석이 제공된다.
https://developers.kakao.com/docs/latest/ko/pose/common
7. Ncloud Pose
- 제작사: Naver Cloud
- 2D 지원 여부: O
- 2D 포즈 추정 : O
- 3D 지원 여부: X
- 멀티포즈 지원 여부: X
- 지원 언어 : Python, JAVA, PHP , C#
- 특징:
- Naver Cloud에서 제공하는 AI 기술 중 하나
- API 호출을 통해 손쉽게 사용할 수 있다.
- 최대 300KB 이미지 데이터를 지원한다.
https://api.ncloud-docs.com/docs/ai-naver-poseestimation-pose
블로그 상단에 링크 해 놓은 Pose net, Move net, Blaze Pose 테스트와, Media pipe의 포즈 테스트, Hands 테스트를 통해 한 번씩 테스트 하고 API를 선택하길 바란다.
나는 프로젝트에 적용할 API로 실시간성, 3D지원 여부, Multi Pose 지원 여부를 보고 선택을 하였다.
Media pipe의 경우 상당히 좋은 성능을 자랑하지만 Multi Pose를 지원하지 않는다.
하지만, 방법이 아주 없는 것은 아닌 것 같고, 이를 활용할 방법을 모색중에 있다.
'Spring > Project' 카테고리의 다른 글
[Pose Estimation] Mediapipe Pose 분석 결과 3D grid로 렌더링하기 (0) | 2023.04.03 |
---|---|
[Spring boot] FFmpeg로 영상 배속 설정하기 (0) | 2023.03.31 |
[Pose Estimation] YOLOv5, MediaPipe로 Multi Pose 구현 시도해보기 (0) | 2023.03.23 |
[Pose Estimation] MediaPipe Pose / 미디어 파이프로 사람 포즈 감지하기 (0) | 2023.03.15 |
[Spring boot] 카카오 포즈 / RestTemplate으로 Kakao Pose API 호출하기 (0) | 2023.02.28 |