CASIA-WebFace 4 个 g 的人脸数据,在我生成普通的分类数据集之后,生成的 lmdb 文件有 70 个 g,这是不是很不正常?
另外是,cv2.resize 之后的图片,只有 lmdb,为什么不会收敛呢,而我如果用自带的 tool 是可以的?
放几行关键代码,希望各位可以指点一二:
def generate_ordinary_lmdb(source, target, IMAGE_SIZE=227):
env = lmdb.Environment(target, map_size=int(1e12))
with env.begin(write=True) as txn:
for label, person in enumerate(os.listdir(source)):
person_dir = os.path.join(source, person)
one_person_samples = os.listdir(person_dir)
for im_files in one_person_samples:
s = os.path.join(person_dir, im_files)
datum = caffe.proto.caffe_pb2.Datum()
datum.channels = 3
datum.height = IMAGE_SIZE
datum.width = IMAGE_SIZE
sample = preprocess.process(s, IMAGE_SIZE)
datum.data = sample.tobytes()
datum.label = label
str_id = "%s" % s
print str_id
txn.put(str_id, datum.SerializeToString())
print "--------"
def process(source, IMAGE_SIZE=227):
im = cv2.imread(source)
im = cv2.resize(im, (IMAGE_SIZE, IMAGE_SIZE))
# plt.imshow(im)
# plt.show()
im = im[:, :, ::-1] # RGB TO BGR
im = im.transpose((2, 0, 1)) # X1*X2*3 TO 3*X1*X2
return im
1
mingran 2017-09-21 08:39:02 +08:00
正常,人脸,图像矩阵经过了 jpg 压缩
我的理解 lmdb 是 berkleyDB 的近亲,属于[key-value]型数据库 得把图像矩阵变成字符存储,不做任何压缩。( 你走进 sample.tobytes() 看看详细 ) 文件大到令人发指可以理解。 不收敛,跟用什么 DB 没关系。 |
2
mingran 2017-09-21 08:43:21 +08:00
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.tobytes.html
我不搞 Caffe 很久了。神烦 Caffe 数据输入的那些 layer。。。楼主要是看到好的总结文章,给我共享一份。 |