1

我已经设法在我的数据上训练attention_ocr,我现在正在尝试进行推理运行(tensorflow 版本 1.2.1)。

我根据 git README 中提到的内容使用以下代码来使用预训练模型,但我总是得到一个重复字符列表,每次运行都会发生变化(如 [38,38,38...] ) . 这显然是错误的,因为根据训练期间对测试集的评估,我的字符准确率应该在 90% 以上!

以前有人试过吗?或者有人可以为我提供一些修复它的提示吗?

images_placeholder = tf.placeholder(tf.float32, shape=[1, height, width, channels])
images_actual_data = cv2.imread(imageFname)
images_actual_data = cv2.cvtColor(images_actual_data, cv2.COLOR_BGR2RGB)

# some range normalization that is also done for training data
images_actual_data = images_actual_data.astype('float32')
images_actual_data -= images_actual_data.min()
images_actual_data /= images_actual_data.max()
images_actual_data -= 0.5
images_actual_data *= 2.5


model = common_flags.create_model(69,23,1,68) # based on the trained model
endpoints = model.create_base(images_placeholder, labels_one_hot=None)

with tf.Session() as sess:
    init_fn = model.create_init_fn_to_restore('/path-to-trained-models/model.ckpt-1126202', '')
    sess.run(tf.global_variables_initializer()) # tried to run sess.run(init_fn) here, but it fails
    predictions = sess.run(endpoints.predicted_chars, feed_dict={images_placeholder:images_actual_data.reshape(1,imHeight,imWidth,imChannel)})
    print predictions
4

2 回答 2

2

我有点让它工作。我在会话中没有正确运行东西。无论如何,在运行预测之前添加以下行,解决了这个问题:

init_fn(sess)

这显然不是运行预训练模型的最佳方式(推荐在 git 页面服务基础设施上),但现在对我来说可以很好地进行调试。

于 2017-08-08T09:58:56.317 回答
0

我的猜测是范围归一化部分不正确。在训练期间,模型使用 tf.image.convert_image_dtype。所以请尝试更换:

images_actual_data -= images_actual_data.min()
images_actual_data /= images_actual_data.max()

images_actual_data /= 255.0
于 2017-08-07T17:59:03.853 回答