인프런 커뮤니티 질문&답변

최용혁님의 프로필 이미지
최용혁

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

CIFAR10 데이터 셋에 Augmentation 적용 후 모델 성능 비교 - 02

안녕하세요 교수님 이미지 제너레이터 관련 질문드립니다.

해결된 질문

작성

·

320

0

이전 강의들에서는 이미지를 증강 할 때,

data_generator.fit(image_batch)
data_gen_iter = data_generator.flow(image_batch)

aug_image_batch = next(data_gen_iter)

제너레이터에 fit을 하고

flow으로 이터레이터를 생성하고

next로 조금 씩가져오는 것으로 이해하였습니다.

하지만 이번 강의에서는 왜 제너레이터에 fit과 next를 하지 않으시는지 궁금합니다...

또한 제너레이터가 이미지를 생성하는 것이 아니라

flow를 만들어 주고, next로 랜덤하게 적용해서 가져와 주는 것으로 이해하는 것이 맞는지요..?

감사합니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

1. 지난 강의는 ImageDataGenerator가 어떻게 Augmentation을 적용하는지 보여 드리기 위해서, ImageDataGenerator 자체만으로 image augmentation이나 이미지 가공을 수행하는 예제를 보여 드리려고 ImageDataGenerator객체의 fit()과 flow()를 적용했습니다.

일반적으로는 ImageDataGenerator 자체만으로 augmentation을 적용하지는 않습니다. 주로 model에 인자로 aumgentation적용된 image를 입력하기 위해서 model에서 fit_generator()를 호출하면서 Augmentation을 적용합니다.

예를 들어,
flow_tr_gen = ImageDataGenerator.flow() 으로 ImageDataGenerator 파이프라인을 만들고 이를 model.fit_generator(flow_tr_gen)와 같이 호출하여 인자로 넣게 됩니다.

model.fit_generator(flow_tr_gen)는 next(flow_tr_gen)과 같은 역할로, augmentation을 적용한 뒤, 이 augmentation된 이미지를 model에 입력하게 되는 역할을 합니다.

지난번과 달리 이번에는 model에서 학습을 수행하기 위해서 augmentation된 이미지가 필요하므로 그렇게 코드가 작성된 것입니다.

2. 또한 제너레이터가 이미지를 생성하는 것이 아니라

flow를 만들어 주고, next로 랜덤하게 적용해서 가져와 주는 것으로 이해하는 것이 맞는지요..?

=> Generator 자체만으로 augmentation을 바로 적용하는게 아니라 말씀하신대로 flolw()를 만들고 next 등으로 호출을 해줘야 augmentation이 적용됩니다.

감사합니다.

최용혁님의 프로필 이미지
최용혁
질문자

감사합니다..!

최용혁님의 프로필 이미지
최용혁

작성한 질문수

질문하기