이미지 분류나 객체 감지 등의 작업을 수행할 때, 데이터셋을 준비하는 것은 중요한 과정입니다. 이미지 데이터셋을 사용하기 위해서는 파일 경로를 지정하고 이미지를 메모리로 로드해야 합니다. 이러한 번거로움을 해결하기 위해, Keras에서는 flow_from_directory 메서드를 사용하여 간편하게 디렉토리로부터 이미지 데이터를 가져올 수 있습니다.
`flow_from_directory` 메서드란?
Keras의 `flow_from_directory` 메서드는 디렉토리에서 자동으로 이미지 데이터를 읽고 전처리하여 네트워크에 입력으로 넘겨주는 역할을 합니다. 이를 사용하면 디렉토리의 구조를 유지하면서 이미지 데이터를 처리할 수 있으며, 클래스 레이블링과 데이터 확장 등을 자동으로 처리해줍니다.
사용법
아래는 `flow_from_directory` 메서드의 간단한 사용 예시입니다.
from keras.preprocessing.image import ImageDataGenerator
# ImageDataGenerator 객체를 생성합니다.
datagen = ImageDataGenerator(rescale=1./255)
# flow_from_directory 메서드를 사용하여 이미지 데이터를 가져옵니다.
train_generator = datagen.flow_from_directory(
directory='train_data',
target_size=(224, 224),
batch_size=32,
class_mode='categorical'
)
위 예시에서는 `ImageDataGenerator` 객체를 생성하여 이미지 데이터를 전처리해줄 수 있습니다. `rescale` 인자를 사용하여 이미지의 픽셀값 범위를 0-255에서 0-1로 정규화하였습니다.
그리고 `flow_from_directory` 메서드를 호출할 때, `directory` 인자에 이미지 데이터를 포함한 디렉토리의 경로를 지정하고, `target_size`에는 이미지 크기를 설정합니다. 반환되는 `train_generator`를 사용하여 데이터를 학습에 사용할 수 있습니다.
추가 옵션
`flow_from_directory` 메서드는 다양한 옵션을 제공합니다. 아래는 주요한 옵션들에 대한 설명입니다.
- `color_mode`: 이미지의 채널 수를 지정합니다. ‘rgb’ 또는 ‘grayscale’로 설정 가능합니다.
- `shuffle`: 데이터를 섞을지 여부를 결정합니다.
- `class_mode`: ‘categorical’, ‘binary’, ‘sparse’, ‘input’ 중 하나를 선택하여 레이블링 방식을 설정합니다.
- `seed`: 데이터 순서가 셔플될 때 사용되는 시드 값을 설정합니다.
- 'subset': ‘training’ 또는 ‘validation’으로 설정하여 훈련 데이터나 검증 데이터를 가져올 수 있습니다.
결론
Keras의 `flow_from_directory` 메서드를 사용하면 디렉토리로부터 이미지 데이터를 쉽게 가져와 전처리할 수 있습니다. 디렉토리 구조를 유지하면서 데이터셋을 준비하고, 자동으로 데이터를 로드하고 전처리하여 네트워크에 입력으로 제공해주는 이 메서드는 이미지 처리 작업을 편리하게 수행하는 데 도움이 됩니다.
#Keras #ImageDataGenerator