이미지 데이터 처리를 위한 CNN 완벽 가이드 - DataAugmentation

2022. 3. 14. 17:07·프로젝트/코드프레소 체험단

overfitting

- train 데이터가 실제 부딪힐 수 있는 모든 상황의 데이터를 갖지 못해 발생

 

Augmentation : 기존의 이미지 데이터를 조금 변형시키는 것

 - train 데이터에 약간의 변형을 가해, 데이터의 분포를 다양하게 만든다.

 

ImageDataGenerator 객체 생성

 - Image Data Augmentation을 위한 다양한 설정정보 지정

 - rotation_range : 랜덤하게 사진을 회전시킬 각도 범위

 - width_shift_range/height_shift_range : 사진을 수평과 수직으로 랜덤하게 평행 이동시킬 범위

 - shear_range : 랜덤하게 전단 변환을 적용할 각도 범위

 - zoom_range : 랜덤하게 사진을 확대할 범위

 - horizontal_flip : 랜덤하게 이미지를 수평으로 뒤집음

 - fill_mode : 회전이나 가로/세로 이동으로 인해 새롭게 생성해야 할 픽셀을 채울 전략

 

import tensorflow as tf
from tensorflow import keras

import os
import matplotlib.pyplot as plt

url = 'https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip'
path_to_zip = keras.utils.get_file(fname='cats_and_dogs_filtered.zip', origin=url, extract=True, cache_dir='/content')

cats_dir = '/content/datasets/cats_and_dogs_filtered/train/cats'

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(rotation_range=40,
                             width_shift_range=0.2,
                             height_shift_range=0.2,
                             shear_range=0.2,
                             zoom_range=0.2,
                             horizontal_flip=True,
                             fill_mode='nearest')

from tensorflow.keras.preprocessing import image

def image_augmentation_plot(img_path):
  # 이미지를 읽고 크기를 변경
  img = image.load_img(img_path, target_size=(150, 150))

  # (150, 150, 3) 크기의 넘파이 배열로 변환
  x = image.img_to_array(img)

  # (1, 150. 150. 3) 크기로 변환
  x = x.reshape((1,) + x.shape)

  # flow() 메서드는 랜덤하게 변환된 이미지의 배치를 생성
  # 무한 반복되기 때문에 어느 지점에서 중지해야 함
  i = 0
  for batch in datagen.flow(x, batch_size=1):
    plt.figure(i)
    imgplot = plt.imshow(image.array_to_img(batch[0]))
    i += 1
    if i % 4 == 0:
      break
  plt.show()

fnames = sorted([os.path.join(cats_dir, fname) for fname in os.listdir(cats_dir)])

image_augmentation_plot(fnames[0])

 

 

 

'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글

이미지 데이터 처리를 위한 CNN 완벽 가이드 - DataAugmentation을 활용한 성능 개선  (0) 2022.03.15
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Transfer Learning  (0) 2022.03.14
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 가위바위보 데이터셋 분류 CNN 모델 구현  (0) 2022.03.14
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CNN 모델을 이용한 Cats & Dogs 분류 분석  (0) 2022.03.10
이미지 데이터 처리를 위한 CNN 완벽 가이드 - ImageDataGenerator API  (0) 2022.03.08
'프로젝트/코드프레소 체험단' 카테고리의 다른 글
  • 이미지 데이터 처리를 위한 CNN 완벽 가이드 - DataAugmentation을 활용한 성능 개선
  • 이미지 데이터 처리를 위한 CNN 완벽 가이드 - Transfer Learning
  • 이미지 데이터 처리를 위한 CNN 완벽 가이드 - 가위바위보 데이터셋 분류 CNN 모델 구현
  • 이미지 데이터 처리를 위한 CNN 완벽 가이드 - CNN 모델을 이용한 Cats & Dogs 분류 분석
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (576)
      • 혼잣말 (88)
      • TIL (3)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (169)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (40)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    OS
    MailBadara
    리액트
    Pint OS
    졸업과제
    나만무
    머신러닝
    블록체인
    자바스크립트
    해커톤
    센디
    pintos
    글리치해커톤
    코드프레소
    부산대
    docker
    크래프톤정글
    RNN
    Flutter
    numpy
    니어프로토콜
    딥러닝
    핀토스
    JavaScript
    NEAR Protocol
    알고리즘
    파이썬
    사이드프로젝트
    프로그래머스
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
이미지 데이터 처리를 위한 CNN 완벽 가이드 - DataAugmentation
상단으로

티스토리툴바