in caffe/experiments/prepare_dataset.py [0:0]
def shapenet_lmdb_ae():
root_folder = os.path.join(abs_path, 'dataset')
points_folder = os.path.join(root_folder, 'ShapeNetV1.points')
octree_folder = os.path.join(root_folder, 'ShapeNetV1.octree')
img_folder = os.path.join(root_folder, 'ShapeNetV1.renderings')
datalist_folder = os.path.join(root_folder, 'ShapeNetV1.datalist')
lmdb_folder = os.path.join(root_folder, 'ShapeNetV1.lmdb')
if not os.path.exists(lmdb_folder): os.mkdir(lmdb_folder)
category = ['02691156', '02828884', '02933112', '02958343', '03001627',
'03211117', '03636649', '03691459', '04090263', '04256520',
'04379243', '04401088', '04530566']
shapenet_convert_points_to_octree_ae()
# generate datalist for octree
filename_octree_train = os.path.join(datalist_folder, 'octree_train.txt')
filename_octree_train_aug = os.path.join(datalist_folder, 'octree_train_aug.txt')
filename_octree_test = os.path.join(datalist_folder, 'octree_test.txt')
file_octree_train = open(filename_octree_train, 'w')
file_octree_train_aug = open(filename_octree_train_aug, 'w')
file_octree_test = open(filename_octree_test, 'w')
for i in range(0, len(category)):
path_img = os.path.join(img_folder, category[i])
path_point = os.path.join(points_folder, category[i])
filename_img = sorted(os.listdir(path_img))
filename_pc = sorted(os.listdir(path_point))
filename = [val for val in filename_img if val + '.points' in filename_pc]
for item in filename[:int(len(filename) * 0.8)]:
file_octree_train.write('%s/%s_7_2_000.octree %d\n' % (category[i], item, i))
for item in filename[int(len(filename) * 0.8):]:
file_octree_test.write('%s/%s_7_2_000.octree %d\n' % (category[i], item, i))
for item in filename[:int(len(filename) * 0.8)]:
file_octree_train_aug.write('%s/%s_7_2_000.octree %d\n' % (category[i], item, i))
file_octree_train_aug.write('%s/%s_7_2_001.octree %d\n' % (category[i], item, i))
file_octree_train_aug.write('%s/%s_7_2_011.octree %d\n' % (category[i], item, i))
file_octree_train.close()
file_octree_test.close()
file_octree_train_aug.close()
# generate lmdb for octree
print('Generate octree lmdb ...')
cmds = [converter, octree_folder + '/', filename_octree_train, lmdb_folder + '/octree_train_lmdb']
cmd = ' '.join(cmds)
print(cmd)
os.system(cmd)
cmds = [converter, octree_folder + '/', filename_octree_train_aug, lmdb_folder + '/octree_train_aug_lmdb']
cmd = ' '.join(cmds)
print(cmd)
os.system(cmd)
cmds = [converter, octree_folder + '/', filename_octree_test, lmdb_folder + '/octree_test_lmdb']
cmd = ' '.join(cmds)
print(cmd)
os.system(cmd)
# generate datalist for image
filename_octree_train = os.path.join(datalist_folder, 'octree_train_shuffle.txt')
filename_img_train = os.path.join(datalist_folder, 'img_train_shuffle.txt')
file_img_train = open(filename_img_train, 'w')
file_octree_train = open(filename_octree_train, 'r')
lines = file_octree_train.readlines()
rand_perm = []
view_num = 24
for i in range(0, len(lines)):
rand_perm.append(numpy.random.permutation(view_num))
for v in range(0, view_num):
for i in range(0, len(lines)):
line_img = lines[i].replace('/', '/') \
.replace('_7_2_000.octree',
'/rendering/%02d.png' % rand_perm[i][v])
file_img_train.write(line_img)
file_octree_train.close()
file_img_train.close()
filename_oct_test = os.path.join(datalist_folder, 'octree_test_shuffle.txt')
filename_img_test = os.path.join(datalist_folder, 'img_test_shuffle.txt')
file_img_test = open(filename_img_test, 'w')
file_oct_test = open(filename_oct_test, 'r')
lines = file_oct_test.readlines()
for line in lines:
line_img = line.replace('/', '/').replace('_7_2_000.octree', '/rendering/00.png')
file_img_test.write(line_img)
file_img_test.close()
file_oct_test.close()
# generate lmdb for image2shape
print('Generate image lmdb ...')
cmds = [convert_image, img_folder+'/', filename_img_train, lmdb_folder+'/img_train_lmdb',
'--noshuffle', '--check_size']
cmd = ' '.join(cmds)
print(cmd)
os.system(cmd)
cmds = [convert_image, img_folder+'/', filename_img_test, lmdb_folder+'/img_test_lmdb',
'--noshuffle', '--check_size']
cmd = ' '.join(cmds)
print(cmd)
os.system(cmd)