Я пытаюсь заставить 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» в моем «результате» вывода.
Заранее спасибо.