iBetter Books
수정

얼굴 랜드마크(facial landmark)는 눈꼬리, 콧등, 입술 경계처럼 얼굴에서 의미 있는 지점들의 좌표입니다. 검출이 "얼굴이 이 사각형 안에 있다"까지 알려 준다면, 랜드마크는 그 안에서 "눈은 여기, 코는 여기"를 점으로 짚어 줍니다. 이 장에서는 라이브러리마다 다른 점의 개수(5·68·468)가 무엇을 뜻하고 어디에 쓰이는지 큰 그림을 잡습니다.

점이 많을수록 무엇이 좋아지나

랜드마크의 점 개수는 곧 얼굴을 얼마나 촘촘히 묘사하는가입니다. 점이 적으면 빠르고 가볍지만 거친 위치만 알 수 있고, 많으면 표정의 미세한 변화까지 담지만 무거워집니다. 대표적인 세 가지 규격을 비교하면 다음과 같습니다.

규격 점 개수 담는 정보 대표 라이브러리 주 용도
5점 5 양 눈·코·입 양끝 dlib(5점), MTCNN, RetinaFace 정렬(빠름)
68점 68 윤곽·눈썹·눈·코·입 전체 dlib(68점) 정렬·표정·자세
468점 468(+홍채 10) 얼굴 전체 메시 MediaPipe FaceLandmarker 실시간 표정·AR

5점은 "정렬에 꼭 필요한 최소한"입니다. 두 눈의 위치만 알아도 얼굴을 똑바로 회전시킬 수 있기 때문입니다. 68점은 고전 컴퓨터 비전의 사실상 표준으로, 윤곽선부터 입술 모양까지 충분히 담아 정렬은 물론 졸음 감지나 머리 자세 추정 같은 응용에도 쓰입니다. 468점은 얼굴 전체를 삼각형 그물(메시)로 덮어, 실시간 표정 캐릭터나 AR 필터처럼 미세한 움직임이 중요한 곳에 쓰입니다.

정렬에 점이 쓰이는 원리

정렬의 핵심 아이디어는 단순합니다. 두 눈의 좌표를 알면, 두 눈을 잇는 선이 수평이 되도록 이미지를 회전시킬 수 있습니다. 거기에 두 눈 사이 거리를 일정하게 맞추면 얼굴 크기까지 정규화됩니다. 그래서 정렬에는 많은 점이 필요 없고, 5점만으로도 충분합니다.

flowchart LR A[검출된 얼굴] --> B[랜드마크
눈·코·입 좌표] B --> C[두 눈을 수평으로
회전·크기 정규화] C --> D[정렬된 얼굴
인식·감정 입력]

68점이나 468점은 정렬을 더 정밀하게 하거나, 정렬을 넘어 표정·자세 분석까지 하려 할 때 선택합니다. 즉 "무엇을 하려는가"에 따라 점 개수를 고르면 됩니다.

좌표를 읽는 두 가지 방식

랜드마크 좌표도 검출 박스처럼 라이브러리마다 표기 방식이 다릅니다. 이 차이는 코드에서 바로 부딪히므로 미리 정리합니다.

  • dlib은 픽셀 좌표를 그대로 줍니다. shape.part(36).x가 곧 가로 픽셀 위치입니다.
  • MediaPipe는 0과 1 사이의 비율 좌표를 줍니다. 가로 위치를 픽셀로 바꾸려면 이미지 너비를 곱해야 합니다(landmark.x * width).

PART 02에서 검출 박스의 두 표기법을 익혀 둔 것과 같은 맥락입니다. 어떤 라이브러리를 쓰든 화면에 점을 찍기 전에 "이 좌표가 픽셀인가 비율인가"를 먼저 확인하는 습관을 들이세요.

실무 팁. 처음에는 68점 dlib으로 시작하길 권합니다. 점마다 번호(인덱스)가 정해져 있어 "왼쪽 눈은 36~41번"처럼 부위를 콕 집어 다루기 쉽고, 자료도 가장 풍부하기 때문입니다. 실시간 표정이나 AR이 목표라면 그때 468점 MediaPipe로 넘어가면 됩니다.

이 장에서 기억할 것

랜드마크는 얼굴 위 의미 있는 점들의 좌표이며, 점 개수(5·68·468)는 정밀도와 무게의 맞바꿈입니다. 정렬에는 두 눈만 있으면 되므로 5점으로 충분하고, 68점은 정렬과 응용을 두루 커버하는 표준, 468점은 실시간 표정·AR용입니다. 좌표가 픽셀인지 비율인지 먼저 확인하는 것이 코드의 첫 단추입니다. 다음 장에서는 가장 널리 쓰이는 dlib 68점을 직접 뽑아 봅니다.