def _predict_using_grpc()

in object-detection/code/inference.py [0:0]


def _predict_using_grpc(context, instance):
    print(instance)
    request = predict_pb2.PredictRequest()
    request.model_spec.name = 'model'
    request.model_spec.signature_name = 'serving_default'

    request.inputs['input_tensor'].CopyFrom(make_tensor_proto(instance))
    options = [
        ('grpc.max_send_message_length', MAX_GRPC_MESSAGE_LENGTH),
        ('grpc.max_receive_message_length', MAX_GRPC_MESSAGE_LENGTH)
    ]
    channel = grpc.insecure_channel(f'0.0.0.0:{context.grpc_port}', options=options)
    stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
    result_future = stub.Predict.future(request, 60)  # 5*2 seconds  
    output_tensor_proto = result_future.result().outputs['detection_boxes']
    
    output_shape = [dim.size for dim in output_tensor_proto.tensor_shape.dim]
    
    
    output_np = np.array(output_tensor_proto.float_val).reshape(output_shape)
    prediction_json = {'detection_boxes': output_np.tolist()}
    return json.dumps(prediction_json)