我目前正在使用hdf5数据层来读取我拥有的图像(大约30000)以及有关图像的一些元数据。
我无法进行裁剪翻转数据扩充,因为当我只使用中心裁剪时,存储大约1500张图像的数据只会产生大约1.5 GB的h5文件,这是hdf5数据集的总大小(30 h5文件)变成~40 GB,所以我不能使用扩充,因为hdf5数据集太大了。
所以,我想如果我可以使用Imagedata层来读取图像而hdf5数据层用于元数据,我的问题就可以解决了。但我没有找到任何材料。是否可以这样做?
答案 0 :(得分:0)
是的,我认为我收到了错误,但这是由于我原型文件中的其他内容,下面是我原型的输入图层
layer {
type: "HDF5Data"
name: "data"
top: "Meta"
hdf5_data_param {
source: "/path/to/train.txt"
batch_size: 50
}
include { phase: TRAIN }
}
layer {
name: "data"
type: "ImageData"
top: "X"
top: "Labels"
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 227
mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
}
image_data_param {
source: "/path/to/train.txt"
batch_size: 50
new_height: 256
new_width: 256
}
}
layer {
type: "HDF5Data"
name: "data"
top: "Meta"
hdf5_data_param {
source: "/path/to/val.txt"
batch_size: 50
}
include { phase: TEST }
}
layer {
name: "data"
type: "ImageData"
top: "X"
top: "Labels"
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 227
mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
}
image_data_param {
source: "/path/to/val.txt"
batch_size: 50
new_height: 256
new_width: 256
}
}
答案 1 :(得分:0)
我很高兴你documentation。但是,HDF5文件的文件大小限制根本不是问题。在caffe中,"HDF5Data"
图层将文本文件作为输入source
作为输入,列出尽可能多的 hdf5文件!因此,如果遇到大型hdf5文件,可以将其拆分为几个较小的文件,并将它们全部列在文本文件中。
例如,您可能有/path/to/hdf5_list.txt
个文件列出以下文件
/path/to/not_too_large_file.h5 /path/to/split_large_file_001.h5 /path/to/split_large_file_002.h5 /path/to/split_large_file_003.h5 /path/to/split_large_file_004.h5
等等...... 然后你的输入图层看起来像
layer {
name: "input"
type: "HDF5Data"
top: "data"
top: "label"
hdf5_data_param {
source: "/path/to/hdf5_list.txt"
}
include { phase: TRAIN }
}