In this tutorial we will see how to use MobileNetV2
pre trained model for image classification. MobileNetV2
is
pre-trained on the ImageNet dataset. MobileNetV2 model is available
with tf.keras
api.
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
file = tf.keras.utils.get_file(
"mountains.jpg",
"https://storage.googleapis.com/gcptutorials.com/examples/mountains.jpg")
img = tf.keras.preprocessing.image.load_img(file, target_size=[224, 224]
)
plt.imshow(img)
plt.axis('off')
Example Output:
tf.keras.preprocessing.image.img_to_array
x = tf.keras.preprocessing.image.img_to_array(img)
print(x.shape)
x = tf.keras.applications.mobilenet.preprocess_input(
x[tf.newaxis,...])
print(x.shape)
ImagenetLabels
,
MobileNetV2
was trained on ImageNet Dataset
labels_path = tf.keras.utils.get_file(
'ImageNetLabels.txt',
'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
labels = np.array(open(labels_path).read().splitlines())
print(len(labels))
model = tf.keras.applications.MobileNetV2()
predictions = model(x)
print(predictions.shape)
top_5_classes_index = np.argsort(predictions)[0 , ::-1][:5]+1
print(top_5_classes_index)
top_5_classes = labels[top_5_classes_index]
print(top_5_classes)
Example Output:
(1, 1000)
[971 981 426 980 916]
['alp' 'volcano' 'barn' 'valley' 'yurt']
MobileNetV2
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
file = tf.keras.utils.get_file(
"mountains.jpg",
"https://storage.googleapis.com/gcptutorials.com/examples/mountains.jpg")
img = tf.keras.preprocessing.image.load_img(file, target_size=[224, 224]
)
plt.imshow(img)
plt.axis('off')
x = tf.keras.preprocessing.image.img_to_array(img)
print(x.shape)
x = tf.keras.applications.mobilenet.preprocess_input(
x[tf.newaxis,...])
print(x.shape)
labels_path = tf.keras.utils.get_file(
'ImageNetLabels.txt',
'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
labels = np.array(open(labels_path).read().splitlines())
print(len(labels))
model = tf.keras.applications.MobileNetV2()
predictions = model(x)
print(predictions.shape)
top_5_classes_index = np.argsort(predictions)[0 , ::-1][:5]+1
print(top_5_classes_index)
top_5_classes = labels[top_5_classes_index]
print(top_5_classes)
Category: TensorFlow