본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/AI

'개와 고양이 분류' 프로젝트 #2 - 이미지 데이터셋 읽어오기

by ToolBOX01 2026. 5. 13.
반응형

■ Google Colab(코랩) 사용 하기. 

'개와 고양이 분류' 프로젝트는 파이썬으로 개발합니다. Google Colab(코랩)을 사용한다는 것은 결국 웹 브라우저에서 파이썬을 실행하는 것인데, 딥러닝 입문자들에게는 거의 "필수 코스"처럼 여겨집니다

 

Google Colab 사용하기 | 코드잇

| # Colab이란? Colab은 구글에서 제공하는 무료 온라인 코드 편집기로, 파이썬을 기반으로 하는 데이터 분석, 머신 러닝, 딥 러닝 작업에 아주 유용한 도구입니다. Jupyter Notebook 환경을 제공하기 때

www.codeit.kr


1. Google Colab을 사용하는 결정적인 이유

1) "환경 설정" 지옥에서 탈출
딥러닝을 시작할 때 가장 큰 장벽은 파이썬 설치가 아니라, 텐서플로우나 케라스 같은 라이브러리들 사이의 버전 충돌입니다. : 

  • 내 컴퓨터: 파이썬 버전 확인, 텐서플로우 설치, 각종 라이브러리 설치 중 에러 발생 가능성 높음.
  • Colab: 구글이 이미 딥러닝에 필요한 모든 환경(Python, TensorFlow, Keras, Pandas 등)을 미리 세팅해 두었습니다. 로그인만 하면 바로 코딩을 시작할 수 있습니다.

2) GPU(그래픽카드) 무료 대여

딥러닝은 엄청난 양의 행렬 연산을 수행합니다. 일반 CPU로 하면 하루 종일 걸릴 학습이 GPU(그래픽 처리 장치)를 쓰면 몇 분 만에 끝납니다.

  • M1 Mac Mini(8GB)도 훌륭하지만, 고사양의 딥러닝 모델을 돌리기엔 메모리가 부족할 수 있습니다.
  • Colab은 구글의 고성능 GPU를 무료로 빌려주기 때문에 학습 속도가 압도적으로 빠릅니다.

 

2. Colab 사용은 무엇을 의미하나요?

"클라우드에서 파이썬을 실행한다" '구글 드라이브 안에서 파이썬 코드를 실행하는 문서'라고 보시면 됩니다.

  • 워드나 한글 파일을 편집하듯, 코드 블록을 만들고 Ctrl + Enter만 누르면 구글 서버가 대신 계산해서 결과를 화면에 보여줍니다.
  • 결과물(그래프, 사진 등)이 문서 안에 바로 포함되므로 나중에 다시 보기에도 매우 편리합니다.

■ 구글 코랩(Google Colab) 초보자 가이드

 

개와 고양이를 분류하는 모델을 만드는 과정  따라 하기

구글 코랩(Google Colab) 환경에서 텐서플로우(TensorFlow)와 케라스(Keras)를 사용하여 개와 고양이를 분류하는 모델을 만드는 과정은 딥러닝 입문에 가장 적합한 실습입니다. 초보자도 쉽게 따라 할 수 있도록 핵심 단계별로 설명 합니다.

 

1. 데이터셋 준비

가장 먼저 분류할 이미지 데이터가 필요합니다. 일반적으로 Kaggle의 'Dogs vs. Cats' 데이터셋을 많이 사용하며, 텐서플로우 라이브러리 내에 내장된 데이터를 사용하면 별도의 업로드 없이 바로 실습할 수 있습니다.

데이터셋은 '데이터의 집합'이라는 개념적인 용어이며, 파일 구성 방식은 목적에 따라 매우 다양합니다.


'텐서플로우 데이터셋(tfds)'의 방식

내부 동작: 텐서플로우가 구글 서버에서 데이터를 조각조각 가져와서 메모리에 바로 올려줍니다. 즉, 우리 눈에는 파일이 안 보이지만 시스템 내부에서는 수많은 이미지 조각들이 데이터셋이라는 이름으로 묶여서 흘러가는 구조입니다.

실습코드는  구글이 제공 하는 "tensorflow_datasets" 데이터 셋을 사용 합니다.tensorflow_datasets(줄여서 tfds)가 구글 서버에 있는 모든 이미지를 뜻하는 것은 아닙니다. 그렇게 되면 용량이 상상을 초월해서 시스템이 감당할 수 없습니다. tfds는 '정리가 아주 잘 된 데이터 도서관'과 같습니다.

 

1) 전 세계 유명 데이터셋의 "카탈로그 - tensorflow_datasets"

 "tensorflow_datasets" 는 구글 서버에 저장된 수많은 이미지 중, 전 세계 인공지능 연구자들이 "이 데이터는 학습용으로 정말 좋다"라고 공인한 유명한 데이터셋들만 모아놓은 저장소입니다.

  • 무엇이 들어있나?: 개와 고양이 사진뿐만 아니라, 손글씨 숫자(MNIST), 자율주행용 도로 사진, 영화 리뷰 텍스트 등 수백 개의 검증된 데이터셋이 포함되어 있습니다.
  • 목적: 누구나 똑같은 양질의 데이터를 사용하여 자신의 AI 모델 성능을 비교해볼 수 있게 하기 위함입니다.

 

