Я пытаюсь приспособить модель CNN (архитектура Ale xNet) с набором данных 4900 изображений (480 * 640 * 3), и я хотел бы сделать Data Augmentation, я сделал собственный генератор, который использует метод ImageDataGenerator, поскольку изображения находятся по разным путям и надписям, поэтому я создал класс, который берет все пути и сохраняет в двух списках пути к изображениям и их метки, затем он загружает пакеты из 32 изображений и меток и подходит для генератора данных изображений :
Это метод пользовательского генератора, который вызывается из модели, когда он подходит, и где я подгоняю ImageDataGenerator
def __getitem__(self,index) :
batch_x=self.img_filenames[index * self.batch_size : (index+1) * self.batch_size]
batch_y=self.labels[index * self.batch_size: (index+1) * self.batch_size]
gen=ImageDataGenerator(rescale=1./255,
rotation_range=90,
brightness_range=(0.1,0.9),
horizontal_flip=True)
X=[plt.imread(filename) for filename in batch_x]
X,Y = next(gen.flow(x= np.array(X), y= np.array(batch_y), batch_size=self.batch_size))
return X,Y
У меня есть несколько вопросов:
Что предполагается, что ImageDataGenerator возвращает, если я передам 32 (batch_size) разных изображения, он вернет 32 измененных изображения, 1 для каждого или 32 изображения для каждого, и если я пропущу только 1 изображение с размером пакета 32 , он возвращает 32 измененных изображения из этого? Я почти уверен, что это 1 для каждого, но я хочу подтвердить.
Во-вторых, если я хочу иметь изображения 40 КБ, если я снова изменяю индекс на 0, когда он превышает образцы // batch_size, и измените метод len , умножив на 2 или что я хочу, предполагается, что, поскольку изображения генерируются случайным образом, у меня будет 4900 новых изображений или столько, сколько я хочу, не так ли?
Основная проблема в том, что когда он достигает точности 0,5, он перестает увеличиваться, я пробовал с 3 эпохами, и это то же самое, он увеличивается до 3 или 4 партий, а затем останавливается, поэтому я сомневаюсь.
Спасибо.