yolov5项目部署+微信小程序前端展示的全过程

下面我将详细讲解 "yolov5 项目部署+微信小程序前端展示的全过程",该过程主要包括以下几个步骤:

  1. 数据准备
  2. 模型训练
  3. 模型转换
  4. 模型部署
  5. 小程序展示

下面我将逐一介绍每个步骤所需的具体操作。

数据准备

首先需要准备训练数据,yolov5 支持的数据格式有图片和标签文件,其中标签文件可以是 .txt.json 格式。我们需要至少准备两个文件夹,一个是存放图片,一个是存放标签文件。

示例:

/images_folder
├── 1.jpg
├── 2.jpg
├── ...
├── 100.jpg
/labels_folder
├── 1.txt
├── 2.txt
├── ...
├── 100.txt

其中标签文件的格式为:

<class_index> <x_center> <y_center> <width> <height>

各字段含义:

  • class_index: 物体类别索引,从0开始。注意:要与训练时配置的类别一一对应。
  • x_center,y_center: 中心点坐标,相对于图片的宽高。
  • width,height:框的宽高,基于图片的宽高比例。

模型训练

接下来要进行模型训练,这里我们选择使用 yolov5 中的 train.py 文件训练模型。训练命令如下所示:

python train.py --data data.yaml --cfg ./models/yolov5s.yaml --weights '' --batch-size 4 --epochs 100

其中,

  • data.yaml: 数据的配置文件路径。
  • yolov5s.yaml: 模型配置文件路径。
  • weights: 预训练模型的路径。如果没有则置空。
  • batch-size: 训练批大小。
  • epochs: 训练的轮数。

模型训练完成后,会得到一个 .pt 文件,可以用于后续转换和部署。

模型转换

为了在前端部署时使用,我们需要将训练好的 .pt 模型转化为 .ptl 格式的模型,并且使用 export.py 文件转换成 onnx 模型。转换命令如下所示:

python export.py --weights xxx.pt --img-size 640 --batch-size 1 --dynamic

其中,

  • --weights:指定训练好的模型权重路径。
  • --img-size:指定模型收缩后的图像分辨率。
  • --batch-size:推理时的批次大小。
  • --dynamic:指定是否使用动态图计算图。

转换完成后,会得到一个 yolov5s.onnx 文件,可以用于后续的部署。

模型部署

在部署前,需要先搭建好模型服务环境,一般选择使用 torchserve 进行模型服务。这里我将使用 fastapi + torchserve 的方式进行部署。

首先,需要在 torchserve 上注册模型,并设定输入和输出格式。可以使用以下命令进行注册:

curl -X POST http://localhost:8081/models -H 'Content-Type: application/json' -d '{"model_name":"yolov5s", "url":"yolov5s.mar", "batch_size": 1, "max_batch_delay": 1000, "initial_workers": 1, "synchronous": true}'

其中,

  • model_name :模型名称。
  • url :模型文件名。
  • synchronous :是否使用同步模式,即批量大小为1。

然后将模型 .onnx 文件打包为 .mar 文件,可以使用以下命令:

torch-model-archiver --model-name yolov5s --version 1.0 --model-file yolov5s.onnx --handler image_classifier --extra-files ./models/yolov5s.yaml,./models/data.yaml

其中,

  • model_file :转换的模型文件路径。
  • handler :模型的处理方式,此处使用的是 image_classifier
  • extra-files :额外需要的文件。

最后将生成的 .mar 文件上传到 torchserve 上,也可以通过命令行进行上传:

curl -v -X POST "http://localhost:8081/models/yolov5s/1.0?initialWorkers=1&synchronous=true" -T yolov5s.mar

模型部署完成后,可以通过访问 http://localhost:8080/models 查看已经部署的模型。

小程序展示

最后,使用微信小程序作为前端,进行推理结果展示。这里需要将前面步骤中的文件和服务部署到服务器上,并且与小程序进行交互。

示例中使用的是 Python FastAPI 框架作为服务器,下面代码给出了一个示例:

from fastapi import FastAPI, File, UploadFile
from typing import List
import requests
import json

app = FastAPI()
url = 'http://localhost:8080/predictions/yolov5s'
headers = {'Content-Type': 'application/json'}
labels = ["person", "car", "bike", "trunk"]

@app.post("/predict")
async def predict(upload_file: UploadFile):
    with open(upload_file.filename, "wb") as buffer:
        buffer.write(await upload_file.read())
    files = {'file': (upload_file.filename, open(upload_file.filename, 'rb'), 'image/jpeg')}
    response = requests.post(url, files=files)
    results = response.json()[0]['predictions']
    ret = []
    for result in results:
        x1, y1, x2, y2 = result['bbox']
        x_center = (x1 + x2) / 2
        y_center = (y1 + y2) / 2
        width = x2 - x1
        height = y2 - y1
        category = labels[result['class_index']]
        ret.append({
            'x_center': x_center,
            'y_center': y_center,
            'width': width,
            'height': height,
            'category': category
        })
    return {'status': 'ok', 'predict_result': ret}

