READS

닮은꼴은 어떻게 판단할까? 얼굴 유사도 분석의 원리

2026-09-10 · 읽는 데 3분

컴퓨터는 '닮았다'를 어떻게 알까

"둘이 닮았다"는 느낌은 말로 설명하기 어려워요. 누구는 눈매가 닮았다고 하고, 누구는 웃는 모습이 닮았다고 하죠. 그런데 컴퓨터는 느낌으로 판단할 수 없으니, 얼굴을 숫자로 바꾼 다음 그 숫자끼리의 차이를 재요.

이 글에서는 이 사이트의 닮은꼴 테스트가 사진 두 장을 받아 "전체 74%, 가장 닮은 부위는 코" 같은 결과를 내기까지의 과정을 순서대로 풀어 볼게요. 계산은 모두 이 사이트의 실제 코드에 적힌 방식 그대로예요. 사진이 서버로 가지 않고 내 기기 안에서 계산되는 방식은 사진을 서버로 보내지 않고 얼굴을 비교하는 방법에 따로 정리했어요.

1단계: 얼굴을 찾고 점 68개를 찍어요

먼저 사진 속에서 얼굴이 어디 있는지 찾아요. 이 일은 '페이스 에이피아이(face-api)'라는 무료 공개 프로그램이 맡아요. 가볍고 빠른 얼굴 찾기 모델로 먼저 찾아보고, 못 찾으면 조금 더 무거운 모델을 그때만 내려받아 한 번 더 찾아요. 한 사진에 얼굴이 여러 개 보이면 누구를 비교할지 직접 고를 수 있어요.

얼굴을 찾으면 정해진 자리에 점 68개를 찍어요. 이 점을 특징점이라고 불러요. 배치는 이래요.

  • 턱선을 따라 17개
  • 양쪽 눈썹에 5개씩 10개
  • 콧대 4개, 콧방울과 코끝 5개
  • 양쪽 눈에 6개씩 12개
  • 입술 바깥 12개, 안쪽 8개

얼굴의 생김새는 결국 이 68개 점이 어디에 찍혔는지로 요약돼요. 이와 함께, 얼굴 전체를 128개의 숫자로 요약한 특징 벡터도 만들어요. 특징 벡터는 사람이 하나하나 의미를 붙이기 어려운 숫자 묶음인데, 같은 사람의 얼굴일수록 가까운 값이 나오도록 만들어진 것이라 얼굴의 '지문' 같은 역할을 해요. 이 숫자를 뽑는 모델은 수많은 얼굴 사진을 보며, 같은 사람의 사진끼리는 가깝게, 다른 사람끼리는 멀게 놓이도록 미리 학습된 것이에요.

2단계: 크기와 기울기를 똑같이 맞춰요

두 사진은 찍은 거리도, 고개 각도도 달라요. 그대로 비교하면 생김새가 아니라 "사진을 어떻게 찍었나"를 비교하게 돼요. 그래서 점들을 비교하기 전에 세 가지를 맞춰요.

  • 두 눈의 가운데를 원점으로 옮겨요.
  • 두 눈을 잇는 선이 수평이 되도록 얼굴을 돌려요.
  • 두 눈 사이 거리를 1로 놓고 나머지 거리를 그 비율로 바꿔요.

이렇게 하면 멀리서 찍은 사진과 가까이서 찍은 사진, 고개를 살짝 갸웃한 사진도 같은 조건으로 놓여요. 다만 고개를 좌우로 돌려 옆얼굴이 된 사진은 이 방법으로 바로잡을 수 없어요. 한쪽 눈과 볼이 좁게 찍힌 것 자체가 숫자에 들어가기 때문이에요. 그래서 정면 사진이 가장 좋아요. 사진 고르는 요령은 이런 사진으로 하면 결과가 잘 나와요에 모아 두었어요.

3단계: 여섯 부위를 숫자로 바꿔 비교해요

정렬한 점으로 부위마다 몇 가지 값을 계산해요. 이 사이트가 실제로 점수에 쓰는 값은 이래요.

  • 눈: 눈의 세로 높이를 가로 길이로 나눈 비율, 눈앞머리와 눈꼬리를 잇는 선의 기울기
  • 눈썹: 눈썹 길이, 눈과 눈썹 사이의 세로 간격
  • 코: 콧대 길이, 콧방울 너비, 길이와 너비의 비율
  • 입: 입 너비, 위아래 입술을 합친 높이를 너비로 나눈 비율
  • 얼굴형(턱선): 얼굴 너비를 눈썹~턱 길이로 나눈 비율, 아래로 갈수록 좁아지는 정도, 턱 각도
  • 이목구비 배치: 눈썹~턱 길이 가운데 눈썹과 눈, 눈과 코, 코와 입, 입과 턱 사이가 차지하는 몫, 얼굴 너비에 견준 두 눈 사이 간격

두 사람의 같은 값을 놓고 차이를 재요. 값마다 "이 정도 차이면 꽤 다르다"는 기준을 하나씩 정해 두고, 차이를 그 기준으로 나눈 만큼 1에서 빼요. 예를 들어 기준의 절반만큼 다르면 0.5, 차이가 없으면 1이 되고, 기준보다 더 다르면 0이에요. 부위 안의 값들을 평균하면 그 부위의 닮은 정도가 나와요.

