使用java客户机消费张量流服务初始模型

使用java客户机消费张量流服务初始模型,java,rest,spring-boot,tensorflow-serving,Java,Rest,Spring Boot,Tensorflow Serving,我所做的是,我在Windows上使用Docker部署了tensor flow服务。我在张量流服务中使用初始模型。它正在运行。 现在,使用java,我想将图像从浏览器上传到运行在tensorflow服务中的这个inception模型,作为响应,我应该得到类名 任何示例都会有所帮助。tensorflow服务是一种服务,因此请照此处理。不需要什么特别的东西。由于1.8 tensorflow服务提供REST API,因此只需从java应用程序向REST tensorflow服务发送http请求即可 在最

我所做的是,我在Windows上使用Docker部署了tensor flow服务。我在张量流服务中使用初始模型。它正在运行。 现在,使用java,我想将图像从浏览器上传到运行在tensorflow服务中的这个inception模型,作为响应,我应该得到类名


任何示例都会有所帮助。

tensorflow服务是一种服务,因此请照此处理。不需要什么特别的东西。由于1.8 tensorflow服务提供REST API,因此只需从java应用程序向REST tensorflow服务发送http请求即可

在最近发布的一篇博客文章中,有一个简单的例子介绍了如何为MNIST设置REST tensorflow服务(但可用于任何模型):“tensorflow服务:REST vs gRPC”


剩下要做的就是根据您的模型(初始)签名创建REST请求。

假设Tensorflow服务于
1.11.0-rc1
(它在
1.10.1
中不起作用),请求JSON负载的形式是:

{
  "inputs": {
    "images": [{ "b64": "IMAGE_BASE64" }]
  }
}
其中,
IMAGE\u BASE64
是要预测的图像上的BASE64编码(通常是一个长字符串,此处未显示)。Java客户端库需要为输入映像构建此有效负载

然后,Java客户端将请求提交到以下端点:

POST /v1/models/inception:predict
您可能需要替换服务器上部署的型号名称的
inception


要对
localhost
(映射到Docker服务容器公开的端口,此处为
8501
)上可用的服务器从shell(从Docker上运行的Linux或使用等效的PowerShell命令)进行尝试,请执行以下操作:

request.json
文件包含本文开头的请求json负载。典型的反应是:

{
  "outputs": {
    "classes": [
      "class1",
      "class2",
      ...
    ],
    "scores": [
      [
        0.0321035,
        0.905796,
        ...
      ]
    ]
  }
}


重要提示:上述运行来自旧的Inception v3模型(2015)的部署,在提供
0.4.1
时导出。不过,它在服务
1.11.0-rc1
时工作得非常好。如果您使用最新的导出脚本导出了模型,则可能会有一些小的差异(
1.11.0-rc1
在签名方面似乎没有差异)。因此,这个答案可能不适用于您,但只会让您找到解决问题的方法。

这正是我一直在寻找的答案。我使用C#生成Base64图像字符串。不幸的是,当发布消息“evhttp_read_cb:非法连接状态7”时,服务器断开连接。当我看Keras中的PIL格式时,它的格式与C#中的B64格式确实不同。有什么帮助吗?
{
  "outputs": {
    "classes": [
      "class1",
      "class2",
      ...
    ],
    "scores": [
      [
        0.0321035,
        0.905796,
        ...
      ]
    ]
  }
}