forked from Cysu/dgd_person_reid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvert_lmdb_to_numpy.py
36 lines (30 loc) · 1.08 KB
/
convert_lmdb_to_numpy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys
import os.path as osp
from argparse import ArgumentParser
import lmdb
import numpy as np
root = osp.join(osp.dirname(osp.abspath(__file__)), '..')
if osp.join(root, 'external/caffe/python') not in sys.path:
sys.path.insert(0, osp.join(root, 'external/caffe/python'))
from caffe.proto.caffe_pb2 import Datum
def main(args):
datum = Datum()
data = []
env = lmdb.open(args.input_lmdb)
with env.begin() as txn:
cursor = txn.cursor()
for i, (key, value) in enumerate(cursor):
if i >= args.truncate: break
datum.ParseFromString(value)
data.append(datum.float_data)
data = np.squeeze(np.asarray(data))
np.save(args.output_npy, data)
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('input_lmdb')
parser.add_argument('output_npy')
parser.add_argument('--truncate', type=int, default=np.inf,
help="Stop converting the items from the database after this. "
"All the items will be converted if not specified.")
args = parser.parse_args()
main(args)