第十期 使用 Keras 和 Flask 构建一个在线 API 《显卡就是开发板》
来源:互联网 发布:高腰西裤女淘宝 编辑:程序博客网 时间:2024/05/24 08:32
用Jupyter notebook 来进行演示在生产环境中并不是很实用,在应用环境中如果想要预测一个场景通常需要返回指定格式的文本形式的信息,我写了一个小例子,使用flask架构创建了一个简陋的API,客户端通过curl工具上传图片,并返回指定格式的json流。
首先需要安装flask
pip install flask
将下面的代码保存为 keras_api.py 然后在实验环境下输入 python keras_api.py 就可以运行这个API,默认监听6006端口.
对应github地址: https://github.com/aggresss/GPUDemo/blob/master/keras_api.py
from flask import Flask,request,redirect,url_forfrom werkzeug.utils import secure_filenamefrom keras.applications.vgg16 import VGG16from keras.preprocessing import imagefrom keras.applications.vgg16 import preprocess_input, decode_predictionsimport numpy as npimport os, jsonapp = Flask(__name__)@app.route('/upload', methods=['POST', 'GET'])def upload(): if request.method == 'POST': f = request.files['file'] basepath = os.path.dirname(__file__) upload_path = os.path.join(basepath, 'demo.jpg') f.save(upload_path) img = image.load_img(upload_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) model = VGG16(weights='imagenet') features = model.predict(x) result_list = list(decode_predictions(features, top=1)[0][0]) result_trans = [ str(x) for x in result_list ] result_json = json.dumps(result_trans) return result_json + '\n' return 'Error Format'if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=6006)
当API服务运行后,使用下面的命令可以验证API的输出
curl -m 300 -F "file=@demo.jpg;type=image/jpeg" http://127.0.0.1:6006/upload
其中 -m 300 表示超时时间为300秒,如果运算速度慢可以延长超时时间,demo.jpg 为上传图片的路径和文件名.
正常情况下可以返回类似 [“n02114367”, “timber_wolf”, “0.737966”] 格式的 json 数据流.
阅读全文
1 0
- 第十期 使用 Keras 和 Flask 构建一个在线 API 《显卡就是开发板》
- 第七期 使用 Keras 演示神经网络 《显卡就是开发板》
- 第八期 使用 Keras 训练神经网络 《显卡就是开发板》
- 第九期 使用 Keras 在游戏中实现自动驾驶 《显卡就是开发板》
- 第四期 Jupyter 和 OpenCV 实践《显卡就是开发板》
- 第一期 实验环境搭建 《显卡就是开发板》
- 第二期 Tensorflow 基准测试 《显卡就是开发板》
- 第十期 路由器调试之HelloWorld 《路由器就是开发板》
- 目录 《显卡就是开发板》
- 第七期 使用Qemu+Buildroot+Eclipse打造一个优雅的开发环境 《虚拟机就是开发板》
- 第三期 利用已经训练的神经网络进行图像识别 《显卡就是开发板》
- 第五期 基于 Inception-V3 重新训练网络 《显卡就是开发板》
- 第六期 基于 Inception-V3 训练网络识别面部特征 《显卡就是开发板》
- 使用flask 构建基本的 restful api
- 第十期 基于模拟器的Helloworld Framework接口 《手机就是开发板》
- 使用 Flask 和 AngularJS 构建博客 - 2
- 第十章 构建一个在线学习平台(上)
- 第十章 构建一个在线学习平台(下)
- 教程篇(5.4) NSE4 12. 路由 ❀ 飞塔 (Fortinet) 网络安全专家
- 迭代器赋初值
- 关于maven依赖容易忘记的小细节整理
- Python: 'gbk' codec can't encode character '\u30fb' in position 0: illegal multibyte sequence
- JavaScript数组最新练习
- 第十期 使用 Keras 和 Flask 构建一个在线 API 《显卡就是开发板》
- 将idea中的本地项目上传到码云
- android fragment动态显示隐藏
- Spark配置log4j日志输出
- leetcode: 90. Subsets II
- 如何修改intellij idea的Maven全局设置
- Android的设计模式-建造者模式
- ES terms 支持量的修改
- win10下面eclipse的Ctrl+shift+F的快捷键