flask 部署算法模型

瞭解一點web知識,看一下flask教程就能使用flask寫簡單的demo. 在flask中加個載入模型函數,隨服務啓動將模型載入內存,將預測函數放進接收數據函數中,拿到數據即進行預測html

#encoding:utf-8
from keras.applications import ResNet50
from PIL import Image
import numpy as np
import flask
import io
import tensorflow as tf

app = flask.Flask(__name__)
model = None

#載入模型
def load_model():
	global model
	model = ResNet50(weights="imagenet")
	global graph
	graph = tf.get_default_graph() #不加這個會報錯

#預處理數據
def prepare_image(image):

	return image

#路由 預測
@app.route("/predict", methods=["POST"])
def predict():
	#獲取http傳來數據
	if flask.request.method == "POST":
		if flask.request.files.get("image"):
			#上傳圖片數據,也可上傳文本,或者上傳文件url,在預處理時讀取
			image = flask.request.files["image"].read()
			image = Image.open(io.BytesIO(image))

	#數據預處理
	image = prepare_image(image)
	#模型預測
	with graph.as_default(): #不加這個會報錯
		preds = model.predict(image)
	return preds

if __name__ == "__main__":
	load_model()
	# app.run(host, port, debug, options)
	# 默認值:host="127.0.0.1", port=5000, debug=False
	app.run(host="0.0.0.0", port=5500, debug=False, use_reloader=False)

常見requset請求方式:web

import requests
#發送get請求
url = 'http://127.0.0.1:5000/predict'
data = {'stu_name':'小黑'} #請求數據
req = requests.get(url,params=data) #發送get請求
print(req.json()) #字典 單引號'
print(req.text) #string 雙引號"

#發送post請求
url = 'http:///api/user/login'
data = {
	'username':'niuhanyang',
	'passwd':'aA123456'
} #請求數據
req = requests.post(url,data)#發送post請求
print(req.json())

#入參是json類型
url = 'http:///api/user/add_stu'
data =  {
	"name":"yyy",
	"grade":"9年級",
  }
req = requests.post(url,json=data)
print(req.json())

#添加cookie
url = 'http:///api/user/'
data = {'stu_id':123,'gold':1000}
cookie = {'hc123':'337ca4cc825302'}
req = requests.post(url,data,cookies=cookie)
print(req.json())
#添加header
url = 'http:///api/all_stu'
header = {
	'Referer':'http://api.nnzhp.cn/'
}
req = requests.get(url,headers = header)
print(req.json())

#上傳文件
url = 'http:///api/file/file_upload'
data = {
  #  'file':open('baidu.html',encoding='utf-8')  #圖片與excel是rb
	'file':open('.//1.jpg','rb')
}
req = requests.post(url,files = data,)
print(req.json())

#下載圖片
url = 'http://127.0.0.1:5000/soup.jpg'
req = requests.get(url)
print(req.content) #返回的二進制
fw = open('m.mp3','wb')#二進制寫模式wb
fw.write(req.content)

請求這部分搬運於:https://www.cnblogs.com/ymany/p/9040657.htmljson

相關文章
相關標籤/搜索