2) 구글 서버에 있는 모든 이미지인가? (No!)

우리가 구글 이미지 검색에서 보는 일반적인 이미지들과는 완전히 다릅니다.

  • 정제된 데이터: tfds에 들어있는 이미지는 AI가 학습하기 좋게 크기가 조정되어 있고, 각 이미지가 무엇인지(예: 이 사진은 '개'다) 정답지(Label)가 반드시 붙어 있습니다.
  • 선별된 데이터: 구글 검색에 나오는 무작위 이미지가 아니라, 학술적·교육적 목적으로 배포된 특정 프로젝트 결과물들입니다.

 

3) 구글에 저장된 데이터 셋

카테고리 데이터셋 이름 (ID) 설명 용도
이미지 분류 cats_vs_dogs 개와 고양이 사진 (25,000장)
입문용 이진 분류
  mnist 0~9까지의 손글씨 숫자 (흑백)
딥러닝의 'Hello World'
  cifar10 비행기, 자동차, 새 등 10개 클래스 기초 사물 인식
  imagenet2012 1,000개의 클래스, 방대한 이미지
전문가용/성능 벤치마크
객체 탐지 coco 이미지 내 사물의 위치와 종류 (박스)
자율주행, CCTV 분석 등
  voc 사물 위치 기반 데이터셋 (PASCAL)
사물 검출 모델 학습
자연어(NLP) imdb_reviews 영화 리뷰 텍스트 (긍정/부정)
감성 분석 (Sentiment)
  wikipedia 위키피디아 전체 텍스트 데이터
언어 모델(GPT 등) 학습
  wmt14_translate 각국 언어 번역 쌍 데이터
인공지능 번역기 학습
오디오/음성 speech_commands "Yes", "No" 등 짧은 음성 명령 음성 인식 기초
  librispeech 대규모 영어 음성 읽기 데이터
자동 음성 전사 (STT)
비디오 ucf101 인간의 행동 (수영, 요리 등) 영상 행동 인식 모델

 

4)  라이브러리 임포트 및 데이터 로드 (코드 만들기)

코랩 코드 셀에 아래 라이브러리를 불러오고 데이터 셋을 읽어 옵니다. 

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt
import tensorflow_datasets as tfds

# 데이터셋 로드 (이미지 크기는 150x150으로 조정)
(train_data, test_data), info = tfds.load(
    'cats_vs_dogs',
    split=['train[:80%]', 'train[80%:]'],
    with_info=True,
    as_supervised=True
)

 

Import 부분을 설명 합니다.

  • tensorflow as tf: TensorFlow 메인 라이브러리를 불러옵니다. 거의 모든 딥러닝 작업에 사용됩니다.
  • tensorflow.keras: 케라스(Keras) API를 사용해 모델을 쉽게 만들 수 있게 해줍니다. layers는 신경망 층들, models는 전체 모델을 만드는 데 사용됩니다.
  • matplotlib.pyplot as plt: 그래프나 이미지를 그려서 시각화할 때 사용합니다 (나중에 학습 결과나 이미지 확인용).
  • tensorflow_datasets as tfds: TensorFlow 공식 데이터셋 라이브러리입니다. 이미 준비된 데이터셋을 쉽게 다운로드하고 사용할 수 있게 해줍니다.

 

데이터셋 로드 부분을 설명 합니다

  • 'cats_vs_dogs' → TensorFlow Datasets에 있는 유명한 데이터셋입니다. 고양이 vs 강아지 사진으로 구성된 이진 분류(binary classification) 데이터셋입니다.

  • split=['train[:80%]', 'train[80%:]']
    • 원본 데이터셋의 train을 두 개로 나눕니다.
    • 앞 80% → 훈련 데이터 (train_data)
    • 뒤 20% → 테스트 데이터 (test_data)
    • 보통 validation 데이터도 따로 만드는데, 여기서는 테스트 데이터를 validation처럼 사용하려는 의도입니다.
  • with_info=True
    • 데이터셋의 부가 정보(info)를 함께 반환합니다.
    • 예: 클래스 이름(['cat', 'dog']), 이미지 원본 크기, 데이터 개수 등 유용한 메타데이터를 얻을 수 있습니다.
  • as_supervised=True
    • True로 설정하면 데이터가 (이미지, 라벨) 형태의 튜플로 나옵니다.
    • False이면 딕셔너리 형태로 나와서 조금 더 번거로워집니다.

 

info 변수에 데이터셋의 메타정보가 저장됩니다. infoprint(info) 해보면 아래와 같은 정보들을 확인할 수 있습니다:

  • 데이터셋 이름
  • 데이터셋 설명
  • 클래스 이름 (['cat', 'dog'])
  • 전체 데이터 개수
  • 이미지 원본 크기 (대부분 원본은 다양한 크기)
  • 라벨 정보
  • 라이선스 등

제공된 데이터셋 (이미지들을 모아 놓은 덩어리)요약표

항목 내용
데이터 형태 (이미지, 라벨) 튜플
라벨 포함 여부 , 각 이미지마다 라벨이 함께 들어있음
라벨 값 0 = cat, 1 = dog

 

by korealionkk@gmail.com


반응형