基于yolov5和pyqt5的安全帽检测系统

本文介绍了一个基于yolov5和pyqt5开发的安全帽检测项目,具有用户界面、实时检测、选区检测和后处理功能。关键代码展示了如何使用yolov5进行目标检测,同时提供了项目详细说明、配置教程和源代码链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目展示

项目基于yolov5和pyqt5开发,以安全帽检测为例,亦可作为通用目标检测系统。适用于计算机相关大学生研究生课程设计、毕业设计以及相关比赛的界面展示。本项目GUI部分使用pyqt5制作,包括数据库、多线程、自定义组件等知识,亦可作为学习深度学习和pyqt5时的练手项目。b站视频展示。
功能以及特色如下:

  • 系统带有登陆注册界面
  • 输入数据格式:图片、文件夹、视频以及支持摄像头的实时检测,并自动保存最终检测结果。
  • 支持选区检测功能,通过鼠标左键绘制多边形来确定检测区域,并且最终生成的结果视频中会保存绘制的多边形。
  • 支持后处理过程中交并比(iou)以及置信度(conf)的动态调节。
  • 检测视频和摄像头时,支持暂停、恢复、停止等功能,且停止后自动保存检测结果。
  • 支持检测结果实时动态显示。
  • 提供详细的项目说明以及环境配置教程,即使是深度学习小白也能轻松跑通项目。
  • 项目提供项目系统代码,模型训练代码,模型训练结果以及数据集。

系统登录界面
在这里插入图片描述

二、关键代码展示

# yolov5检测部分代码
import numpy as np
import torch
from models.common import DetectMultiBackend
from utils.general import (non_max_suppression, scale_boxes, xyxy2xywh)
from utils.torch_utils import select_device, time_sync
# 导入letterbox
from utils.augmentations import letterbox

# 参数定义
weights = './yolos.pt'  # 权重文件地址   .pt文件
imgsz = (640, 640)  # 输入图片的大小 默认640(pixels)
conf_thres = 0.9  # object置信度阈值 默认0.25  用在nms中
iou_thres = 0.9  # 做nms的iou阈值 默认0.45   用在nms中
max_det = 1000  # 每张图片最多的目标数量  用在nms中
device = '0'  # 设置代码执行的设备 cuda device, i.e. 0 or 0,1,2,3 or cpu
classes = None  # 在nms中是否是只保留某些特定的类 默认是None 就是所有类只要满足条件都可以保留 --class 0, or --class 0 2 3
agnostic_nms = False  # 进行nms是否也除去不同类别之间的框 默认False
augment = False  # 预测是否也要采用数据增强 TTA 默认False
visualize = False  # 特征图可视化 默认FALSE
half = False  # 是否使用半精度 Float16 推理 可以缩短推理时间 但是默认是False
dnn = False  # 使用OpenCV DNN进行ONNX推理

# 获取设备
device = select_device(device)
def detect_model_load(weights_path):
    # 载入模型
    model = DetectMultiBackend(weights_path, device=device, dnn=dnn)
    return model

@torch.no_grad()
def detect(model,img,conf_thres,iou_thres):
    stride, names, pt, jit, onnx, engine = model.stride, model.names, model.pt, model.jit, model.onnx, model.engine
    # Run inference
    # 开始预测
    model.warmup(imgsz=(1, 3, *imgsz))  # warmup
    dt, seen = [0.0, 0.0, 0.0], 0
    # 对图片进行处理
    im0 = img
    # Padded resize
    im = letterbox(im0, imgsz, stride, auto=pt)[0]
    # Convert
    im = im.transpose((2, 0, 1))[::-1]  # HWC to CHW, BGR to RGB
    im = np.ascontiguousarray(im)
    t1 = time_sync()
    im = torch.from_numpy(im).to(device)
    im = im.half() if half else im.float()  # uint8 to fp16/32
    im /= 255  # 0 - 255 to 0.0 - 1.0
    if len(im.shape) == 3:
        im = im[None]  # expand for batch dim
    t2 = time_sync()
    dt[0] += t2 - t1
    # Inference
    # 预测
    pred = model(im, augment=augment, visualize=visualize)
    t3 = time_sync()
    dt[1] += t3 - t2
    # NMS
    pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)
    dt[2] += time_sync() - t3
    # 用于存放结果
    detections 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值