class RawWiderFaceReader(RNGDataFlow):
"""Read images directly from tar file without unpacking
boxes: left, top, width, height
"""
def __init__(self, matfile, zipfile):
super(RawWiderFaceReader, self).__init__()
self.matfile = matfile
self.zipfile = zipfile
self.subset = matfile.split('_')[-1].replace('.mat', '')
f = sio.loadmat(matfile)
events = [f['event_list'][i][0][0] for i in range(len(f['event_list']))]
raw_files = [f['file_list'][i][0] for i in range(len(f['file_list']))]
raw_bbx = [f['face_bbx_list'][i][0] for i in range(len(f['face_bbx_list']))]
col_files = []
for file, bbx in zip(raw_files, raw_bbx):
for filee, bbxe in zip(file, bbx):
col_files.append((filee[0][0], bbxe[0]))
self.col_files2 = []
for file, bbx in col_files:
for ev in events:
if file.startswith(ev.replace(' ', '_')):
self.col_files2.append((str('WIDER_%s/images/' % self.subset + ev +
'/' + file + '.jpg').encode('ascii', 'ignore'), bbx))
break
def get_data(self):
with ZipFile(self.zipfile, 'r') as zip_hnd:
for fn, bbx in self.col_files2:
buf = zip_hnd.read('%s' % fn)
yield [buf, bbx]
为了加载数据集,我向您解释了如何使用TensorPack在TensorFlow中执行此操作(仅针对数据)。在
首先,我们需要包含边界框的zip文件和mat文件。基本上,zip文件直接从下面的文件读取
它提供了一个生成器
^{pr2}$get_data()
,它返回jpeg编码的图像和边界框。它的存储方式似乎很复杂,因为它是一个包含Matlab生成的边界框的文件。 要绘制边界框,可以使用:整个脚本在这里: https://gist.github.com/PatWie/a743d2349f388b27ed3ef783919c3882
在
pip install -U git+https://github.com/ppwwyyxx/tensorpack.git
之后,您可以通过要将其转换为lmdb文件,可以使用另一个参数。不需要在这里解压缩数据。在
要使用数据,如下所示:
相关问题 更多 >
编程相关推荐