이 값들이 처음부터 이렇게 정해진 건 아니에요. 처음에는 더 많은 값을 썼는데, 실제 사진으로 재 보고 덜어 낸 것들이 있어요. 코드에는 그 기록이 남아 있어요.

  • 눈의 가로 크기: 눈 하나의 너비를 두 눈 사이 거리로 나눈 값은 재 보니 사람마다 거의 다 0.37~0.39에 몰려 있었어요. 차이가 거의 없으니 누구와 비교해도 눈 점수만 높게 나왔고, 같은 사람의 두 사진끼리 차이가 다른 사람과의 차이보다 큰 경우까지 있었어요. 그래서 점수에서는 빼고, "보통 크기의 눈" 같은 설명 문구에만 써요.
  • 눈썹의 아치: 눈썹 가운데가 얼마나 솟았는지는 같은 사람의 사진 두 장 사이에서도 크게 흔들려서 점수에서 뺐어요.
  • 윗입술 두께와 입꼬리 기울기: 사람끼리 차이가 늘 아주 작아서 거의 항상 높은 점수만 보태는 역할이었기 때문에 뺐어요.

반대로 눈꼬리 기울기는 실제 값이 아주 작은데 기준을 너무 넉넉하게 잡아서 늘 1에 가깝게 나왔던 것을, 실제 크기에 맞게 좁혔어요. 이렇게 "사람마다 실제로 다른 값"만 남겨야 점수가 의미 있게 갈려요.

4단계: 전체 닮음도를 계산해요

전체 점수는 두 가지를 섞어서 만들어요.

  • 특징 벡터 비교: 두 얼굴의 128개 숫자 사이의 거리를 재요. 거리가 가까울수록 닮은 거예요. 이 사이트는 거리가 0.2 이하이면 가장 높은 값으로, 0.92 이상이면 0으로 보고 그 사이를 고르게 나눠 유사도로 바꿔요.
  • 부위 평균: 3단계에서 구한 여섯 부위 점수의 평균이에요.

비율은 특징 벡터 45%, 부위 평균 55%예요. 부위 쪽에 무게를 조금 더 둔 건, 화면에 보이는 부위별 점수와 전체 점수가 너무 어긋나 보이지 않게 하려는 거예요. 부위 점수가 대부분 낮은데 전체만 높게 나오면 보는 사람이 이상하게 느낄 테니까요.

계산한 값은 마지막에 보기 좋은 퍼센트로 바꿔요. 부위 점수는 35~96%, 전체 점수는 30~99% 사이로 펼쳐지도록 맞췄어요. 만들 때 목표로 잡은 범위는 서로 다른 사람이면 부위별로 대략 45~70%, 닮은꼴이면 70~92%, 같은 사람의 다른 사진이면 85%에서 상한인 96% 근처까지예요.

결과 화면의 한마디도 전체 점수로 정해져요. 50% 아래는 "음... 그래도 재밌었죠?" 하나로 묶고, 50%부터는 5%포인트마다 표현이 조금씩 세져요. 50%는 "살짝 닮은 듯?", 70%는 "보면 볼수록 닮았어", 85%는 "완전 판박이", 95% 이상은 "구별이 안 될 정도야"예요. 문구에는 '남매' '자매'처럼 성별을 가리는 호칭을 쓰지 않아서, 누구와 누구를 비교해도 어색하지 않아요.

'가장 닮은 부위'는 여섯 부위 중 점수가 가장 높은 곳이에요. 최고 점수가 둘 이상이면 그중 하나를 무작위로 골라요. 늘 눈이 뽑히는 일이 없도록 한 거예요.

원리를 알고 해 보는 작은 실험

원리를 알면 테스트를 실험처럼 해 볼 수도 있어요.

  • 같은 사람끼리 비교: 내 사진 두 장을 넣어 보세요. 점수의 상한이 정해져 있어서 100%는 나오지 않지만, 사진 두 장을 바꿔 가며 해 보면 같은 사람끼리도 사진 조건에 따라 점수가 오르내리는 걸 볼 수 있어요.
  • 표정만 바꿔 보기: 무표정 사진과 활짝 웃는 사진을 비교하면 입 점수가 달라질 수 있어요. 웃으면 입이 옆으로 넓어지고 입술 높이와 너비의 비율이 달라지기 때문이에요. 눈도 웃으면 가늘어져서 세로·가로 비율이 바뀌어요.
  • 세 사람 견주기: 나를 기준으로 두 사람과 각각 비교하면, 누구와 어느 부위가 더 닮았는지 나란히 볼 수 있어요.

숫자를 어떻게 받아들이면 좋을까

이 방법은 얼굴을 점 68개와 숫자 128개로만 봐요. 피부색, 머리 모양, 표정에서 풍기는 분위기처럼 사람이 "닮았다"고 느끼는 많은 요소는 직접 재서 쓰는 값이 아니에요. 128개 숫자는 사진에서 뽑기 때문에 조명이나 머리 모양이 조금 섞여 들어갈 수는 있지만, 그런 요소를 따로 비교하지는 않아요. 또 같은 사람이라도 표정, 조명, 고개 각도에 따라 점수가 몇 퍼센트씩 오르내려요.

그래서 이 점수는 두 얼굴의 생김새를 정해진 방식으로 견줘 본 재미용 결과예요. 친자 확인이나 신원 확인처럼 정확해야 하는 일에는 전혀 다른 수준의 검증된 기술과 절차가 필요하고, 이 테스트로 대신할 수 없어요.

오히려 이 원리를 알고 나면 결과를 더 재밌게 볼 수 있어요. 전체 점수는 낮은데 코만 높게 나왔다면 "코는 정말 닮았구나" 하고 부위 설명을 비교해 보세요. 같은 두 사람을 다른 사진으로 한 번 더 해 보면 어느 부위가 꾸준히 높은지도 알 수 있어요. 닮은꼴 테스트에서 직접 해 보세요. 사진은 서버로 가지 않으니 마음 편히 여러 번 해 봐도 돼요.

바로 해볼까요? 사진 두 장을 올리면 눈·코·입·얼굴형까지 부위별로 얼마나 닮았는지 알려줘요. 닮은꼴 테스트 하기 →
← 읽을거리 목록