Keras의 데이터 증가에 대한 자료를 읽었지만 나에게는 아직 모호합니다. 데이터 증가 단계에서 각 입력 이미지에서 생성 된 이미지 수를 제어하는 매개 변수가 있습니까? this example에서 각 이미지에서 생성 된 이미지의 수를 제어하는 매개 변수를 볼 수 없습니다.Keras 데이터 확대 매개 변수
예를 들어 아래 코드에서 각 입력 이미지에서 생성 된 이미지의 수를 제어하고 미리보기라는 폴더에 저장되는 매개 변수 (num_imgs
)를 가질 수 있습니다. 실시간 데이터 증가에는이 목적을위한 매개 변수가 없습니다. 모든 입력 이미지가 한 번 생성 한 후 여기에
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
num_imgs = 20
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
img = load_img('data/train/cats/cat.0.jpg') # this is a PIL image
x = img_to_array(img) # this is a Numpy array with shape (3, 150, 150)
x = x.reshape((1,) + x.shape) # this is a Numpy array with shape (1, 3, 150, 150)
# the .flow() command below generates batches of randomly transformed images
# and saves the results to the `preview/` directory
i = 0
for batch in datagen.flow(x, batch_size=1,
save_to_dir='preview', save_prefix='cat', save_format='jpeg'):
i += 1
if i > num_imgs:
break # otherwise the generator would loop indefinitely
도움 주셔서 감사합니다. 따라서 전적으로 1000 개의 이미지가있는 경우 각 신기원에서 1000 개의 새 이미지가 원래 이미지에서 생성되어 교육용 모델로 공급됩니다. 그런 다음, 다음 기점에서 1000 개의 새 이미지가 원본 이미지에서 생성되고 교육을 위해 모델로 공급됩니다. 따라서 모델이 원본 데이터를 보지 못했을 가능성이 있습니다. – SaraG
또 다른 접근법은 새로운 이미지를 생성하고 저장 한 다음 그것을 사용하여 모델을 교육하는 것입니다. 예를 들어 각 입력 이미지에서 10 개의 이미지를 생성하면 10,000 개의 새 이미지가 생깁니다. 그래서 전적으로 교육을 위해 11,000 개의 이미지를 갖게 될 것입니다. 이 접근법 중 어느 것이 더 낫습니까? – SaraG
예, 맞습니다. 모델에 원래 데이터가 표시되지 않을 수도 있습니다. 더 많은 변환이 적용될수록 모델이 원본 데이터를 볼 확률은 줄어 듭니다. 변환 매개 변수의 범위는 해당 확률에도 영향을줍니다. 두 번째 설명에서 제안한 접근법 또한 합리적인 것처럼 보입니다. 어느 것이 더 낳은 것인지 말하기는 어렵습니다. 두 가지 대안을 시도하고 가장 좋은 결과를 산출하는 것을 고를 것입니다! –