def merge_sm_with_tf(isomap_lists, confidence_lists, output_list):
import tensorflow as tf
import cnn_tf_graphs
from shutil import copyfile
#zipped_input = zip(isomap_lists, confidence_lists, output_list)
#zipped_input.sort(key=lambda x: len(x[0]))
#isomap_lists, confidence_lists, output_list = zip(*zipped_input)
sorted_idx_list = sorted(range(len(isomap_lists)), key=lambda x: len(isomap_lists[x]))
#print (sorted_idx_list)
isomap_lists = [isomap_lists[i] for i in sorted_idx_list]
confidence_lists = [confidence_lists[i] for i in sorted_idx_list]
output_list = [output_list[i] for i in sorted_idx_list]
#print ('HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH')
#for i in range(len(isomap_lists)):
# print (isomap_lists[i])
# print (confidence_lists[i])
# print (output_list[i])
#isomap_lists.sort(key=len)
merge_legth = -1
sess = None
for j, isomap_list in enumerate(isomap_lists):
with tf.Graph().as_default():
if len(isomap_list) == 0:
continue
elif len(isomap_list) ==1:
copyfile(isomap_list[0],output_list[j])
else:
if len(isomap_list) != merge_legth:
if sess:
sess.close()
placeholders = []
outpath = tf.placeholder(tf.string)
for i in range(len(isomap_list)):
colour = tf.placeholder(tf.float32, shape=(1, ISOMAP_SIZE, ISOMAP_SIZE, 3))
conf = tf.placeholder(tf.float32, shape=(1, ISOMAP_SIZE, ISOMAP_SIZE, 1))
placeholders.append([colour, conf])
merged = tf.squeeze(cnn_tf_graphs.merge_isomaps_softmax(placeholders))
merged_uint8 = tf.cast(merged, tf.uint8)
encoded = tf.image.encode_png(merged_uint8)
write_file_op = tf.write_file(outpath, encoded)
merge_legth = len(isomap_list)
sess = tf.Session()
print ('merging',merge_legth,'images (max',len(isomap_lists[-1]),') idx',j,'of',len(isomap_lists))
feed_dict = {}
for i in range(len(isomap_list)):
feed_dict[placeholders[i][0]] = np.expand_dims(cv2.imread(isomap_list[i], cv2.IMREAD_UNCHANGED)[:,:,:3].astype(np.float32)[:,:,::-1], axis=0)
feed_dict[placeholders[i][1]] = np.expand_dims(np.load(confidence_lists[j][i]).astype(np.float32), axis=0)
feed_dict[outpath] = output_list[j]
sess.run(write_file_op, feed_dict=feed_dict)
评论列表
文章目录