其中,

  • upload_file :上传的文件,可以通过 Postman 进行测试。
  • headers :把图片转成指定格式,并发送给 TorchServe。

具体实现可以参考官方文档和示例代码。这样,我们就可以在小程序上访问该接口,进行推理并展示结果。

以上就是 yolov5 项目部署+微信小程序前端展示的全过程,其中包含了数据准备、模型训练、模型转换、模型部署和小程序展示等多个步骤。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:yolov5项目部署+微信小程序前端展示的全过程 - Python技术站

(1)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • Python Pandas创建Dataframe数据框的六种方法汇总

    下面我会详细讲解如何利用Python Pandas库创建Dataframe数据框的六种方法,供参考和学习。 前言 Pandas是Python数据处理中最常用的库之一,而Dataframe是Pandas最常用的数据结构之一。Dataframe可以看作二维数据,每个列可以是不同的数据类型等等,非常方便。而本文主要讲解如何使用Python Pandas库来创建Da…

    python 2023年5月14日
    00
  • Python写脚本常用模块OS基础用法详解

    Python写脚本常用模块OS基础用法详解 随着Python在日常工作中的应用越来越广泛,越来越多的人开始使用Python来编写脚本进行自动化操作。而在编写Python脚本的过程中,常常会用到OS模块。本篇攻略将详细讲解Python中OS模块的基础用法。 OS模块的基本介绍 Python中的OS模块是一个用来访问操作系统服务的模块,它提供了许多访问操作系统底…

    python 2023年5月31日
    00
  • 浅析Python3 pip换源问题

    浅析Python3 pip换源问题 什么是pip pip是Python语言的一个包管理工具,它可以方便地在python环境下安装、卸载和管理各种第三方库和应用程序。 pip换源问题 默认情况下,pip会从官方源下载第三方库和应用程序。但是,由于网络限制或是国内访问官方源速度慢,可能需要更换pip源。 pip换源的方法 方法1:通过命令行参数的方式更换源 运行…

    python 2023年5月14日
    00
  • python tkinter实现连连看游戏

    “Python tkinter实现连连看游戏” 的攻略共分为以下几部分: 实现窗口和界面设计 加载游戏图片 写连连看算法实现图片消除 添加游戏音效和时间限制 构建游戏主循环以及检测游戏结束 接下来将针对每一步内容进行详细讲解。 一、实现窗口和界面设计首先,我们需要导入 tkinter 模块,并创建一个窗口,设置窗口的标题,大小和背景颜色等。 import t…

    python 2023年6月13日
    00
  • Python 50行爬虫抓取并处理图灵书目过程详解

    这篇文章是介绍如何使用 Python 编写一个简单的爬虫程序,抓取并处理图灵书目的过程。下面是具体的步骤: 1. 分析目标网站 首先,我们需要分析目标网站的结构和数据。图灵社区提供了一个书目页面,我们可以从这个页面获取图灵社区上所有的书籍信息。这个页面的地址是 https://www.ituring.com.cn/book?tab=book&sort…

    python 2023年5月14日
    00
  • 利用Python爬虫爬取金融期货数据的案例分析

    利用Python爬虫爬取金融期货数据的案例分析 本文将介绍如何使用Python爬虫爬取金融期货数据的完整攻略,包括数据获取、数据清洗和数据分析。本文将使用两个示例来演示如何使用Python爬虫爬取金融期货数据。 数据获取 在数据获取阶段,我们需要确定数据来源和获取数据的方法。在本文中,我们将使用Python爬虫从东方财富网获取金融期货数据。 以下是一个示例代…

    python 2023年5月15日
    00
  • Python获取excel内容及相关操作代码实例

    下面是关于如何使用Python获取Excel文件内容以及相关操作的完整实例教程。 准备工作 在代码实现之前,需要先安装必要的库。在本文中,我们使用pandas和openpyxl库用于Excel文件的读取和写入。可以通过以下命令进行安装: pip install pandas openpyxl 接下来,我们将演示如何使用Python读取和写入Excel文件。 …

    python 2023年5月13日
    00
  • Python实现自动清理电脑垃圾文件详解

    下面是一份实现自动清理电脑垃圾文件的Python脚本的完整例子。该脚本可以自动清理指定目录下的垃圾文件,例如临时文件、回收站文件等等。本文将针对该例子进行详细的讲解。 1. 问题概述 在我们经过一段时间的电脑操作后,通常都会留下不少的垃圾文件,如缓存文件、临时文件、回收站文件等等。这些文件不仅占用了硬盘空间,而且会影响电脑的运行速度。通常情况下,我们需要手动…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部