얼굴 인식의 모든 것은 한 가지 아이디어에서 출발합니다. 얼굴 사진을 숫자 목록으로 바꾸는 것. 이 숫자 목록을 임베딩(embedding)이라 부릅니다. 이 장에서는 임베딩이 무엇이고 왜 그것이 "누구인가"를 푸는 열쇠가 되는지를, 수식 없이 직관으로 잡습니다.
사진을 숫자 목록으로
컴퓨터에게 두 사진이 같은 사람인지 묻는다고 해 봅시다. 픽셀을 하나하나 비교하는 방식은 곧장 무너집니다. 조명이 조금만 달라지거나 고개를 살짝 돌려도 픽셀 값이 완전히 바뀌기 때문입니다. 그래서 딥러닝 모델은 다른 길을 택합니다. 사진을 픽셀이 아니라, 그 사람의 정체성을 압축한 고정 길이의 숫자 목록으로 바꿉니다.
이 숫자 목록이 임베딩입니다. 예를 들어 FaceNet 계열 모델은 얼굴 한 장을 512개의 숫자로 바꿉니다. 이 512개 숫자가 "이 사람은 눈 사이가 이만큼 떨어졌고, 코 모양은 이렇고…" 같은 특징을 사람이 읽을 수 없는 형태로 압축해 담고 있습니다.
160x160 픽셀] --> B[딥러닝 모델
FaceNet 등] B --> C[임베딩
512개 숫자]
핵심은 길이가 항상 같다는 점입니다. 어떤 얼굴이든 같은 512개 숫자로 표현되므로, 서로 다른 사진을 똑같은 잣대로 비교할 수 있게 됩니다.
왜 픽셀이 아니라 임베딩인가
임베딩의 진짜 마법은 "같은 사람은 비슷한 숫자, 다른 사람은 다른 숫자"가 되도록 학습된다는 데 있습니다. 모델은 수백만 장의 얼굴을 보며, 같은 사람의 사진들은 임베딩이 서로 가까워지고 다른 사람끼리는 멀어지도록 훈련됩니다.
그 결과 조명·각도·표정이 달라도, 같은 사람이면 임베딩이 여전히 가깝습니다. 픽셀은 환경에 휘둘리지만 임베딩은 사람의 정체성을 붙잡습니다. PART 03의 정렬이 중요한 이유도 여기서 분명해집니다. 얼굴을 똑바로 세워 입력의 변동을 줄여 주면, 모델이 정체성에만 집중해 더 안정적인 임베딩을 만듭니다.
임베딩을 공간 속 점으로 상상하기
512개 숫자는 곧 512차원 공간의 한 점입니다. 사람이 512차원을 그릴 수는 없지만, 2차원으로 줄여 상상하면 직관이 또렷해집니다. 같은 사람의 사진들은 한 군데에 옹기종기 모이고, 다른 사람은 멀찍이 떨어진 다른 군집을 이룹니다.
홍길동의 두 사진은 가까이, 김철수의 두 사진은 그들끼리 가까이, 그러나 두 사람 사이는 멀리. 이 "끼리끼리 모이는" 그림이 임베딩의 본질입니다. 6장에서 t-SNE라는 도구로 실제 임베딩을 2차원에 펼쳐 이 군집을 눈으로 확인합니다.
실무 팁. 임베딩의 길이(차원 수)는 모델마다 다릅니다. 오래된 FaceNet은 128차원, 요즘 많이 쓰는 모델은 512차원을 씁니다. 차원이 크다고 무조건 좋은 것은 아니고, 모델이 얼마나 잘 학습됐는지가 더 중요합니다. 중요한 것은 "같은 모델로 뽑은 임베딩끼리만 비교해야 한다"는 점입니다. 서로 다른 모델의 임베딩은 잣대가 달라 비교할 수 없습니다.
이 장에서 기억할 것
임베딩은 얼굴 사진을 고정 길이의 숫자 목록(예: 512개)으로 압축한 것으로, 같은 사람은 비슷한 값, 다른 사람은 다른 값이 되도록 학습됩니다. 픽셀과 달리 조명·각도에 흔들리지 않고 정체성을 붙잡으며, 512차원 공간에서 같은 사람끼리 군집을 이룹니다. 그렇다면 "비슷하다"를 컴퓨터는 어떻게 숫자로 판단할까요. 다음 장에서 거리와 유사도, 그리고 임계값을 다룹니다.