Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing CNN的Keras图像和掩模增强_Image Processing_Tensorflow_Keras - Fatal编程技术网

Image processing CNN的Keras图像和掩模增强

Image processing CNN的Keras图像和掩模增强,image-processing,tensorflow,keras,Image Processing,Tensorflow,Keras,我试图使用Keras中的ImageDataGenerator和.flow()来实时增加CNN分割任务的图像数据。对于我对这种编程的基本理解,我深表歉意,因为我对它还很陌生。我有一个下面的函数,其目的是增加图像数据和相应的数据掩码: def图像增强(imgs、掩码): #创建两个具有相同参数的实例 #使用输入扩充值创建字典 数据生成参数=dict(特征中心=False, featurewise_std_normalization=False, 旋转范围=90。, 宽度\偏移\范围=0.1, 高度位

我试图使用Keras中的ImageDataGenerator和.flow()来实时增加CNN分割任务的图像数据。对于我对这种编程的基本理解,我深表歉意,因为我对它还很陌生。我有一个下面的函数,其目的是增加图像数据和相应的数据掩码:

def图像增强(imgs、掩码):
#创建两个具有相同参数的实例
#使用输入扩充值创建字典
数据生成参数=dict(特征中心=False,
featurewise_std_normalization=False,
旋转范围=90。,
宽度\偏移\范围=0.1,
高度位移范围=0.1,
缩放范围=0.2,
水平翻转=真,
垂直(翻转=真)
##将此方法用于图像和遮罩
image\u datagen=ImageDataGenerator(**data\u gen\u args)
mask_datagen=ImageDataGenerator(**数据_gen_args)
#为fit和flow方法提供相同的种子和关键字参数
种子=1
##将增强模型拟合到具有相同种子的图像和遮罩
image_datagen.fit(imgs,augment=True,seed=seed)
mask_datagen.fit(mask,augment=True,seed=seed)
##设置数据来源的参数(图像)
image\u生成器=image\u datagen.flow(
imgs,
批次大小=32,
洗牌=正确,
种子=种子)
##设置数据来源的参数(掩码)
mask_generator=mask_datagen.flow(
面具,
批次大小=32,
洗牌=正确,
种子=种子)
#将生成器组合成一个生成图像和遮罩的生成器
序列生成器=zip(图像生成器、掩码生成器)
##返回列车发电机,以在CNN中输入
回程列车发电机
据我所知,列车生成器应该由32个增强图像和相应的遮罩组成。但是,当我跑步时:

train\u generator=图像增强(imgs\u train、imgs\u spine\u mask\u train)
##运行fit生成器
model.fit\u生成器(训练\u生成器,每\u epoch步数=100,epoch=5000,回调=[model\u检查点])
图像增强只会永远运行。没有错误

imgs_系列、imgs_脊椎_面具_系列均为4d阵列

有人能告诉我我做错了什么吗?需要注意的是,我对stackoverflow完全陌生,所以如果我可以更改格式等,请让我知道


干杯,

在阅读了有关发电机的内容后,我认为问题在于您无法返回无限发电机(?)。因此,我在image\u增强函数中添加了:while True:yield(image\u generator.next(),mask\u generator.next()),而不是return。它的工作原理是:运行fit generator CNN模型。fit generator(train_generator,steps_per_epoch=100,epochs=5000,callbacks=[model_checkpoint])都运行。通过@mccoyd的编辑,代码在读取生成器后用于Mea,我相信问题在于你不能返回一个无限的生成器(?)。因此,我在image\u增强函数中添加了:while True:yield(image\u generator.next(),mask\u generator.next()),而不是return。它的工作原理是:运行fit generator CNN模型。fit generator(train_generator,steps_per_epoch=100,epochs=5000,callbacks=[model_checkpoint])都运行。通过编辑@mccoyd,代码对我有效