AI는 사진 속 강아지와 고양이를 어떻게 구분할까?

사람은 강아지와 고양이를 한눈에 구분하지만, 컴퓨터에게 사진은 그저 숫자 덩어리입니다. 이 숫자에서 "강아지다움"과 "고양이다움"을 찾아내는 이미지 분류 AI의 원리를, 럭키랩 동물상 테스트에 쓰인 모델을 예로 들어 수식 없이 설명합니다.

럭키랩 가이드작성·검토 2026년 9월 29일읽는 시간 약 9분

1. 컴퓨터에게 사진은 숫자 표다

디지털 사진은 아주 작은 점, 즉 픽셀이 모여 만들어집니다. 각 픽셀의 색은 빨강(R), 초록(G), 파랑(B) 세 가지 빛의 세기로 표현되고, 각각 0부터 255까지의 숫자로 저장됩니다. 가로세로 224픽셀짜리 작은 사진이라도 224 × 224 × 3 = 150,528개의 숫자로 이루어져 있습니다.

럭키랩 동물상 테스트의 AI 모델도 사진을 받으면 먼저 가운데를 정사각형으로 잘라 224 × 224 크기로 줄인 뒤, 이 15만 개 남짓한 숫자를 입력으로 사용합니다. AI가 하는 일은 이 숫자 표를 보고 "강아지일 가능성"과 "고양이일 가능성"이라는 두 숫자를 계산하는 것입니다.

2. 규칙을 직접 짜는 방식은 왜 실패할까

"귀가 뾰족하면 고양이", "코가 길면 강아지" 같은 규칙을 사람이 직접 프로그램으로 짜면 어떨까요? 실제로 해 보면 금방 막힙니다. 귀가 접힌 고양이(스코티시 폴드)도 있고, 코가 짧은 강아지(퍼그)도 있습니다. 게다가 컴퓨터는 "귀"가 무엇인지부터 모릅니다. 같은 귀라도 조명, 각도, 털 색깔에 따라 픽셀 숫자가 완전히 달라지기 때문입니다.

그래서 현대 이미지 AI는 규칙을 사람이 쓰지 않고, 수많은 예시 사진에서 스스로 규칙을 찾도록 만듭니다. 이것이 머신러닝, 그중에서도 딥러닝의 핵심 아이디어입니다.

3. 합성곱 신경망: 작은 특징에서 큰 특징으로

이미지 분류에 가장 널리 쓰이는 구조는 합성곱 신경망(CNN, Convolutional Neural Network)입니다. CNN은 작은 돋보기(필터)를 사진 위로 조금씩 옮겨 가며 특정한 무늬가 있는지 검사합니다. 이 검사를 여러 층에 걸쳐 반복합니다.

  • 앞쪽 층: 가로선, 세로선, 색이 바뀌는 경계처럼 아주 단순한 무늬를 찾습니다.
  • 중간 층: 앞 층의 결과를 조합해 털의 질감, 둥근 곡선, 눈동자 같은 모양을 찾습니다.
  • 뒤쪽 층: 더 큰 조합으로 "뾰족한 귀", "긴 주둥이", "수염" 같은 부분을 알아봅니다.
  • 마지막 층: 찾아낸 특징들을 종합해 각 분류(강아지, 고양이)에 점수를 매깁니다.

놀라운 점은 이 필터들을 사람이 설계하지 않는다는 것입니다. 처음에는 무작위 값으로 시작해서, 정답이 붙은 사진을 보며 틀릴 때마다 필터 값을 조금씩 고치는 학습 과정을 거칩니다. 수많은 사진으로 이 과정을 반복하면 필터가 자연스럽게 쓸모 있는 무늬를 찾도록 바뀝니다.

4. 전이학습: 이미 배운 눈을 빌려 쓰기

CNN을 처음부터 학습시키려면 수십만 장 이상의 사진과 강력한 컴퓨터가 필요합니다. 그런데 Teachable Machine 같은 도구로는 사진 수십~수백 장만으로도 꽤 정확한 모델을 몇 분 만에 만들 수 있습니다. 비결은 전이학습(transfer learning)입니다.

전이학습은 이미 방대한 사진으로 학습된 모델의 "눈"을 빌려 오는 방법입니다. Teachable Machine은 약 1,000가지 사물로 분류된 100만 장 이상의 사진(ImageNet)으로 미리 학습된 MobileNet 계열 모델을 바탕으로 합니다. 이 모델은 선, 질감, 모양 같은 일반적인 시각 특징을 이미 잘 알고 있습니다. 사용자가 올린 사진으로는 마지막 판단 부분만 새로 학습시키면 되므로, 적은 사진으로도 빠르게 학습이 끝납니다.

