In [1]:
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import time
%matplotlib inline
import lmdb
from caffe.proto import caffe_pb2
# import caffe
In [72]:
train = lmdb.open('./data/48x48/ndsb_train_lmdb/')
image_dims = (48, 48)
with train.begin() as txn:
c = txn.cursor()
k0, v0 = iter(c).next()
datum = caffe_pb2.Datum()
def bs_to_l(bs):
datum.ParseFromString(bs)
return dd.label
def bs_to_im(bs):
datum.ParseFromString(bs)
image_dims = (datum.height, datum.width)
im = np.array(Image.frombytes('L', image_dims, datum.data))[:, :, None]
return im
print bs_to_l(v0)
# plt.imshow(np.squeeze(bs_to_im(v0)), cmap='gray', interpolation='none')
In [66]:
%%timeit
q = bs_to_im(v0)
In [73]:
tic = time.time()
test = lmdb.open('/data/ndsb/ndsb_test_lmdb/', readonly=True)
with test.begin() as txn:
c = txn.cursor()
zz = [(k.split('_')[1], bs_to_im(v), bs_to_l(v))
for k, v in c]
len(zz)
print time.time() - tic
In [71]:
zz[0]
Out[71]:
In [34]:
plt.imshow(img, cmap='gray')
Out[34]:
In [36]:
# Scale to standardize input dimensions.
input_ = np.zeros((len(inputs),
image_dims[0], image_dims[1], inputs[0].shape[2]),
dtype=np.float32)
for ix, in_ in enumerate(inputs):
input_[ix] = caffe.io.resize_image(in_, image_dims)
if oversample:
# Generate center, corner, and mirrored crops.
input_ = caffe.io.oversample(input_, crop_dims)
else:
# Take center crop.
center = np.array(self.image_dims) / 2.0
crop = np.tile(center, (1, 2))[0] + np.concatenate([
-self.crop_dims / 2.0,
self.crop_dims / 2.0
])
input_ = input_[:, crop[0]:crop[2], crop[1]:crop[3], :]
In [20]:
datum = caffe_pb2.Datum()
datum.ParseFromString(v0)
# print datum.label
image_dims = (datum.height, datum.width)
img = Image.frombytes('L', image_dims, datum.data)
plt.imshow(img, cmap='gray', interpolation='none')
Out[20]:
In [80]:
import tools.my_io as my_io
tic = time.time()
qq = my_io.load_lmdb('./data/48x48/ndsb_train_lmdb/')
print 'Load db time:', time.time()-tic
In [85]:
p, im, l = qq[0]
p
im
l
Out[85]: