Ограничительные рамки для приложений Keras MobileNetV2 отсутствуют? - PullRequest
0 голосов
/ 13 марта 2020

Я очень новичок в Обнаружении объектов, и мне трудно понять, как получить ограничивающие рамки из приложений 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})

возвращает ограничивающие рамки. Керас упускает это или я схожу с ума ?? Большое спасибо за ваше время!

1 Ответ

0 голосов
/ 13 марта 2020

MobileNetV2 - это не модель обнаружения объекта, это модель классификации, которую можно использовать в качестве магистральной сети для детектора объекта, но базовая сеть не имеет никаких возможностей обнаружения объекта.

Вам потребуется использовать инфраструктуру обнаружения объектов, такую ​​как TensorFlow Object Detection API или Detectron.

...