使用 Keras 进行对象检测 - 结合训练图像和目标掩码的问题
Object detection with Keras - issue with combining training images and target masks
我正在将我的 keras 模型拟合到图像样本及其相应的二进制掩码上以进行对象检测。基本上,我遵循 this page 末尾的示例:
from keras.preprocessing.image import ImageDataGenerator
# we create two instances with the same arguments
data_gen_args = dict(
rotation_range=4.,
width_shift_range=0.05,
height_shift_range=0.05,
shear_range=0.05,
zoom_range=0.05,
horizontal_flip=True, fill_mode='nearest')
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
seed = 2019
现在为图像和蒙版创建生成器:
target_size = (180, 320)
small_target_size = (11,20)
batch_size = 8
image_generator_trn = image_datagen.flow_from_directory(
path+'train',
class_mode=None,
target_size = target_size,
batch_size = batch_size,
shuffle= False,
seed=seed)
mask_generator_trn = mask_datagen.flow_from_directory(
path+'mask/train',
class_mode=None,
target_size = small_target_size,
batch_size = batch_size,
shuffle= False,
seed=seed)
输出:
Found 3327 images belonging to 2 classes.
Found 3327 images belonging to 2 classes.
最后我们创建了一个生成器用于 model.fit_generator
:
train_generator = zip(image_generator_trn, mask_generator_trn)
我的问题是最后一行(压缩);我要么得到内存异常,要么它没有完成执行。我怀疑它正在尝试压缩 2 个无限循环,并尝试在 model.fit_generator
中懒惰地压缩但同样的问题。
我能做些什么不同的事情?
问题在于 zip
试图耗尽两个发电机,当它们被设计为无限地产生输出时。这就是这种行为背后的原因。为了克服这个问题,使用 itertools.izip
函数。此外 - 请注意,如果您没有为两个生成器设置相同的 seed
- 将对您的 x
和 y
图像应用不同的增强。您需要关闭随机增强或设置相同的 seed
.
我正在将我的 keras 模型拟合到图像样本及其相应的二进制掩码上以进行对象检测。基本上,我遵循 this page 末尾的示例:
from keras.preprocessing.image import ImageDataGenerator
# we create two instances with the same arguments
data_gen_args = dict(
rotation_range=4.,
width_shift_range=0.05,
height_shift_range=0.05,
shear_range=0.05,
zoom_range=0.05,
horizontal_flip=True, fill_mode='nearest')
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
seed = 2019
现在为图像和蒙版创建生成器:
target_size = (180, 320)
small_target_size = (11,20)
batch_size = 8
image_generator_trn = image_datagen.flow_from_directory(
path+'train',
class_mode=None,
target_size = target_size,
batch_size = batch_size,
shuffle= False,
seed=seed)
mask_generator_trn = mask_datagen.flow_from_directory(
path+'mask/train',
class_mode=None,
target_size = small_target_size,
batch_size = batch_size,
shuffle= False,
seed=seed)
输出:
Found 3327 images belonging to 2 classes.
Found 3327 images belonging to 2 classes.
最后我们创建了一个生成器用于 model.fit_generator
:
train_generator = zip(image_generator_trn, mask_generator_trn)
我的问题是最后一行(压缩);我要么得到内存异常,要么它没有完成执行。我怀疑它正在尝试压缩 2 个无限循环,并尝试在 model.fit_generator
中懒惰地压缩但同样的问题。
我能做些什么不同的事情?
问题在于 zip
试图耗尽两个发电机,当它们被设计为无限地产生输出时。这就是这种行为背后的原因。为了克服这个问题,使用 itertools.izip
函数。此外 - 请注意,如果您没有为两个生成器设置相同的 seed
- 将对您的 x
和 y
图像应用不同的增强。您需要关闭随机增强或设置相同的 seed
.