flask接⼝让别⼈能访问_想要部署深度学习模型?试试FLASK
构建RESTAPI部署
想必⼤家都训练出过⽐较好玩的模型,但是是不是想要向别⼈提供下接⼝或者⾃⼰试着玩下,这时候就需要涉及到部署模型了,这⾥,我们将使⽤ Flask 部署 PyTorch 模型,并构建⽤于模型推理的REST API。
要注意的是:使⽤ Flask 是为 PyTorch 模型提供服务的最简单⽅法,但不适⽤于具有⾼性能要求的场景。
对⾼性能有要求的场景,可以使⽤ TorchScript,下次再说。
环境安装:
pip install Flask==1.0.3 torch==1.2.0 torchvision-0.3.0
```
假设我们的场景是上传图⽚进⾏返回图⽚的分类结果,那么我们定义下 API 形式,请求和响应类型。
将 API endpoint 将位于 /predict,接受带有包含图像的⽂件参数的 HTTP POST 请求。响应将是包含预测结果的 JSON 响应:
{"class_id": "xx", "class_name": "yy"}
⾸先先复习下,构建⼀个简单的 Web 服务器
```
from flask import Flaskapp = Flask(__name__)@ute('/')def hello(): return 'welcome to towardsdeeplearning !'
flask下载```
运⾏
```
FLASK_ENV=development FLASK_APP=app.py flask run
可以查看 flask ⽂档,熟悉下 post。为了符合上边 api 的定义,我们需要修改下代码:
from flask import Flask, jsonifyapp = Flask(__name__)@ute('/predict', methods=['POST'])def predict(): return jsonify({'class_id':'IMAGE_NET_XXX' `
到此,⾻⼲⽹络已经搭建完毕。
还缺少什么呢?上边这个是返回的json是写死的,但是实际上要根据 post 的图⽚进⾏预测。
图⽚通过 HTTP POST 请求传递过来, 可以通过下⾯这个⽅式获取
@ute('/predict', methods=['POST'])defpredict(): hod =='POST': # we will get the file from the request file = request.files['file']
搭建下预测的代码,这⾥使⽤了 mnasnet ,可以在 torchvision 导⼊预训模型。mnasnet 的输⼊图⽚是 3 通道的 RGB 模型,⼤⼩为
224 x 224。
其实熟悉 pytorch 的同学应该很容易写出前向预测的代码的。
import ansforms as transformsfromPILimport Imagedef transform_image(image_bytes): my_transforms = transforms.Compose([tra predict 的结果是类别的id,为了⽅便显⽰,我们需要进⾏转成⽂字, 就是具体的类别,狗狗啊这样⼈类可读性好的。
import jsonimagenet_class_index = json.load(open('imagenet_class_index.json'))def predict(image_bytes): tensor = transform_image(image_bytes=imag
最后,整理的代码如下
import ioimport ansforms as transformsfrom PIL import Imagefrom flask import Flask, jsonify, requestfrom torchvision import mode
使⽤下⾯的命令运⾏
FLASK_ENV=development FLASK_APP=app.py flask run
使⽤下⾯的测试代码,进⾏测试。
import requestsresp = requests.post("localhost:5000/predict", files={"file":open('dog.jpg','rb')})print( resp.json()# {"class_id": "xx", "class_name": 完。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论