작성
·
423
·
수정됨
0
Generator랑Augmentation이랑 같은건가요?
코드에서 아래 부분을 이미지데이터에서의 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)
아래 코드를 실행하기 전에 type이 float일 때랑 코드를 실행해서 int일 때랑 값은 큰 차이가 없는데 왜 show_image 했을 때 그림이 다르게 나오는건가요?
aug_image = aug_image.astype('int')
저는 width_shift 했을 때 위아래로 되는 거 같은데... 교수님 코드랑 결과가 다릅니다.. 교수님 코드처럼 width_shift는 좌우 이동으로 생각하면 되나요?
답변 3
0
0
Generator란게 뭔지 잘 모르겠습니다... generator가 무엇인지 좀 더 쉽게 설명해 주실 수 있나요? 용어가 어렵습니다..ㅠ
사이킷런으로 표준화 할 때 fit하고 transform 하는 것처럼 위에 코드가 이미지를 fit하고 바꿔주는(?) 그런 느낌(?)으로 이해하면 되는지 궁금합니다.
ImageDataGenerator_AUG1에 있는 코드입니다. 강의는 ImageDataGeneratr로 Augmentation 적용 -01, 02에 다 나옵니다. int로 안바꾸면 왜 아래처럼 그림이 나오는지 궁금합니다. float일때나 int일 때나 큰 차이가 없는데 말이죠.
여기에 적는것 보다는 아래 파이썬 generator 설명을 참조하시면 더 좋을 것 같습니다.
https://lcs1245.tistory.com/entry/Python-generator-%EC%A0%9C%EB%84%A4%EB%A0%88%EC%9D%B4%ED%84%B0
네, 느낌(?)적으로는 사이킷런 fit_transform()과 유사합니다.
기본적으로 시각화시에는 image pixel값을 0 ~255 사이의 int 형으로 변경해야 합니다. 다만 0 ~ 255 사이의 int값을 0 ~ 1 사이의 float값으로 정규화 시에 matplotlib에서 시각화를 할 수도 있습니다(즉 0.1, 0.55 등의 값도 시각화 할 수 있습니다). 그런데 100.1 과 같은 값은 안됩니다.
0
안녕하십니까,
Generator와 augmentation은 다릅니다.
일반적으로 Python에서 Generator는 iterator(반복자)의 루프 컨트롤을 생성하기 위한 것입니다. 한마디로 for loop 내에서 풀릴 수 있는 객체(또는 함수)를 생성해 주는 역할을 수행합니다.
반면에 augmentation은 원본 이미지를 다양하게 변형하여 학습 이미지 데이터를 여러 형태로 만들어주는 역할을 수행합니다.
그런데 Keras의 ImageDataGenerator는 Generator의 역할과 Augmentation의 역할을 함께 수행할 수 있습니다.
이미지 데이터에서의 fit_transform()이 어떤 건지요? 제 강의에서 언급드린거라면 어떤 강의 영상의 몇분 분초에서 말씀드린건지 확인 부탁드립니다.
질문을 잘 이해하지 못했습니다. 이것도 제 강의 실습 코드 중에서 말씀 드린거라면 어떤 강의 영상의 몇분 분초에서 말씀드린건지 확인 부탁드립니다.
음. 이건 Keras ImageDataGenerator가 버전업이 되면서 뭔가 이상하게 동작하는 것 같스빈다. .
width_shift_range와 height_shift_range가 제가 강의를 만드는 시점의 동작과 반대로 동작하는군요.
Kesras라이브러리 자체에서 뭔가 잘못 구현이 된것 같습니다. 일단 해당 부분이 현재는 그렇게 동작하는 정도로만 이해해 주셔야 할 것 같습니다.
감사합니다.
네 맞습니다