Я очень новичок в Обнаружении объектов, и мне трудно понять, как получить ограничивающие рамки из приложений Keras на MobileNetV2: https://keras.io/applications/#mobilenetv2
Модель работает отлично подходит для прогнозирования содержимого изображения, однако прогноз модели не включает ограничивающие рамки. Я использую предоставленный Keras пример ResNet50, но изменил его на MobileNetV2, так как мне нужна облегченная архитектура SSD.
from keras.applications.mobilenet_v2 import MobileNetV2
from keras.preprocessing import image
from keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
import numpy as np
model = MobileNetV2(weights='imagenet')
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
# decode the results into a list of tuples (class, description, probability)
# (one such list for each sample in the batch)
print('Predicted:', decode_predictions(preds, top=3)[0])
# Predicted: [(u'n02504013', u'Indian_elephant', 0.82658225), (u'n01871265', u'tusker', 0.1122357), (u'n02504458', u'African_elephant', 0.061040461)]
Я использовал низкоуровневую реализацию тензорного потока MobileNetV2 и там
# Load the Tensorflow model into memory.
detection_graph = tf.Graph()
with detection_graph.as_default():
od_graph_def = tf.GraphDef()
with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
serialized_graph = fid.read()
od_graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(od_graph_def, name='')
sess = tf.Session(graph=detection_graph)
(boxes, scores, classes, num) = sess.run(
[detection_boxes, detection_scores, detection_classes, num_detections],
feed_dict={image_tensor: frame_expanded})
возвращает ограничивающие рамки. Керас упускает это или я схожу с ума ?? Большое спасибо за ваше время!