使用Streamlit部署YOLOv5目标检测模型

作者:php是最好的2024.03.19 22:24浏览量:14

简介:本文将介绍如何使用Streamlit框架部署YOLOv5目标检测模型,实现Web界面的实时目标检测功能,并提供详细的步骤和代码示例。

引言

YOLOv5(You Only Look Once version 5)是一种流行的实时目标检测模型,因其高效的性能和易用性而广受欢迎。而Streamlit则是一个开源框架,可以快速创建数据应用和Web界面。将YOLOv5与Streamlit结合,可以实现一个实时目标检测的Web应用。本文将详细介绍如何部署这样的应用。

准备工作

在开始之前,请确保你已经安装了以下依赖:

  • Python 3.x
  • PyTorch
  • YOLOv5模型
  • Streamlit

你可以使用pip来安装这些依赖:

  1. pip install torch torchvision
  2. pip install streamlit

下载YOLOv5模型

前往YOLOv5的官方GitHub仓库(https://github.com/ultralytics/yolov5)下载模型文件。这里我们选择一个预训练好的模型,如yolov5s.pt(小型版本),它可以在大多数设备上实现实时检测。

创建Streamlit应用

创建一个新的Python文件,如app.py,然后添加以下代码:

```python
import streamlit as st
import torch
import cv2
from PIL import Image
from matplotlib import pyplot as plt
import ultralytics as ul

加载YOLOv5模型

model = ul.models.attempt_load(‘yolov5s.pt’, map_location=torch.device(‘cpu’))

定义函数来处理图像并返回检测结果

def detect_objects(image_path):
img = cv2.imread(image_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)

  1. results = model(img)
  2. # 绘制检测结果
  3. results.render()
  4. # 将图像转换回BGR格式并保存
  5. img = results.imgs[0][:, :, ::-1]
  6. img = cv2.cvtColor(np.uint8(img), cv2.COLOR_RGB2BGR)
  7. return img

在Streamlit应用中显示上传的图像和检测结果

st.title(‘YOLOv5目标检测’)
st.write(‘上传一张图片进行目标检测:’)
uploaded_file = st.file_uploader(‘选择文件’, type=[‘jpg’, ‘png’, ‘jpeg’])

if uploaded