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

박태신님의 프로필 이미지
박태신

작성한 질문수

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

ImageDataGenerator로 Augmentation 적용 - 01

ImageDataGenerator 질문

작성

·

423

·

수정됨

0

  1. Generator랑Augmentation이랑 같은건가요?

     

  2. 코드에서 아래 부분을 이미지데이터에서의 fit_transform이랑 비슷하다고 생각하면 되나요?

     

    # ImageDataGenerator 적용. fit()후 flow()로 image batch를 넣어주어야 함.

    data_generator.fit(image_batch)

    data_gen_iter = data_generator.flow(image_batch)

    # ImageDataGenerator를 동작하기 위해서는 next()등으로 iteration을 호출해야함.

    aug_image_batch = next(data_gen_iter)

  3. 아래 코드를 실행하기 전에 type이 float일 때랑 코드를 실행해서 int일 때랑 값은 큰 차이가 없는데 왜 show_image 했을 때 그림이 다르게 나오는건가요?

    aug_image = aug_image.astype('int')

  4. 저는 width_shift 했을 때 위아래로 되는 거 같은데... 교수님 코드랑 결과가 다릅니다.. 교수님 코드처럼 width_shift는 좌우 이동으로 생각하면 되나요?

답변 3

0

박태신님의 프로필 이미지
박태신
질문자

제가 이해한게 맞다면...

0~255 int 를 시각화 = 0~1 float으로 정규화 후 시각화
근데 0~255 float은 시각화 못함

이게 맞을까요?

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

네 맞습니다

0

박태신님의 프로필 이미지
박태신
질문자

  1. Generator란게 뭔지 잘 모르겠습니다... generator가 무엇인지 좀 더 쉽게 설명해 주실 수 있나요? 용어가 어렵습니다..ㅠ

  2. 사이킷런으로 표준화 할 때 fit하고 transform 하는 것처럼 위에 코드가 이미지를 fit하고 바꿔주는(?) 그런 느낌(?)으로 이해하면 되는지 궁금합니다.

  3. ImageDataGenerator_AUG1에 있는 코드입니다. 강의는 ImageDataGeneratr로 Augmentation 적용 -01, 02에 다 나옵니다. int로 안바꾸면 왜 아래처럼 그림이 나오는지 궁금합니다. float일때나 int일 때나 큰 차이가 없는데 말이죠.

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

  1. 여기에 적는것 보다는 아래 파이썬 generator 설명을 참조하시면 더 좋을 것 같습니다.

    https://lcs1245.tistory.com/entry/Python-generator-%EC%A0%9C%EB%84%A4%EB%A0%88%EC%9D%B4%ED%84%B0

    https://wikidocs.net/16069

  2. 네, 느낌(?)적으로는 사이킷런 fit_transform()과 유사합니다.

  3. 기본적으로 시각화시에는 image pixel값을 0 ~255 사이의 int 형으로 변경해야 합니다. 다만 0 ~ 255 사이의 int값을 0 ~ 1 사이의 float값으로 정규화 시에 matplotlib에서 시각화를 할 수도 있습니다(즉 0.1, 0.55 등의 값도 시각화 할 수 있습니다). 그런데 100.1 과 같은 값은 안됩니다.

0

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

안녕하십니까,

  1. Generator와 augmentation은 다릅니다.

    일반적으로 Python에서 Generator는 iterator(반복자)의 루프 컨트롤을 생성하기 위한 것입니다. 한마디로 for loop 내에서 풀릴 수 있는 객체(또는 함수)를 생성해 주는 역할을 수행합니다.

    반면에 augmentation은 원본 이미지를 다양하게 변형하여 학습 이미지 데이터를 여러 형태로 만들어주는 역할을 수행합니다.

    그런데 Keras의 ImageDataGenerator는 Generator의 역할과 Augmentation의 역할을 함께 수행할 수 있습니다.

 

  1. 이미지 데이터에서의 fit_transform()이 어떤 건지요? 제 강의에서 언급드린거라면 어떤 강의 영상의 몇분 분초에서 말씀드린건지 확인 부탁드립니다.

     

  2. 질문을 잘 이해하지 못했습니다. 이것도 제 강의 실습 코드 중에서 말씀 드린거라면 어떤 강의 영상의 몇분 분초에서 말씀드린건지 확인 부탁드립니다.

 

  1. 음. 이건 Keras ImageDataGenerator가 버전업이 되면서 뭔가 이상하게 동작하는 것 같스빈다. .

    width_shift_range와 height_shift_range가 제가 강의를 만드는 시점의 동작과 반대로 동작하는군요.

    Kesras라이브러리 자체에서 뭔가 잘못 구현이 된것 같습니다. 일단 해당 부분이 현재는 그렇게 동작하는 정도로만 이해해 주셔야 할 것 같습니다.

    감사합니다.

박태신님의 프로필 이미지
박태신

작성한 질문수

질문하기