MediaPipe란?
MediaPipe는 Google에서 개발한 크로스 플랫폼 프레임워크로, 비디오, 이미지, 오디오 및 3D 데이터를 처리할 수 있는 높은 성능의 머신러닝 모델을 사용하여 다양한 응용 프로그램을 구현할 수 있게 해준다. 언어는 C++, Python, JavaScript를 지원하고 Android와 iOS에서도 사용 가능하다. 여기서는 python으로 손 검출하는 방법을 알아볼 것이다. 우선 MediaPipe를 설치해야 한다. 설치하는 명령어는 다음과 같다.
pip install mediapipe
MediaPipe를 이용한 3D Object Detection
3D Object Detection를 위해서는 'Objectron'이라는 MediaPipe의 솔루션을 사용할 수 있다.
import cv2
import mediapipe as mp
# Mediapipe Objectron 초기화
mp_objectron = mp.solutions.objectron
objectron = mp_objectron.Objectron(static_image_mode=True, max_num_objects=5, min_detection_confidence=0.5, min_tracking_confidence=0.99, model_name='Shoe')
# 이미지 불러오기
image = cv2.imread('image_path.jpg') # image_path에 이미지 경로를 넣으세요.
# RGB로 변환
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 이미지 프로세싱
results = objectron.process(image_rgb)
# 결과 시각화
if results.detected_objects:
for detected_object in results.detected_objects:
mp.solutions.drawing_utils.draw_landmarks(image, detected_object.landmarks_2d, mp_objectron.BOX_CONNECTIONS)
cv2.imshow('Object Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
이 코드는 하나의 이미지에서 object detection을 실행한다. process() 함수를 사용해 이미지에 대한 object detection을 수행하고 그 결과를 시각화한다. 시각화는 mp.solutions.drawing_utils.draw_landmarks 함수를 사용하여 감지된 각 object에 대한 랜드마크를 그린다.
중요한 것은 Objectron의 model_name 파라미터인데 이것은 어떤 타입의 객체를 감지할 것인지를 정의하는 부분이다. 현재 MediaPipe는 몇 가지 객체만 검출할 수 있다. 검출할 수 있는 객체는 'Shoe', 'Chair', 'Cup', 'Camera', 'Backpack' 이렇게 5가지다. 또한 실시간 비디오에서 객체 감지를 수행하려면 static_image_mode를 False로 설정하고, 비디오 프레임을 순환하며 process() 함수에 넘겨주어야 한다.


위 두 이미지만 보면 잘되는것 같지만 더 다양한 사진에 적용해보면 검출률이 그리 높지는 않다. 하지만 단일 이미지에서 3D Object Detection을 한다는것 자체로 참신함은 충분하다.
'Python' 카테고리의 다른 글
허깅페이스 Transformers 라이브러리 (0) | 2025.04.17 |
---|---|
Python 내장함수 : getattr, isinstance (0) | 2023.07.24 |
MediaPipe를 이용한 손 랜드마크 검출 (0) | 2023.07.08 |
파이썬 Parquet 데이터 포맷 확인하는법 (0) | 2023.07.07 |
python 성능 최적화 코드 작성 방법 (0) | 2023.06.30 |