영상 얼굴 마스킹 파이프라인

YOLO v11n 얼굴 검출 → MediaPipe 윤곽 추출 → OpenCV 블러 마스킹 → 워터마크 삽입

Python FastAPI YOLO v11n MediaPipe OpenCV BlazeFace Cloudflare R2 JWT 역할 기반 접근
② YOLO v11n
바운딩박스
③ MediaPipe
36점 윤곽
④ OpenCV
마스킹 처리
⑤ 워터마크
삽입본
① 정면 얼굴
② 다중 얼굴
③ 얼굴 없음
④ 측면 얼굴
⑤ 저조도

① 정면 얼굴단일 정면 클로즈업

YOLO v11n-face 모델이 정면 얼굴을 고신뢰도로 검출합니다. MediaPipe FaceLandmarker로 468점 랜드마크를 추출한 후 Convex Hull로 정밀한 얼굴 윤곽을 계산, Box filter 블러로 마스킹합니다.

▶ 재생 버튼을 누르면 4개 영상이 동시에 재생됩니다.
② YOLO바운딩박스 검출
YOLO v11n-face가 검출한 원시 바운딩박스. 초록색 사각형.
③ MediaPipe36점 윤곽
468점 랜드마크 → Convex Hull 36점 윤곽. 파란 폴리곤.
④ 마스킹Box filter 블러
MediaPipe 윤곽 내부에 Box filter 강블러 적용.
⑤ 워터마크가시 워터마크
SHA-256 payload 기반 가시 텍스트 워터마크 삽입.

② 다중 얼굴복수 얼굴 동시 마스킹

여러 명이 등장하는 영상에서 모든 얼굴을 독립적으로 검출·마스킹합니다. 각 얼굴마다 MediaPipe 랜드마크를 개별 추출하여 정밀한 윤곽 마스킹을 적용합니다.

▶ 재생 버튼을 누르면 4개 영상이 동시에 재생됩니다.
② YOLO바운딩박스 검출
복수 얼굴 동시 검출.
③ MediaPipe36점 윤곽
각 얼굴마다 개별 Convex Hull 계산.
④ 마스킹Box filter 블러
모든 얼굴 동시 마스킹.
⑤ 워터마크가시 워터마크
워터마크 삽입.

③ 얼굴 없음false positive 억제

얼굴이 없는 영상에서 오탐지가 발생하지 않아야 합니다. YOLO v11n-face → BlazeFace → YOLO person 3단계 필터링으로 최소한의 false positive를 유지합니다.

▶ 재생 버튼을 누르면 4개 영상이 동시에 재생됩니다.
② YOLO바운딩박스 검출
얼굴 없는 장면에서 검출 없음.
③ MediaPipe36점 윤곽
윤곽 추출 없음.
④ 마스킹Box filter 블러
마스킹 없이 원본 유지.
⑤ 워터마크가시 워터마크
워터마크만 삽입.

④ 측면 얼굴BlazeFace 보조 감지

90° 측면 얼굴은 YOLO v11n-face가 감지 실패합니다. BlazeFace 보조 감지기가 신뢰도 0.15 이상 박스를 union하여 측면 얼굴 전체를 커버하는 영역을 추정합니다.

▶ 재생 버튼을 누르면 4개 영상이 동시에 재생됩니다.
② YOLO바운딩박스 검출
YOLO face 감지 실패 → BlazeFace union 박스 표시.
③ MediaPipe36점 윤곽
측면 얼굴: 랜드마크 실패 → 타원 폴백.
④ 마스킹Box filter 블러
BlazeFace 영역 기반 강블러 적용.
⑤ 워터마크가시 워터마크
워터마크 삽입.

⑤ 저조도어두운 환경 대응

조명이 부족한 어두운 환경에서도 얼굴 검출 및 마스킹이 동작하는지 검증합니다. YOLO v11n-face는 저조도에서도 신뢰도가 높은 검출을 유지합니다.

▶ 재생 버튼을 누르면 4개 영상이 동시에 재생됩니다.
② YOLO바운딩박스 검출
저조도 환경 얼굴 검출.
③ MediaPipe36점 윤곽
저조도 윤곽 추출.
④ 마스킹Box filter 블러
저조도 마스킹 처리.
⑤ 워터마크가시 워터마크
워터마크 삽입.