Как снабдить обученную модель Cifar10 собственным изображением и получить метку в качестве вывода?
Я пытаюсь использовать обученную модель, основанную наCifar10 учебник и хотел бы кормить его внешним изображением 32x32 (jpg или png).
Моя цель - получитьметка как выход, Другими словами, я хочу передать в сеть одно изображение JPEG размером 32 x 32, 3 канала без метки в качестве входных данных и иметь процесс выводадай мне tf.argmax(logits, 1)
.
В принципе, я хотел бы иметь возможность использовать обученную модель cifar10 на внешнем изображении и посмотреть, какой класс она будет выплевывать.
Я пытался сделать это на основе учебника Cifar10 и, к сожалению, всегда есть проблемы. особенно с концепцией сеанса и концепцией партии.
Любая помощь с этим с Cifar10 будет принята с благодарностью.
Вот реализованный код с проблемами компиляции:
#!/usr/bin/env python
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from datetime import datetime
import math
import time
import tensorflow.python.platform
from tensorflow.python.platform import gfile
import numpy as np
import tensorflow as tf
import cifar10
import cifar10_input
import os
import faultnet_flags
from PIL import Image
FLAGS = tf.app.flags.FLAGS
def evaluate():
filename_queue = tf.train.string_input_producer(['/home/tensor/.../inputImage.jpg'])
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
input_img = tf.image.decode_jpeg(value)
init_op = tf.initialize_all_variables()
# Problem in here with Graph / session
with tf.Session() as sess:
sess.run(init_op)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range(1):
image = input_img.eval()
print(image.shape)
Image.fromarray(np.asarray(image)).show()
# Problem in here is that I have only one image as input and have no label and would like to have
# it compatible with the Cifar10 network
reshaped_image = tf.cast(image, tf.float32)
height = FLAGS.resized_image_size
width = FLAGS.resized_image_size
resized_image = tf.image.resize_image_with_crop_or_pad(reshaped_image, width, height)
float_image = tf.image.per_image_whitening(resized_image) # reshaped_image
num_preprocess_threads = 1
images = tf.train.batch(
[float_image],
batch_size=128,
num_threads=num_preprocess_threads,
capacity=128)
coord.request_stop()
coord.join(threads)
logits = faultnet.inference(images)
# Calculate predictions.
#top_k_predict_op = tf.argmax(logits, 1)
# print('Current image is: ')
# print(top_k_predict_op[0])
# this does not work since there is a problem with the session
# and the Graph conflicting
my_classification = sess.run(tf.argmax(logits, 1))
print ('Predicted ', my_classification[0], " for your input image.")
def main(argv=None):
evaluate()
if __name__ == '__main__':
tf.app.run() '''