如何打开 select python 中 .rec 文件中的图像子集?
How to open and select a subset of images from .rec file in python?
我有一个包含以下文件的文件夹:train.idx、train.rec、属性、lfw.bin、cfp_fp.bin、agedb_30.bin
此文件夹包含面部图像。
我已经在下面的代码中使用了ImageRecordIter。
然而,每次打印 train_data 的第一个元素时,我都会得到不同的图像。
train_data = ImageRecordIter(
path_imgrec = os.path.join(rec_path,'train.rec'),
path_imgidx = os.path.join(rec_path, 'train.idx'),
label_width = 2,
data_shape = (3,112,112 ),
batch_size = 10,
shuffle = False)
我的问题是:
1) 我不知道数据通常如何存储在这些类型的文件中,例如哪一个包含标签。知道这些类型的文件吗?
2) 如何提取数据子集来制作示例文件?另外,文件格式是什么(例如 pickle 文件、txt 文件)?
您只在 ImageRecordIter
中使用 train.rec
和 train.idx
,因此它们是唯一被使用的文件。您的标签将(与数据一起)存储在 train.rec
文件中。您可以使用 MXIndexedRecordIO
从这些文件中提取随机样本。类似于:
samples = []
record = mx.recordio.MXIndexedRecordIO('tmp.idx', 'tmp.rec', 'r')
for i in range(5):
samples.append(record.read_idx(i))
record = mx.recordio.MXIndexedRecordIO('tmp.idx', 'tmp.rec', 'w')
for i, sample in enumerate(samples):
record.write_idx(i, sample)
record.close()
我有一个包含以下文件的文件夹:train.idx、train.rec、属性、lfw.bin、cfp_fp.bin、agedb_30.bin
此文件夹包含面部图像。
我已经在下面的代码中使用了ImageRecordIter。
然而,每次打印 train_data 的第一个元素时,我都会得到不同的图像。
train_data = ImageRecordIter(
path_imgrec = os.path.join(rec_path,'train.rec'),
path_imgidx = os.path.join(rec_path, 'train.idx'),
label_width = 2,
data_shape = (3,112,112 ),
batch_size = 10,
shuffle = False)
我的问题是:
1) 我不知道数据通常如何存储在这些类型的文件中,例如哪一个包含标签。知道这些类型的文件吗?
2) 如何提取数据子集来制作示例文件?另外,文件格式是什么(例如 pickle 文件、txt 文件)?
您只在 ImageRecordIter
中使用 train.rec
和 train.idx
,因此它们是唯一被使用的文件。您的标签将(与数据一起)存储在 train.rec
文件中。您可以使用 MXIndexedRecordIO
从这些文件中提取随机样本。类似于:
samples = []
record = mx.recordio.MXIndexedRecordIO('tmp.idx', 'tmp.rec', 'r')
for i in range(5):
samples.append(record.read_idx(i))
record = mx.recordio.MXIndexedRecordIO('tmp.idx', 'tmp.rec', 'w')
for i, sample in enumerate(samples):
record.write_idx(i, sample)
record.close()