ImageDataGenerator / CNN_Image Augmentation

강민정·2023년 7월 25일

Deep Learning

목록 보기
6/8
post-thumbnail

ImageDataGenerator

  • Keras에서 제공하는 이미지 데이터 증강을 위한 클래스
  • 주어진 이미지 데이터에 다양한 변환을 적용하여 데이터셋을 더 다양하게 만들어주는 역할
  • 매개변수
    • rotation_range: 이미지 회전 각도 범위를 지정합니다.
    • width_shift_rangeheight_shift_range: 이미지를 수평과 수직으로 이동시키는 범위를 지정합니다.
    • horizontal_flipvertical_flip: 이미지를 수평과 수직으로 뒤집는 옵션입니다.
    • zoom_range: 이미지 확대/축소 범위를 지정합니다.
    • brightness_range: 이미지 밝기 조절 범위를 지정합니다.
    • shear_range: 이미지를 변형하는 정도를 지정합니다.
    • channel_shift_range: 이미지의 채널을 이동시키는 범위를 지정합니다.
    • preprocessing_function: 이미지 전처리 함수를 지정합니다.

ImageDataGenerator에 dataset을 제공하는 메소드

flow_from_directory ()

  • 디렉토리에서 이미지 데이터를 로드하고 증강
  • 이미지 데이터와 해당 라벨을 배치(batch) 단위로 증강
  • 매개변수
    • directory: 이미지 데이터가 있는 디렉토리를 지정합니다.
    • target_size: 이미지 크기를 지정, 기본값: (256,256)
    • batch_size: 배치 크기를 지정합니다.
    • class_mode: 분류 문제의 경우 binary 또는 categorical로 설정합니다.
    • **color_mode** : "grayscale", "rgb", "rgba" 중에 하나를 지정. 기본값: "rgb"
  • 반환값
    • DirectoryIterator: batch size만큼 image와 label을 제공하는 Generator
  • Directory 이름을 class name으로 한다.
  • class 조회: DirectoryIterator객체.class_indices.keys()

flow_from_dataframe()

  • 읽어올 파일의 경로와 label을 DataFrame으로 생성한 뒤 그것을 이용해 파일을 Loading
  • 매개변수
    • dataframe: 이미지 데이터와 라벨 정보를 포함하고 있는 DataFrame을 지정합니다.
    • directory: 이미지 파일이 저장된 디렉토리 경로를 지정합니다.
    • x_col: DataFrame에서 이미지 파일의 경로가 저장된 컬럼의 이름을 지정합니다.
    • y_col: DataFrame에서 라벨 정보가 저장된 컬럼의 이름을 지정합니다.
    • target_size: 이미지 크기를 지정합니다.(기본값: (256,256))
    • batch_size: 배치 크기를 지정합니다. (기본 : 32)
    • class_mode: 분류 문제의 경우 binary 또는 categorical로 설정합니다.

flow()

  • ndarray 타입의 이미지를 받아서 처리
  • 데이터셋을 Numpy 배열 형식으로 이미 로드한 경우에 사용
  • 매개변수
    • x : input data. 4차원 배열(크기, height, width, channel)
    • y : labels.
    • batch_size : 미니 배치 크기(기본값:32)

CNN_Image Augmentation

  • 학습 데이터를 증강하여 모델의 성능과 일반화 능력을 향상시키는데 도움
  1. Data augmentation 활용
    • 기존 데이터를 변경하여 데이터 개수를 늘린다.
    • 이미지의 경우 원본 이미지의 색깔, 각도 등을 약간씩 변형한 이미지들을 추가로 만들어 data의 수를 늘린다.
  2. Pre-trained network의 활용
    • 매우 큰 데이터셋으로 미리 Training한 모델의 파라미터(가중치)를 가져와서 풀려는 문제에 맞게 모델을 재보정해서 사용한다.
    • 성능이 좋은 학습된 모델을 사용하므로 적은 데이터에도 좋은 성능을 낼 수있다.

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기