ImageDataGenerator / CNN_Image Augmentation

ImageDataGenerator
- Keras에서 제공하는 이미지 데이터 증강을 위한 클래스
- 주어진 이미지 데이터에 다양한 변환을 적용하여 데이터셋을 더 다양하게 만들어주는 역할
- 매개변수
rotation_range: 이미지 회전 각도 범위를 지정합니다.
width_shift_range와 height_shift_range: 이미지를 수평과 수직으로 이동시키는 범위를 지정합니다.
horizontal_flip과 vertical_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
- 학습 데이터를 증강하여 모델의 성능과 일반화 능력을 향상시키는데 도움
- Data augmentation 활용
- 기존 데이터를 변경하여 데이터 개수를 늘린다.
- 이미지의 경우 원본 이미지의 색깔, 각도 등을 약간씩 변형한 이미지들을 추가로 만들어 data의 수를 늘린다.
- Pre-trained network의 활용
- 매우 큰 데이터셋으로 미리 Training한 모델의 파라미터(가중치)를 가져와서 풀려는 문제에 맞게 모델을 재보정해서 사용한다.
- 성능이 좋은 학습된 모델을 사용하므로 적은 데이터에도 좋은 성능을 낼 수있다.
좋은 정보 얻어갑니다, 감사합니다.