Служба Tensorflow никогда не возвращает «поле обнаружения» и «num_detections» для обнаружения объекта - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь заставить Tensorflow Serving работать с предварительно обученными моделями. Я могу настроить среду и заставить ее работать, но проблема в том, что она всегда возвращает «классы» и «баллы». Он никогда не возвращает "поле обнаружения" и "num_detections.

Я перепробовал несколько предварительно обученных моделей (ssd_inception, fast_rcnn_inception и т. Д.), Вот шаги, которым я следовал:

a) Экспортировал модель, чтобы у меня была структура ниже dir: --1 ---- saved_model.pb ---- переменные -------- variables.index -------- variables.data-00000-оф-00001

б) Перенес модель в мой докер-контейнер c) Запустите сервер transerflow г) клиентский скрипт

from grpc.beta import implementations
import tensorflow as tf
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2
import requests

server = '0.0.0.0:8500'
host, port = server.split(':')

image_url = "https://www.publicdomainpictures.net/pictures/60000/nahled/bird-1382034603Euc.jpg"

response = requests.get(image_url)

channel = implementations.insecure_channel(host, int(port))
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)

request = predict_pb2.PredictRequest()
request.model_spec.name = 'inception'
request.model_spec.signature_name = 'predict_images'

request.inputs['images'].CopyFrom(
  tf.contrib.util.make_tensor_proto(response.content, shape = [1]))

result = stub.Predict(request, 10.0)
print(result)

e) Вывод, который я получаю каждый раз:

Image shape: (407, 615, 3)
outputs {
  key: "classes"
  value {
    dtype: DT_STRING
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 5
      }
    }
    string_val: "brambling, Fringilla montifringilla"
    string_val: "house finch, linnet, Carpodacus mexicanus"
    string_val: "goldfinch, Carduelis carduelis"
    string_val: "indigo bunting, indigo finch, indigo bird, Passerina cyanea"
    string_val: "junco, snowbird"
  }
}
outputs {
  key: "scores"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 5
      }
    }
    float_val: 8.91035842896
    float_val: 6.65493869781
    float_val: 5.94185781479
    float_val: 4.53237199783
    float_val: 4.1246099472
  }
}
model_spec {
  name: "inception"
  version {
    value: 1
  }
  signature_name: "predict_images"
}

f) Я использую сигнатуру «предиката», когда запускаю команду «сохраненной_модели_кли шоу»: MetaGraphDef с набором тегов: 'serve' содержит следующие SignatureDefs:

signature_def['predict_images']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['inputs'] tensor_info:
        dtype: DT_UINT8
        shape: (-1, -1, -1, 3)
        name: image_tensor:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['detection_boxes'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 300, 4)
        name: detection_boxes:0
    outputs['detection_classes'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 300)
        name: detection_classes:0
    outputs['detection_scores'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 300)
        name: detection_scores:0
    outputs['num_detections'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1)
        name: num_detections:0
  Method name is: tensorflow/serving/predict

Может кто-нибудь, пожалуйста, помогите мне понять, почему я не получаю «response_boxes» и «num_detections» в моем «результате» вывода. Заранее спасибо.

...