얼굴 검색은 이미지를 비교하지 않습니다. 각 얼굴을 정해진 길이의 숫자 목록, 즉 벡터로 바꾼 다음 그 벡터를 비교합니다. 같은 사람을 몇 년 간격으로 다른 방에서 찍은 두 장의 사진은, 픽셀은 거의 겹치지 않는데도 서로 가까이 놓이는 벡터를 만들어 냅니다.
이 네 단계를 이해하면 어떤 스크린샷은 곧바로 통하고 어떤 스크린샷은 몇 번을 다시 시도해도 실패하는 이유를 정확히 알 수 있습니다.
1단계 검출에서는 무슨 일이 일어나나?
검출은 사람들이 기대하는 것보다 좁은 질문에 답합니다. 이 이미지의 어디에 얼굴이 있고, 그 핵심 지점 다섯 개는 어디인가?
검출기는 이미지를 훑어서, 찾아낸 얼굴마다 경계 상자와 특징점 다섯 개의 좌표를 돌려줍니다. 왼쪽 눈, 오른쪽 눈, 코끝, 입 왼쪽 끝, 입 오른쪽 끝입니다. 이 단계에는 YuNet을 씁니다. 아직 신원에 관한 일은 아무것도 일어나지 않았습니다. 여기까지는 순수한 기하입니다.
검출이 실패하면 그 뒤의 모든 것이 실패합니다. 그리고 검출은 흔히 말하는 화질과는 무관한 이유로 실패합니다. 입을 가린 손, 완전한 옆얼굴, 검출기의 최소 크기보다 작은 얼굴 같은 것들입니다.
2단계 정렬에서는 무슨 일이 일어나나?
정렬은 그 특징점 다섯 개를 이용해 얼굴을 표준 위치로 변형합니다. 두 눈이 수평선 위에, 정해진 좌표에, 정해진 크기로 놓이게 만드는 것입니다.
고개를 기울인 얼굴과 정면을 본 얼굴이 비교 가능해지는 것이 이 단계 덕분입니다. 인코더로 들어가는 모든 얼굴은 같은 자세, 같은 크기, 같은 영역으로 잘린 채 도착합니다. 그 잘라내기가 무엇을 버리는지 보세요. 머리카락의 대부분, 옷, 배경, 방입니다. 그것들은 신원 신호의 일부가 아닙니다.
여기서 흔한 답답함도 설명됩니다. 한쪽 눈이 가려졌다든가 해서 특징점이 조금 어긋나면, 정렬은 얼굴을 잘못 변형하고, 그렇게 나온 벡터는 자신만만한 답처럼 보이는 방식으로 틀립니다.
3단계 인코딩에서는 무슨 일이 일어나나?
인코더 신경망이 정렬된 얼굴을 숫자 512개짜리 벡터로 바꿉니다. 여기에는 ArcFace를 씁니다. 그 벡터가 얼굴의 수학적 기술입니다.
이것을 쓸모 있게 만드는 것은 학습 목표입니다. 같은 신원에서 나온 벡터는 촘촘히 뭉치고 다른 신원의 벡터는 서로 밀어내도록 학습됩니다. 얼굴이 어떻게 생겼는지를 기술하도록 학습된 것이 아니라, 누구인지를 기술하도록 학습된 것입니다.
| 단계 | 입력 | 출력 | 실패하는 경우 |
|---|---|---|---|
| 검출(YuNet) | 이미지 전체 | 상자 + 특징점 5개 | 얼굴이 가려짐, 너무 작음, 각도가 극단적 |
| 정렬 | 상자 + 특징점 | 표준화된 얼굴 크롭 | 특징점이 부정확함 |
| 인코딩(ArcFace) | 정렬된 크롭 | 숫자 512개짜리 벡터 | 크롭이 열화·흐림·과압축됨 |
| 비교 | 벡터 | 점수가 붙은 순위 목록 | 없음 — 언제나 무언가를 돌려줌 |
마지막 줄이 중요하며, 따로 한 절을 받을 자격이 있습니다.
4단계 비교에서는 무슨 일이 일어나나?
비교는 당신의 벡터와 색인에 있는 모든 벡터 사이의 코사인 유사도를 재고, 가까운 순서대로 돌려줍니다.
코사인 유사도는 0에서 1까지의 값이며 두 벡터 사이의 각도를 나타냅니다. 저희 데이터에서 영상 스틸에 맞춰 보정한 임계값은 0.40입니다. 그 위면 같은 사람일 가능성이 높은 쌍으로 취급하고, 그 아래면 어쩌다 가장 가까웠을 뿐인 잡음입니다.
마지막 대목이 벡터 검색에 대해 가장 크게 오해받는 지점입니다. 아무것도 돌려주지 않는 경우는 없습니다. 가장 가까운 얼굴 열 개를 요구하면 열 개를 줍니다. 찾는 사람이 색인에 아예 없어도 그렇습니다. 진짜 답과 그저 가장 가까웠던 남을 구분해 주는 것은 점수뿐입니다. 점수 없는 순위 목록은 읽을 수가 없습니다.
무엇을 찾을 수 있는지를 왜 색인이 결정하나?
비교는 이미 인코딩된 것에만 순위를 매길 수 있기 때문입니다. 색인은 웹을 뒤지는 것이 아니라, 미리 계산해 둔 고정된 벡터 집합입니다.
저희 색인에는 얼굴 241,792개가 있고, 그중 2,333개가 이름이 있는 배우와 연결되어 있으며, 106개 사이트의 커버와 스틸에서 얻은 것입니다(저희 색인, 2026-08 스냅숏). 여기서 두 가지가 곧바로 따라 나옵니다.
- 색인에는 있지만 이름과 연결된 적이 없는 얼굴은 이름 없는 신원으로 돌아옵니다. 흔한 일입니다. 유사 배우 데이터만 해도 이름이 붙지 않은 신원을 가리키는 참조가 7,004건 있습니다.
- 애초에 색인되지 않은 얼굴은 어떤 점수로도 나올 수 없습니다. 그래도 도구는 가장 가까운 추측들을 보여 줍니다.
짚어 둘 경계: 저희 출처는 쏠려 있습니다. 이름이 있는 배우 2,333명 중 2,246명은 대표 이미지가 단 하나의 사이트에서 옵니다. 따라서 커버리지는 그 출처들이 무엇을 공개했는지를 반영할 뿐, 산업의 전체 생산량을 반영하지 않습니다.
역이미지 검색과는 무엇이 다른가?
역이미지 검색은 사진 전체의 사본을 찾습니다. 얼굴 검색은 서로 다른 사진에 걸쳐 같은 신원을 찾습니다. 둘은 정반대의 조건에서 성공하고 실패합니다.
| 역이미지 검색 | 얼굴 검색 | |
|---|---|---|
| 비교 대상 | 이미지 전체의 지문 | 얼굴 벡터 |
| 똑같은 이미지가 온라인에 있어야 하나 | 예 | 아니요 |
| 얼굴만 잘라내면 도움이 되나 | 아니요 — 오히려 나빠짐 | 예 — 그게 바로 입력 |
| 조명과 자세가 달라도 견디나 | 잘 못 견딤 | 그러라고 만든 것 |
| 직접 캡처한 프레임에도 통하나 | 아니요 | 예 |
어떤 도구가 얼굴만 잘라 넣었을 때 오히려 나빠진다면, 그것은 얼굴 검색을 하고 있지 않은 것입니다. 한 번으로 끝나는 믿을 만한 판별법입니다.
관련 질문
- 구글 역이미지 검색이 성인 영상에는 통하지 않는 이유
- 스크린샷 한 장으로 영상을 찾는 방법
- 검색 도구에 사진을 올려도 안전한가?
- 역이미지 검색 도구 비교
- 얼굴 검색이 실제로 쓸 수 있는 스크린샷 찍는 법
이 처리 과정을 이해하는 가장 빠른 방법은 직접 돌려 보는 것입니다. 여기에 프레임을 올려 보세요. 검출과 정렬은 브라우저 안에서 이루어지고, 비교를 위해 전송되는 것은 잘라낸 얼굴 영역과 특징점 다섯 개뿐이며, 원본은 기기를 떠나지 않습니다.