gpt4 book ai didi

machine-learning - 卡住模型会降低输出精度

转载 作者:行者123 更新时间:2023-11-30 09:50:30 24 4
gpt4 key购买 nike

我有一个图像分割网络,旨在对道路和障碍物进行分类。我想卡住模型并将其作为 API 提供。所以我使用默认的 TensorFlow 工具来卡住模型。卡住后,网络给出的输出完全关闭并且不准确。

这是一个示例。

输入图像

enter image description here

使用检查点文件测试时的输出 enter image description here

卡住模型后的输出 enter image description here

我尝试使用不同版本的 tensorflow 来卡住,但这没有帮助。由于网络在针对检查点进行测试时表现异常,因此我认为问题出在卡住模型脚本中。网络使用 Batch_normalization。这是否是下降的原因,因为我看到了几个与类似性质相关的问题?我怎样才能避免这种情况?

Here's全网

使用检查点文件进行预测

with tf.Graph().as_default() as graph:
images_tensor = tf.train.string_input_producer(images_list, shuffle=False)
reader = tf.WholeFileReader()
key, image_tensor = reader.read(images_tensor)
image = tf.image.decode_png(image_tensor, channels=3)
image = preprocess(image)
images = tf.train.batch([image], batch_size = 1, allow_smaller_final_batch=True)

#Create the model inference
with slim.arg_scope(ENet_arg_scope()):
logits, probabilities = ENet(images,
num_classes=4,
batch_size=1,
is_training=True,
reuse=None,
num_initial_blocks=num_initial_blocks,
stage_two_repeat=stage_two_repeat,
skip_connections=skip_connections)

variables_to_restore = slim.get_variables_to_restore()
saver = tf.train.Saver(variables_to_restore)
def restore_fn(sess):
return saver.restore(sess, checkpoint)
predictions = tf.argmax(probabilities, -1)
predictions = tf.cast(predictions, tf.float32)
sv = tf.train.Supervisor(logdir=None, init_fn=restore_fn)
with sv.managed_session() as sess:
for i in xrange(int(len(images_list) / 1 + 1)):
segmentations = sess.run(predictions)
for j in xrange(segmentations.shape[0]):
converted_image = grayscale_to_colour(segmentations[j],i,j)
imsave(photo_dir + "/imagelabel_%05d_edges.png" %(i*1 + j), converted_image)

PB文件预测

def predict():
start = time.time()
y_out = persistent_sess.run(y, feed_dict={x: x_in})
end = time.time()
print(end-start)
return y_out

with tf.Session() as sess:
model_filename = "frozen_model_tf_version.pb"
with gfile.FastGFile(model_filename, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def)
g_in = tf.get_default_graph()

x = g_in.get_tensor_by_name('import/batch:0')
y = g_in.get_tensor_by_name('import/ENet/output:0')

persistent_sess = tf.Session(graph=g_in)
x_in_unaltered=cv2.imread(img)
x_in_unaltered = cv2.resize(x_in_unaltered,(480,360),interpolation=cv2.INTER_CUBIC)
x_in = np.expand_dims(x_in_unaltered.flatten(),axis=0)
predictions=predict()
print(np.unique(predictions,return_counts=True))
out = np.array(predictions[0],dtype=np.float32)
out = np.reshape(out, [360,480])
converted_image = grayscale_to_colour(out,x_in_unaltered)
cv2.imwrite("out.png",converted_image)

最佳答案

此处问题与 is_training 有关,因为您在预测期间使用 dropoutbatch_normis_training > 应设置为False。那么你可以期待同样的结果。

logits, probabilities = ENet(images,
num_classes=4,
batch_size=1,
is_training=False,
reuse=None,
num_initial_blocks=num_initial_blocks,
stage_two_repeat=stage_two_repeat,
skip_connections=skip_connections)

关于machine-learning - 卡住模型会降低输出精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45796759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com