Я бы порекомендовал вам объединить оба набора данных, перемешать их, а затем снова разделить, чтобы получить наборы данных для обучения и тестирования с одинаковыми метками.Это правильный способ маркировки, потому что модели необходимо «увидеть» все возможные метки и сравнить их с набором тестовых данных.
Для этого вы можете использовать gapcv
:
Установитьбиблиотека:
pip install gapcv
микс папок:
from gapcv.utils.img_tools import ImgUtils
gap = ImgUtils(root_path='root_folder{}/training'.format('_t2'))
gap.transf='2to1'
gap.transform()
Это создаст папку со следующей структурой:
root_folder-
|-a -img1.png
img2.png
|-as -img1.png
img2.png
|-are-img1.png
|-and-img1.png
img1.png
Вариант 1
Используйте gapcv
для предварительной обработки набора данных в файл h5
и совместного использования и используйте его для встраивания изображений в модель keras
:
import os
if not os.path.isfile('name_data_set.h5'):
# this will create the `h5` file if it doesn't exist
images = Images('name_data_set', 'root_folder', config=['resize=(224,224)', 'store'])
# this will stream the data from the `h5` file so you don't overload your memory
images = Images(config=['stream'], augment=['flip=both', 'edge', 'zoom=0.3', 'denoise']) # augment if it's needed if not use just Images(config=['stream']), norm 1.0/255.0 by default.
images.load('name_data_set')
#Metadata
print('images train')
print('Time to load data set:', images.elapsed)
print('Number of images in data set:', images.count)
print('classes:', images.classes)
генератор:
images.split = 0.2
images.minibatch = 32
gap_generator = images.minibatch
X_test, Y_test = images.test
Fit keras
модель:
model.fit_generator(generator=gap_generator,
validation_data=(X_test, Y_test),
epochs=epochs,
steps_per_epoch=steps_per_epoch)
зачем использовать gapcv?ну, это в два раза быстрее подходит для модели, чем ImageDataGenerator()
:)
Опция 2
Используйте gapcv
, чтобы перемешать и разделить набор данных с одинаковыми метками:
gap = ImgUtils(root_path='root_folder')
# Tree 2
gap.transform(shufle=True, img_split=0.2)
продолжайте использовать keras
ImageDataGenerator()
как обычно.
Документация:
Обучение Блокнот для смешивания и разделенияпапки.
gapcv документация.
Дайте мне знать, как это происходит.:)