사람에 비유하면, 이미 세상의 많은 것을 본 사람에게 "이건 강아지, 이건 고양이"라고 몇 장만 보여 주면 금방 구분하는 것과 비슷합니다. 아무것도 본 적 없는 사람을 처음부터 가르치는 것보다 훨씬 효율적입니다.

5. 결과는 "확률"로 나온다

분류 모델의 마지막 단계는 각 분류의 점수를 합이 1(100%)이 되는 확률로 바꿉니다. 이 변환을 소프트맥스(softmax)라고 합니다. 그래서 동물상 테스트 결과는 "강아지상 72%, 고양이상 28%"처럼 항상 두 숫자를 더하면 100%가 됩니다.

이 확률은 "이 사진이 학습에 쓰인 강아지 사진들과 고양이 사진들 중 어느 쪽에 더 가까워 보이는가"를 나타냅니다. 참고로 럭키랩이 강아지와 고양이 사진 4장으로 이 모델을 시험해 보았을 때, 네 장 모두 정답 쪽 확률이 97% 이상으로 나왔습니다. 동물 사진에서는 꽤 확신 있게 구분한다는 뜻입니다.

6. 사진을 서버로 보내지 않는 AI

많은 AI 서비스는 사진을 회사 서버로 보내 분석한 뒤 결과만 돌려줍니다. 반면 럭키랩 동물상 테스트는 TensorFlow.js라는 도구를 써서 AI 모델 자체를 여러분의 브라우저로 내려받아 실행합니다.

  • 처음 페이지를 열 때 약 2MB 크기의 모델 파일을 내려받습니다.
  • 사진 분석은 여러분의 휴대폰이나 컴퓨터 안에서 이루어집니다.
  • 올린 사진과 웹캠 화면은 어떤 서버로도 전송되거나 저장되지 않습니다.

이 방식은 개인정보 보호에 유리하고, 서버를 거치지 않아 결과도 빨리 나옵니다. 대신 기기 성능에 따라 모델을 불러오는 데 몇 초가 걸릴 수 있습니다.

7. AI 분류의 한계와 동물상 테스트

AI 모델은 학습한 범위 안에서만 믿을 만합니다. 몇 가지 한계를 알아 두면 결과를 더 현명하게 받아들일 수 있습니다.

  • 학습하지 않은 것도 억지로 분류합니다. 강아지와 고양이만 배운 모델에 자동차 사진을 넣어도 "강아지 60%, 고양이 40%"처럼 둘 중 하나로 답합니다. "모르겠다"는 선택지가 없기 때문입니다.
  • 사람 얼굴은 학습 범위 밖입니다. 동물상 테스트의 모델은 동물 사진으로 학습했습니다. 사람 얼굴을 넣으면 얼굴형, 눈매, 머리카락의 질감과 색, 배경 같은 요소가 학습한 강아지 사진들과 고양이 사진들 중 어느 쪽과 더 비슷한지를 계산합니다. 그래서 결과는 재미로 즐기기에 좋지만, 과학적인 성격이나 인상 판정으로 받아들이면 안 됩니다.
  • 작은 변화에도 결과가 바뀔 수 있습니다. 조명, 각도, 표정, 배경이 달라지면 같은 사람도 다른 결과가 나올 수 있습니다. 안정적인 결과를 얻는 방법은 사진 촬영 팁에 정리했습니다.
  • 학습 데이터의 치우침이 결과에 반영됩니다. 예를 들어 학습한 고양이 사진에 주황색 고양이가 많았다면, 주황색 계열이 강한 사진을 고양이 쪽으로 판단하는 경향이 생길 수 있습니다.

8. 직접 만들어 보기

Google의 Teachable Machine을 이용하면 코딩을 몰라도 나만의 이미지 분류 모델을 만들 수 있습니다.

  1. Teachable Machine 사이트에서 "이미지 프로젝트"를 새로 만듭니다.
  2. 분류(클래스)마다 이름을 붙이고, 웹캠으로 찍거나 사진 파일을 올려 예시를 모읍니다. 클래스마다 수십 장 이상, 다양한 각도와 배경의 사진을 모으면 좋습니다.
  3. "모델 학습시키기"를 누르면 전이학습이 진행됩니다. 보통 1~2분이면 끝납니다.
  4. 미리보기 창에서 새 사진으로 결과를 확인하고, 틀리는 경우가 있으면 그런 사진을 더 추가해 다시 학습합니다.
  5. "모델 내보내기"에서 TensorFlow.js 형식으로 업로드하면 웹사이트에서 불러 쓸 수 있는 링크가 만들어집니다.

한 가지 팁은 클래스 이름을 "Class 1" 그대로 두지 말고 "강아지", "고양이"처럼 의미 있게 바꾸는 것입니다. 나중에 웹사이트에서 결과를 표시할 때 어느 쪽이 무엇인지 헷갈리지 않습니다.