недопустимая нагрузка на сеть при использовании тензорного потока с API gRPC - PullRequest
0 голосов
/ 06 июня 2019

Я настраиваю тензорный поток, обслуживающий докер и обслуживающий модель resnet50.Затем я запускаю клиент для захвата изображения с камеры и запускаю вывод с помощью grpc. С размером изображения 480 * 480 и частотой кадров 30 кадров в секунду, мне интересно, почему он занимает 70 МБ / с скорости сети.

import numpy as np
import cv2
import grpc
import requests
import tensorflow as tf
from tensorflow_serving.apis import prediction_service_pb2_grpc
from tensorflow_serving.apis import predict_pb2
from PIL import Image, ImageDraw, ImageFont
from dataset import *
import configparser
cf = configparser.ConfigParser()
cf.read("$HOME/.Wingo/config.yml") 
secs = cf.sections()
IMG_SIZE1=480
IMG_SIZE2=480
grpc_host=cf.get("Client", "grpc_host")
tf.app.flags.DEFINE_string('server', grpc_host,
                           'PredictionService host:port')
FLAGS = tf.app.flags.FLAGS
def test_show(send=None):
    video = cv2.VideoCapture(0)
    success, show_img = video.read()
    channel = grpc.insecure_channel(FLAGS.server)
    stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
    request = predict_pb2.PredictRequest()
    request.model_spec.name = '1'
    request.model_spec.signature_name = 'predict'
    while(True):
        success, frame = video.read()
        show_img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        show_img = Image.fromarray(show_img)
        if success:
            data = get_sigle_data(frame, False)
            X=np.array(data)
            print((tf.make_tensor_proto(X, shape=[1,IMG_SIZE1,IMG_SIZE2,3])))
            request.inputs['inputs'].CopyFrom(
                tf.make_tensor_proto(X, shape=[1,IMG_SIZE1,IMG_SIZE2,3]))
            result = stub.Predict(request, 10.0)
            y=result.outputs['output'].float_val
            show_img = cv2.cvtColor(np.array(show_img), cv2.COLOR_RGB2BGR)
            cv2.imshow('test', show_img)
            cv2.waitKey(1)
        else:
            print("camera is not open!!!")
test_show()

1 Ответ

0 голосов
/ 12 июня 2019

Правильно, если видеопоток несжатый. Предположим, вы используете оттенки серого для ваших изображений:

480*480*30/1024/1024 = 6.59 MB/s = 52.73 Mbps

Кроме того, единица пропускной способности сети обычно составляет Mbps вместо MB/s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...