flask 部署_flask部署深度学习模型

训练好的模型如何部署在云端,如何上传图片进行分类预测并返回预测结果,这是一个很令人困惑的问题

在一段时间的摸索之后,利用flask将自己的模型封装为web应用,可以调用api并返回值

完整代码地址(如果有用记得给个star):

lxztju/flask_deployment​github.com
flask 部署_flask部署深度学习模型_第1张图片

这里采用的模型是利用tf.saved_model.builder.SavedModelBuilder保存的模型,保存后的模型含有variable文件夹与一个pb文件,

但是对于torch,pytorch,等其他的语言保存的模型,进行适当的修改之后均可以使用,原理一样,只是模型的读取方式会有所区别。

在server.py文件中,利用函数load_model来读取模型,加载为全局模型,不能传上去一张图片加载一次模型,这样效率很低。

def load_model():
    # load the pre-trained Keras model (this model is saved by tf.saved_model.builder.SavedModelBuilder
    # which contains a variable folder and a pb file.
    
    global model
    model =  tf.saved_model.loader.load(sess, [tag_constants.SERVING], pb_path)

    global graph
    graph = tf.get_default_graph()

利用函数preprocess_img对读取的图片进行预处理

利用函数prediict()作为模型主要的预测部分

@app

在如下这一部分,服务器主机采用0.0.0.0,以便外网可以直接访问,如果采用127.0.0.1就只能在本机上运行,如果是在自己的pc机上运行,采用0.0.0.0所提到的外网,就指的是在同一个路由下的其他的主机,如果想要使用广域网(路由器局域网之外的外网)进行访问,就必须使用内网穿透进行代理

如果是租用云端服务器进行部署,需要进行安全组的配置,开放所需的端口。

在自己的pc机上使用时,直接打开终端运行这个python文件

客户端调用client.py程序,直接打开另一个终端使用如下的代码进行调用,

python client.py --file=image_name

你可能感兴趣的:(flask,部署)