Flask部署深度学习模型的一个例子

18 篇文章 5 订阅

Flask部署深度学习模型的一个例子

一. Flask

工程一共包括三个文件:
在这里插入图片描述

  1. 用于测试的图片1.jpg
    在这里插入图片描述

  2. index_to_name.py定义了一个字典,键是预测类label,值是对应的class_name,如下图所示:
    在这里插入图片描述

  3. 主要代码文件app.py

from index_to_name import img_class_map
import torchvision.models as models
import torchvision.transforms as transforms
from PIL import Image
from flask import Flask, jsonify, request

app = Flask(__name__)
model = models.resnet50(pretrained=True)  # Trained on 1000 classes from ImageNet
model.eval()  # Turns off autograd and


# Transform input into the form our model expects
def transform_image(infile):
    input_transforms = [transforms.Resize(255),  # We use multiple TorchVision transforms to ready the image
                        transforms.CenterCrop(224),
                        transforms.ToTensor(),
                        transforms.Normalize([0.485, 0.456, 0.406],  # Standard normalization for ImageNet model input
                                             [0.229, 0.224, 0.225])]
    my_transforms = transforms.Compose(input_transforms)
    image = Image.open(infile)  # Open the image file
    timg = my_transforms(image)  # Transform PIL image to appropriately-shaped PyTorch tensor
    timg.unsqueeze_(0)  # PyTorch models expect batched input; create a batch of 1
    return timg


# Get a prediction
def get_prediction(input_tensor):
    outputs = model.forward(input_tensor)  # Get likelihoods for all ImageNet classes
    _, y_hat = outputs.max(1)  # Extract the most likely class
    prediction = y_hat.item()  # Extract the int value from the PyTorch tensor
    return prediction


# Make the prediction human-readable
def render_prediction(prediction_idx):
    class_name = img_class_map[prediction_idx]
    return prediction_idx, class_name


@app.route('/')
def index():
    return 'server is ok'


@app.route('/predict', methods=['POST'])
def predict():
    if request.method == 'POST':
    	# 也可以采用上传文件的方式
    	# file = request.files.get('file')
        file = request.json['file']
        if file is not None:
            input_tensor = transform_image(file)
            prediction_idx = get_prediction(input_tensor)
            class_id, class_name = render_prediction(prediction_idx)
            return jsonify({'class_id': class_id, 'class_name': class_name})


if __name__ == '__main__':
    app.run()

在命令行启动服务:

python app.py

二. postman工具

利用postman用来测试接口。
传入图片的路径,格式为json,如下图所示:
在这里插入图片描述

结束。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用Flask部署深度学习模型,你可以按照以下步骤进行操作: 1. 首先,导入所需的库,包括Flask、numpy和pickle。在代码中,你可以看到这些库的导入语句\[1\]。 2. 创建一个Flask应用程序对象,并加载你的深度学习模型。在代码中,你可以看到这些操作\[1\]。 3. 创建一个路由函数,用于处理用户的请求。在代码中,你可以看到这个函数被命名为`predict()`,它接受POST请求,并从请求中获取特征值。然后,将特征值转换为numpy数组,并使用加载的模型进行预测。最后,将预测结果返回给用户。在代码中,你可以看到这些操作\[1\]。 4. 创建一个HTML模板,用于在Web界面上显示表单和预测结果。在代码中,你可以看到这个模板被命名为`page.html`,它包含一个表单,用户可以输入房子的英尺数,并点击按钮进行预测。预测结果将显示在页面上。在代码中,你可以看到这个HTML模板的结构\[2\]。 5. 运行Flask应用程序,并指定端口号。在代码中,你可以看到这个操作\[1\]。 通过以上步骤,你就可以使用Flask部署深度学习模型,并在Web界面上进行房价预测了。这个例子展示了如何使用Flask和HTML模板来创建一个简单的机器学习模型部署应用。你可以根据自己的需求进行修改和扩展。 #### 引用[.reference_title] - *1* *2* *3* [flask部署深度学习pytorch模型](https://blog.csdn.net/zsyyugong/article/details/130822636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值