fastapi封装yolov5自训练模型

简介:本次用到的模型为基于yolov5自训练的口罩检测识别模型,测试工具是postman,简单在次做一个知识分享,也是给自己留一份记忆,比较适合刚入门人工智能行业的小白,如有问题请在下方留言,多多探讨,如有错误,请指正 抱拳抱拳抱拳

1、必备资源

        github下载yolov5源码,下载yolov5s.pt模型文件

        使用yolov5s.pt模型或者自己基于yolov5源码训练的模型

        下载postman工具(fastapi进行模型测试时使用)

2、安装必备依赖

        其中unvicron是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器

        pip install fastapi

        pip install unvicron

3、找到yolov5源码中的detect.py文件,然后修改其中的如图所示:

在run方法最后新增代码,返回推理完成后图片的路径

4、新建webinfer.py文件,来搭建fastapi框架进行模型的推理,代码如下:

import io
import cv2
from starlette.responses import StreamingResponse
from fastapi import FastAPI

from detect import run

app = FastAPI()


@app.post('/predict/')
def infer(source: str):
    image_path = run(weights='best.pt', source=source)
    # 读取保存的图片
    saved_image = cv2.imread(image_path)
    _, img_encoded = cv2.imencode('.jpeg', saved_image)

    return StreamingResponse(io.BytesIO(img_encoded.tobytes()), media_type="image/jpeg")


if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, host="127.0.0.1", port=8000)

5、执行webinfer.py文件,得到如图所示即为正常:

 6、打开postman工具,配置参数,根据代码中的信息,填写对应参数(source对应的是测试图片的路径)

 点击发送得到最后结果

 后端将会显示200 ok表示响应成功

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装yolov5 首先需要安装yolov5,可以使用以下命令: ``` !git clone https://github.com/ultralytics/yolov5.git !pip install -r yolov5/requirements.txt ``` 2. 准备数据集 准备好训练和测试数据集,并将其放在一个文件夹中。数据集应该包含图像和对应的标签文件。 3. 训练模型 使用yolov5的训练脚本进行训练。可以使用以下命令: ``` !python yolov5/train.py --img 640 --batch 16 --epochs 50 --data /path/to/data.yaml --cfg yolov5s.yaml --weights yolov5s.pt ``` 其中,`--img`参数表示输入图像的大小,`--batch`参数为批量大小,`--epochs`参数表示训练轮数,`--data`参数为数据集的yaml文件,`--cfg`参数为模型的配置文件,`--weights`参数为预训练模型的权重文件。 4. 测试模型 使用yolov5的测试脚本进行测试。可以使用以下命令: ``` !python yolov5/detect.py --weights /path/to/best.pt --img 640 --conf 0.4 --source /path/to/images/ ``` 其中,`--weights`参数为训练过程中保存的最佳权重文件,`--img`参数表示输入图像的大小,`--conf`参数为置信度阈值,`--source`参数为测试图像的路径。 5. 封装模型 使用torchscript将训练好的模型封装为一个可部署的模型。可以使用以下命令: ``` import torch model = torch.hub.load('ultralytics/yolov5', 'custom', path='/path/to/best.pt') model.eval() traced_model = torch.jit.trace(model, torch.rand(1, 3, 640, 640)) traced_model.save('yolov5.pt') ``` 其中,`path`参数为训练过程中保存的最佳权重文件,`traced_model`为封装后的模型,`save`方法将模型保存为文件。 6. 部署模型 将封装好的模型部署到需要使用的环境中,可以使用以下命令: ``` import torch model = torch.jit.load('yolov5.pt') model.eval() # 运行模型 output = model(input) ``` 其中,`load`方法加载封装好的模型文件,`eval`方法将模型设置为评估模式,`input`为模型输入。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值