暂时这样凑合着看,之后有时间再补充文字说明。[微笑]
前言
如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是PaddlePaddle的预测接口,获取到预测结果,返回给客户端。这个只是简单的流程,真实的复杂性远远不止这些,但是我们只需要了解这些,然后去搭建属于我们的图像识别接口。
了解Flask
安装flask很简单,只要一条命令就可以了:
pip install flask
同时我们也使用到flask_cors,所以我们也要安装这个库
pip install flask_cors
创建一个paddle_server.py
文件,然后编写一个简单的程序,了解一些如何使用这个Flask框架,首先导入所需的依赖库:
import os
import uuid
import numpy as np
import paddle.fluid as fluid
from PIL import Image
from flask import Flask, request
from flask_cors import CORS
from werkzeug.utils import secure_filename
编写一个hello_world()
函数,使用@app.route('/')
是指定访问的路径,该函数的返回值是一个字符串Welcome to PaddlePaddle
:
# 根路径,返回一个字符串
@app.route('/')
def hello_world():
return 'Welcome to PaddlePaddle'
然后启动这个服务,如果是在Ubuntu的话,可能是需要在root下执行这个程序。
if __name__ == '__main__':
# 启动服务,并指定端口号
app.run(port=80)
然后浏览器访问http://127.0.0.1
,返回之前写好的字符串:
Welcome to PaddlePaddle
要预测图片,上传图片是首要的,所以我们来学习如何使用Flask来上传图片。
secure_filename
是为了能够正常获取到上传文件的文件名/upload
指定该函数的访问地址methods=['POST']
指定该路径只能使用POST方法访问f = request.files['img']
读取表单名称为img的文件f.save(img_path)
在指定路径保存该文件
# 上传文件
@app.route('/upload', methods=['POST'])
def upload_file():
f = request.files['img']
# 设置保存路径
save_father_path = 'images'
img_path = os.path.join(save_father_path, str(uuid.uuid1()) + secure_filename(f.filename).split('.')[-