사진 분류 AI

프로젝트 소개


사진 속 동물이 고양이인지 강아지인지 자동으로 구분해주는 인공지능 모델을 만들어 보는 것을 목표로 한다.
평소에도 반려동물 사진을 많이 보는데 이를 컴퓨터가 스스로 구분할 수 있다면
인공지능이 이미지를 어떻게 이해하는지 보다 쉽게 배울 수 있다고 생각하여 이 프로젝트를 기획하게 되었다.
이번 프로젝트는 구글 코랩을 이용해 딥러닝 모델을 직접 만들어보고,
실제로 고양이 사진과 강아지 사진을 넣어 테스트해 보면서
이미지 분류가 어떻게 이루어지는지 체험해보는 데에 의미가 있다.
특히 CNN 모델을 사용함으로써
기초적인 인공지능 학습 과정을 실습 형태로 이해할 수 있다.
이 프로젝트를 통해 인공지능 모델의 기본 구조와 동작 방식,
그리고 실제 데이터를 활용해 결과를 얻는 전체 흐름을 경험하는 것을 목표로 한다.

프로젝트 기획


이번 프로젝트는 고양이와 강아지를 구분하는 이미지 분류 모델을 만들기 위해,
딥러닝에서 가장 많이 사용되는 기술인 CNN을 기반으로 설계하였다.
CNN은 이미지 안의 특징을 자동으로 찾아내는 데 뛰어난 구조이기 때문에,
사진 분류 모델을 만들 때 가장 기본적으로 사용되는 기술이다.

프로젝트는 구글 코랩(Google Colab) 환경에서 진행하였으며,
파이썬(Python)과 텐서플로(TensorFlow) 라이브러리를 사용하여 모델을 구현하였다.
코랩은 GPU를 지원하고 별도의 설치가 필요 없어서,
학생들이 딥러닝을 연습하기에 적합한 환경이라는 장점이 있다.

데이터는 텐서플로 공식 데이터셋인 “cats_vs_dogs” 를 사용하였다.
이 데이터셋은 고양이 사진과 강아지 사진이 섞여 있는 대표적인 이미지 분류용 데이터로,
이미지 크기가 제각각이기 때문에 전처리를 통해 크기를 동일하게 맞추고,
0~1 범위로 정규화하는 과정을 거쳐 모델에 입력하도록 구성했다.

전체 시스템 구조는 다음과 같이 설계하였다.

1. 데이터 로드 및 전처리
- 이미지 크기 통일
- 정규화
- 학습·검증 데이터 분리

2. CNN 모델 설계
- Conv2D + MaxPooling을 여러 층으로 구성
- Flatten 후 Dense 층을 사용하여 분류

3. 모델 학습 및 평가
- 학습(Training)
- 검증(Validation)
- 정확도 및 손실 그래프 분석

4. 테스트 이미지 예측 기능 구현
- 사용자가 업로드한 이미지를 모델이 분류하도록 구성

프로젝트 결과


이번 프로젝트에서는 구글 코랩 환경에서 합성곱 신경망(CNN)을 이용하여 고양이와 강아지 이미지를 분류하는 모델을 구현하였다.
모델 학습이 정상적으로 진행되었으며, 학습 과정과 예측 결과를 통해 분류 기능이 제대로 작동함을 확인할 수 있었다.
모델의 주요 기능은 크게 세 가지로 나눌 수 있다. 첫째, 입력된 이미지를 모델이 처리하기 좋은 형태로 바꾸는 전처리 기능이다.
이미지를 180×180 크기로 통일하고, 픽셀 값을 정규화하여 학습이 안정적으로 이루어지도록 구성하였다. 둘째, CNN 구조를 사용한 이미지 분류 기능이다.
여러 개의 합성곱 층과 풀링 층을 통해 이미지의 특징을 추출하고, 마지막에 분류층을 두어 결과를 고양이 또는 강아지로 예측한다. 셋째, 사용자가 직접 업로드한 이미지를 분류하는 테스트 기능이다.
사용자가 선택한 사진을 모델에 입력하면 바로 예측 결과를 출력하도록 구현하였다. 모델 구조는 기초적인 CNN 형태로 구성하였다. 합성곱 층과 풀링 층을 차례로 쌓아 이미지의 특징을 점점 더 추상적인 형태로 추출하고,
마지막에 완전연결층을 통해 두 가지 클래스 중 하나로 분류하도록 설계하였다. 이 구조는 이미지 분류를 처음 학습할 때 많이 사용하는 전형적인 형태로, 딥러닝 기초를 익히기에 적합하다.
실험 결과, 학습 정확도는 반복 횟수가 늘어날수록 꾸준히 상승하는 모습을 보였고, 손실 값은 감소하여 모델이 정상적으로 학습되고 있음을 확인하였다. 검증 정확도 또한 큰 폭의 흔들림 없이 안정적인 상승 경향을 보였다.
학습이 완료된 뒤에는 실제 고양이 사진과 강아지 사진을 넣어 테스트한 결과 대부분 정확하게 분류하는 모습을 보여 충분히 실용적인 수준의 성능을 나타냈다.
전체적으로 모델은 기본적인 CNN 구조임에도 비교적 높은 정확도를 보였으며, 데이터 전처리와 학습 과정도 안정적으로 수행되었다. 추가적으로 학습 횟수를 늘리거나,
전이학습 모델을 적용한다면 더 높은 성능을 기대할 수 있을 것으로 보인다.

소감


이번 프로젝트를 진행하면서 혼자서 코드를 구현해야 했기 때문에 처음에는 오류가 자주 발생했고, 특히 데이터 파일이 잘 받아와지지 않는 문제가 생겨 어려움을 겪었다.
하지만 문제의 원인을 하나씩 찾아보고 해결 방법을 스스로 찾으면서 점점 이해도가 높아졌고, 모델이 정상적으로 동작했을 때 큰 뿌듯함을 느꼈다.
또한 이번에 사용한 데이터셋은 고양이와 강아지 두 종류만 포함되어 있어 비교적 단순한 분류 작업이었는데, 데이터를 직접 다뤄보니 다양한 종류의 동물을 분류해보거나,
더 많은 카테고리를 추가해보고 싶은 생각이 들었다. 데이터가 많을수록 모델이 더 정확해지고, 더 복잡한 분류도 가능해진다는 점을 알게 되어 새로운 확장 아이디어도 떠올렸다.
프로젝트를 통해 딥러닝 모델이 어떻게 학습되고, 실제로 이미지 분류가 어떤 과정으로 이루어지는지 경험할 수 있었고,
앞으로도 더 다양한 데이터와 기술을 활용해 더 나은 모델을 만들어보고 싶다는 동기부여가 되었다.