在深度学习模型中增强来自 h5 文件的双图像输入

问题描述

我有一个深度学习模型,它从一个 h5 文件获取两个输入图像,然后输出一个值。我的模型使用 keras 和 tensorflow 以及 python。我想通过使用图像增强技术来补充我当前的数据。为了在我的模型中工作,两个输入图像必须应用相同的增强。

我遇到过这个 HDF5ImageGenerator:https://github.com/angulartist/Keras-HDF5-ImageDataGenerator

但是,在我使用 h5 文件中的两个输入的情况下,上面链接中提供的修复程序不起作用。具体来说,这两个输入是使用来自 keras 的两个 HDF5Matrices(每个输入一个 HDF5Matrix)提供给模型的。如果有人有任何想法或可以为我指出当前困境的解决方案,我将不胜感激。

解决方法

根据以下评论更新了答案。
我熟悉 HDF5,但不熟悉 Keras-HDF5-ImageDataGenerator 实用程序。感谢您添加有关您当前和所需流程的详细信息。我对差异有了更好的理解。好消息——这两个函数都从 H5 文件中读取图像和标签数据。更好的是,HDF5ImageGenerator() for 的输入与 Keras HDF5Matrix() 的输入非常相似:

HDF5ImageGenerator(src='path/to/train.h5',X_key='images',y_key='labels',scaler=,num_classes=,labels_encoding='hot',batch_size=##,augmenter=your_augmenter_function)

Where:
datapath -> src -> 'path/to/train.h5'
dataset for images -> X_key='images' 
dataset for labels -> y_key 'labels'

就您而言,您使用了 2 个图像训练集(同样,我还没有做过)。

HDF5Matrix(datapath,dataset,start=0,end=None,normalizer=None)
# something like this:
image_train1 = HDF5Matrix('path/to/train.h5','images1') 
image_train2 = HDF5Matrix('path/to/train.h5','images2') 
label_train = HDF5Matrix('path/train.h5','labels')

根据我对 HDF5ImageGenerator 文档的阅读,您似乎可以创建多个生成器(请注意该示例如何将 train_generatorval_generatormodel.fit_generator()eval_generatormodel.evaluate_generator(),还提到使用带有 predict_generator() 的生成器)。

基于此,我会尝试创建 2 个输入生成器来模拟您的矩阵输入。像这样:

train_gen_1 = HDF5ImageGenerator(src='path/to/train.h5',X_key='images1',y_key='labels')
train_gen_2 = HDF5ImageGenerator(src='path/to/train.h5',X_key='images2',y_key='labels')

然后传递类似于您的 2 个 HDF5Matrix 输入(image_train1image_train2)的 2 个生成器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...