【Flask】YOLO挖掘机目标检测模型Python flask部署(附项目链接)

我是一个甜甜的大橙子🍊,欢迎关注✉️!
我相信技术的力量💪
努力将所学分享给大家😎
你的点赞❤️分享🚀收藏📖就是对我最大的鼓励!

说明

利用YOLO训练好的挖掘机目标检测模型,通过Python flask进行部署,是一个比较直观快捷的模型展示方式。

flask项目结构及效果

通过前端上传所需识别图片,调用训练好的模型进行目标检测,将结果传回前端进行展示。
在这里插入图片描述

主程序代码

主程序代码如下:

from flask import Flask, request, jsonify
import numpy as np
from PaddleDetection.image import base64_to_PIL
from config import Args_config
FLAGS = Args_config(device='GPU')#是否需要更改为GPU
from PaddleDetection.deploy.python.infer import PredictConfig, Detector, infer_image
pred_config = PredictConfig(FLAGS.model_dir)

detector = Detector(
        pred_config,
        FLAGS.model_dir,
        device=FLAGS.device,
        run_mode=FLAGS.run_mode,
        batch_size=FLAGS.batch_size,
        trt_min_shape=FLAGS.trt_min_shape,
        trt_max_shape=FLAGS.trt_max_shape,
        trt_opt_shape=FLAGS.trt_opt_shape,
        trt_calib_mode=FLAGS.trt_calib_mode,
        cpu_threads=FLAGS.cpu_threads,
        enable_mkldnn=FLAGS.enable_mkldnn)
print("***********MODEL LOADED!***********")

app = Flask(__name__)


@app.route('/api/', methods=["POST"])
def main_interface():
    response = request.get_json()
    data_str = response['image']
    point = data_str.find(',')
    base64_str = data_str[point:]  # remove unused part like this: "data:image/jpeg;base64,"
    # convert base64 string to PIL image, to numpy array
    try:
        img_arr = np.array(base64_to_PIL(base64_str))
    except:
        # todo
        img_arr = None
    # do object detection in inference function.
    try:
        results = infer_image(detector, img_arr, FLAGS)
    except:
        # todo
        results = {"results": []}
    print(results)

    return jsonify(results)


@app.after_request
def add_headers(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    return response


if __name__ == '__main__':
    app.run(debug=False, host='127.0.0.1', port=5000)

config.py代码

```# -*- coding: utf-8 -*-
class Args_config:
    def __init__(self, device):
        self.batch_size = 1
        self.cpu_threads = 1
        self.device = device
        self.use_gpu = False if device.upper() == 'CPU' else True
        self.enable_mkldnn = False
        self.image_dir = None
        self.image_file = 'PaddleDetection/test_imgs/test1.jpg'
        self.model_dir = 'PaddleDetection/inference_model/ppyolo_r50vd_dcn_voc'
        self.output_dir = 'PaddleDetection/output'
        self.reid_batch_size = 50
        self.reid_model_dir = None
        self.run_benchmark = False
        self.run_mode = 'fluid'
        self.save_images = False
        self.save_mot_txts = False
        self.threshold = 0.5
        self.trt_calib_mode = False
        self.trt_max_shape = 1280
        self.trt_min_shape = 1
        self.trt_opt_shape = 640
        self.use_dark = True
        # predict from video file or camera video stream
        self.camera_id = -1
        self.video_file = None

项目链接

文件比较大,下载本项目请点击:
基于YOLO的挖掘机目标检测模型+flask模型前端展示
环境配置有疑问可以留言或私信交流。
公众号:一个甜甜的大橙子
知识星球:知识的朋友
欢迎交流~~

  • 15
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
要将Flask与PyTorch目标检测模型部署为Web服务,可以按照以下步骤进行操作: 1. 准备环境:确保已安装Flask、PyTorch和其他必要的依赖库。 2. 构建Web应用:创建Python脚本或包含Flask应用的目录结构。在Flask应用中,定义一个路由(route)用于接收图像文件或URL,并将其传递给目标检测模型。 3. 加载模型和预处理:使用PyTorch加载预训练的目标检测模型,并进行必要的预处理操作,例如图像缩放和归一化。 4. 目标检测推理:将输入图像传递给目标检测模型进行推理。根据模型输出的结果,提取目标框的位置、类别和置信度等信息。 5. 可视化结果:根据推理结果,在原始图像上绘制检测到的目标框和类别,并将结果返回给用户。 6. 部署与测试:在本地环境中运行Flask应用,并通过浏览器或其他HTTP工具发送图像或URL请求进行测试。可以使用前端技术(如HTML、CSS和JavaScript)美化界面和实现用户交互。 7. 部署到服务器:将Flask应用部署到云服务器或虚拟机中,确保服务器具有足够的计算资源和网络带宽来支持多个并发请求。 8. 性能优化:根据实际需求,可以优化目标检测模型的推理速度,例如使用FP16精度、模型剪枝或量化等技术。 9. 安全性考虑:在处理用户上传的图像或URL时,确保实施适当的安全性措施,例如输入验证和图像过滤,以防止恶意程序或内容的传输。 通过以上步骤,就可以成功将PyTorch目标检测模型部署为一个可访问的Web服务。用户可以使用该服务上传图像或提供URL,查看模型对该图像中目标的检测结果。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个甜甜的大橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值