Day 13 Flask 与 Tensorflow Serving 的沟通

Tensorflow Serving 虽然帮你跑模型,但它并不负责展示网页,或是一些预处理的部分。
(除非把预处理层也写进模型里)
所以在这边我分别使用 docker 提供 Tensorflow Serving API,
并使用 flask 负责中介,也就是接收前端的图片,转换後给 Tensorflow Serving API 分类。

docker run -t --rm -p 8501:8501 -v "D:\vscode\ithelp\mnist:/models/mnist/001234"  -e MODEL_NAME=mnist  tensorflow/serving
import base64
import cv2
import io
from flask import Flask, render_template, request, jsonify
import numpy as np
import requests
import json

import os
app = Flask("mnist", template_folder= os.path.dirname(__file__) + '\\templates')


@app.route("/")
def hello_world():
    return render_template('index.html')

@app.route("/mnist", methods = ['POST'])
def mnist():
    base64tag = "data:image/png;base64"
    data = request.form.get("base64_str").split(",", 1)
    if len(data) == 2:
        decoded = base64.b64decode(data[1])
        np_arr = np.frombuffer(decoded,np.uint8)
        imggray = cv2.imdecode(np_arr, cv2.IMREAD_GRAYSCALE)
        resized = cv2.resize(imggray, (28, 28))
        input_arr = np.array(resized)

        r = requests.post(url='http://localhost:8501/v1/models/mnist:predict', data=json.dumps({"instances":[input_arr.tolist()]}))
        print(r.content)
        return r.content
    return jsonify([False])


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5050)

我花了几个小时为 requests.post 的格式除错,因为 Tensorflow Serving API 一直跟我说格式错误,instances 下的第一个元素应该是字串或是啥的...但 mnist 转换後是数字阵列阿,怎麽可能有字串。

结果是我当初 docker 指定错模型资料夹,指定到其他专案--bert 文字情绪分类模型了。


<<:  Android学习笔记19

>>:  DAY16 - 在 Bitbucket 显示 Jupyter Notebook

MySQL 逻辑及运算子类型资料之基本操作

EQUAL & NOT EQUA 如同字面上意思,筛选出指定相符的资料,可以以=来表示。 而...

DAY2-为什麽需要用VUE???

这边是我在上次面试时有被问到跟自己想搞清楚的几个问题 第一个问题就是什麽是MVVM? 如果VIEW上...

【16】如果把图片从RGB转成HSV和灰阶再拿去训练会怎样

colab连结 普遍我们拿来训练的图片都是RGB,普遍都是机器学习的CNN层找到一些局部特徵来做分类...

Day13 - 画布操作与编制复杂图形3

创建多张画布 如果要有遮色效果或者两个图层不想互相被干预可以考虑增加内部画布去让自己操作比较能够好处...

[Day 2] php变数型态与运算

php中的资料型态(Data Type) String Integer Float Boolean ...