원문 : https://google.github.io/mediapipe/solutions/face_detection.html
참고바랍니다.
초보자분들을 위해 번역한 글입니다.
미흡한 영어 실력이다보니 의역, 오역이 있을 수 있습니다.
개요
MediaPipe의 얼굴 인식은 엄청 빠른 얼굴 인식 솔루션입니다. 6개의 얼굴 랜드마크와 다중 얼굴 인식 기능을 지원합니다. 이 모듈은 가볍고 성능이 뛰어난 얼굴 검출기인 BlazeFace에 기반을 두었습니다. 인식기의 초실시간 기능은 형상 추론(예: 얼굴 그물망)기능 같은 3D 얼굴 키포인트 추출, 얼굴의 특징 또는 표정 판별, 얼굴 부위 분할같은 작업에 사용할 수 있습니다. GPU 없이 CPU만으로도 작업이 가능합니다.
솔루션 API
MODEL_SELECTION(모델 선택)
모델 인덱스는 0 또는 1입니다.
0을 사용하면 카메라 2m 이내의 부분적 모델 촬영에 적합하고,
1은 5m 이내에서 전신 모델을 촬영하는데 적합합니다.
지정하지 않을 경우의 기본값은 0입니다.
MIN_DETECTION_CONFIDENCE(최소 감지 신뢰값)
검출에 성공한 것으로 간주할 얼굴의 검출 모델의 신뢰값은([0.0, 1.0])입니다.
기본값은 0.5입니다.
출력
DETECTIONS(탐지)
각 면이 경계 상자와 6개의 주요 지점(오른쪽 눈, 왼쪽 눈, 코 끝, 입 중심, 오른쪽 귀 이주(Tragus) 및 왼쪽 귀 이주)을 포함하는 검출 프로토콜 메시지로 표현되는 검출된 얼굴의 집합입니다.
경계 상자는 xmin 및 width(둘 다 영상 폭에 의해 [0.0, 1.0]로 정규화됨)와 ymin 및 height(둘 다 영상 높이로 정해짐)로 구성됩니다.
각각의 키포인트는 x와 y로 구성되며, 각각 영상 폭과 높이에 따라 [0.0, 1.0]으로 정규화됩니다.
import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
# 이미지 파일의 경우 이것을 사용하세요:
IMAGE_FILES = []
with mp_face_detection.FaceDetection(
model_selection=1, min_detection_confidence=0.5) as face_detection:
for idx, file in enumerate(IMAGE_FILES):
image = cv2.imread(file)
# 작업 전에 BGR 이미지를 RGB로 변환합니다.
results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# 이미지를 출력하고 그 위에 얼굴 박스를 그립니다.
if not results.detections:
continue
annotated_image = image.copy()
for detection in results.detections:
print('Nose tip:')
print(mp_face_detection.get_key_point(
detection, mp_face_detection.FaceKeyPoint.NOSE_TIP))
mp_drawing.draw_detection(annotated_image, detection)
cv2.imwrite('/tmp/annotated_image' + str(idx) + '.png', annotated_image)
# 웹캠, 영상 파일의 경우 이것을 사용하세요.:
cap = cv2.VideoCapture(0)
with mp_face_detection.FaceDetection(
model_selection=0, min_detection_confidence=0.5) as face_detection:
while cap.isOpened():
success, image = cap.read()
if not success:
print("웹캠을 찾을 수 없습니다.")
# 비디오 파일의 경우 'continue'를 사용하시고, 웹캠에 경우에는 'break'를 사용하세요.
continue
# 보기 편하기 위해 이미지를 좌우를 반전하고, BGR 이미지를 RGB로 변환합니다.
image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
# 성능을 향상시키려면 이미지를 작성 여부를 False으로 설정하세요.
image.flags.writeable = False
results = face_detection.process(image)
# 영상에 얼굴 감지 주석 그리기 기본값 : True.
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
if results.detections:
for detection in results.detections:
mp_drawing.draw_detection(image, detection)
cv2.imshow('MediaPipe Face Detection', image)
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
'Python' 카테고리의 다른 글
[파이썬] MediaPipe 손 인식(Hands) (0) | 2021.11.07 |
---|---|
[파이썬] 유튜브 영상 mp3 추출 다운로드 (1) | 2021.11.04 |
[파이썬] MediaPipe 얼굴 그물망(Face Mesh) (0) | 2021.11.03 |
[파이썬] MediaPipe 얼굴, 포즈 인식 모듈 소개 (1) | 2021.11.01 |
[파이썬] VScode 노란 밑줄 reportMissingImports 오류 해결방법 (0) | 2021.10.31 |
글 내용 중 잘못되거나 이해되지 않는 부분은 댓글을 달아주세요! 감사합니다! 문의: puleugo@gmail.com