Why is Inceptionv3 Machine Learning model not recognized on my project?
I had the same problem. I solved by add inceptionv3 in bridging header.
How can I make the inception-v3 model pre-trained from Imagenet (classify_image.py) in the Tensorflow tutorial importable as a module?
In the end I managed to use the code from the SO article reffered to in the update in the original question. I modified the code with the additional im = 2*(im/255.0)-1.0
from the answer of said SO question, some line to fix PIL on my computer plus a function to convert classes to human readable labels (found on github), link to that file below. I made it a callable function that takes a list of images as input and outputs a list of labels and predict values. If you'd like to use it, this is what you have to to:
- Install the latest Tensorflow version (1.0 at the moment, which is needed).
git clone https://github.com/tensorflow/models/
where you want the models.- Put this checkpoint file from the SO question I referred to earlier (needs to be extracted, of course) in the directory of your project.
- Put this text file (the human readable labels) in the directory of your project.
Use this code from the SO question with some modifications from my side, put it in a .py file in your project:
import tensorflow as tf
slim = tf.contrib.slim
import PIL as pillow
from PIL import Image
#import Image
from inception_resnet_v2 import *
import numpy as np
with open('imagenet1000_clsid_to_human.txt','r') as inf:
imagenet_classes = eval(inf.read())
def get_human_readable(id):
id = id - 1
label = imagenet_classes[id]
return label
checkpoint_file = './inception_resnet_v2_2016_08_30.ckpt'
#Load the model
sess = tf.Session()
arg_scope = inception_resnet_v2_arg_scope()
input_tensor = tf.placeholder(tf.float32, [None, 299, 299, 3])
with slim.arg_scope(arg_scope):
logits, end_points = inception_resnet_v2(input_tensor, is_training=False)
saver = tf.train.Saver()
saver.restore(sess, checkpoint_file)
def classify_image(sample_images):
classifications = []
for image in sample_images:
im = Image.open(image).resize((299,299))
im = np.array(im)
im = im.reshape(-1,299,299,3)
im = 2*(im/255.0)-1.0
predict_values, logit_values = sess.run([end_points['Predictions'], logits], feed_dict={input_tensor: im})
#print (np.max(predict_values), np.max(logit_values))
#print (np.argmax(predict_values), np.argmax(logit_values))
label = get_human_readable(np.argmax(predict_values))
predict_value = np.max(predict_values)
classifications.append({"label":label, "predict_value":predict_value})
return classifications
Related Topics
Why How to Make Same-Type Requirement in Swift with Generics? Is There Any Way
How to Draw a Line Between Two Points Over an Image in Swift 3
Macos Security Scoped Url Bookmark for Folder
Does Cocoa Connection Binding to Nstoolbaritem Prevent Deinitializing
Perform Segue After UIalertcontroller Is Dismissed
Navigationlink Doesn't Work with New .Searchable Modifier on Swiftui 3.0
How to Keep a User Logged In? Swift
In Swift 3.1, Unsafemutablepointer.Initialize(From:) Is Deprecated
How to Split a String at The Last Occurence of a Sequence
Convert Single File to Swift 3 in Xcode 8
Preferredstatusbarupdateanimation Being Ignored
Swiftui CPU High Usage on Real-Time Foreach View Updating (Macos)