如何打开 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.rectrain.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()