我正在尝试使用tensorflow进行转移学习.我从教程中下载了预训练模型inception3.在代码中,用于预测:
prediction = sess.run(softmax_tensor,{'DecodeJpeg/contents:0'}:image_data})
有没有办法喂png图像.我试过换DecodeJpeg
到DecodePng
但是没用.除此之外,如果我想要像numpy数组或一批数组那样提供解码图像文件,我应该改变什么?
谢谢!!
随附的InceptionV3图表classify_image.py
仅支持开箱即用的JPEG图像.有两种方法可以将此图表与PNG图像一起使用:
将PNG图像转换为height
x width
x 3(通道)Numpy数组,例如使用PIL,然后输入'DecodeJpeg:0'
张量:
import numpy as np
from PIL import Image
# ...
image = Image.open("example.png")
image_array = np.array(image)[:, :, 0:3] # Select RGB channels only.
prediction = sess.run(softmax_tensor, {'DecodeJpeg:0': image_array})
或许令人混淆,'DecodeJpeg:0'
是输出的的DecodeJpeg
运算,所以通过将该料张量,你能养活原始图像数据.
tf.image.decode_png()
在导入的图形中添加操作.从简单的开关美联储张的名字'DecodeJpeg/contents:0'
,以'DecodePng/contents:0'
不起作用,因为没有'DecodePng'
在运图运算.您可以使用以下input_map
参数将此类节点添加到图形中tf.import_graph_def()
:
png_data = tf.placeholder(tf.string, shape=[])
decoded_png = tf.image.decode_png(png_data, channels=3)
# ...
graph_def = ...
softmax_tensor = tf.import_graph_def(
graph_def,
input_map={'DecodeJpeg:0': decoded_png},
return_elements=['softmax:0'])
sess.run(softmax_tensor, {png_data: ...})