当前位置: 首页 > web >正文

YOLOv5-入门篇笔记

1.创建环境

conda create -n yolvo5 python=3.8

去pytorch.org下载1.8.2的版本。

pip --default-timeout=1688 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111

github上下载yolov5的zip

pip --default-timeout=1688 install -r requirements.txt

通过网盘分享的文件:yolov5
链接: https://pan.baidu.com/s/1oigw2mPo9uVoX4hWXmiGWA?pwd=npue 提取码: npue

安装jupyter

pip install pywinpty==2.0.5
pip --default-timeout=1688 install jupyterlab

安装标注工具

pip install labelimg
pip install pyqt5 sip

2.模型检测

weights

训练好的模型文件

python detect.py --weights yolov5x.pt

source

检测的目标,可以是单张图片,文件夹,屏幕或者摄像头等。

conf-thres

iou-thres

基于torch.hub的检测方法

import torchmodel = torch.hub.load("./", "yolov5s", source = "local")img = "./data/images/zidane.jpg"results = model(img)results.show()

3.数据集构建

用labelimg

存储格式改成yolov

a上一张图

d下一张图

w创建框

4.模型训练

创建

分别存放没标注的和标注的文件

把labels里的classes移到和images、labels同一目录

看detect.py文件中的weight和data参数

相关文件的路径

把.yaml中的内容修改,训练要把train.py的

修改成修改的.yaml的路径。

修改虚拟内存

设置   系统  系统信息 高级系统设置

更改所在盘的虚拟内存就行了。

训练好后,可以用

tensorboard --logdir runs

看参数

没数据的话,安装一下这个

pip install protobuf==3.20.0

检测视频

python detect.py --weights runs/train/exp11/weights/best.pt --source BVN.mp4 --view-img

5.Pyside6可视化界面

pip install Pyside6

在可视化界面弄好前端后,在vscode中下载pyside6插件后。将ui文件转换成py

import cv2
import sys
import torch
from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialog
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtCore import QTimerfrom main_window_ui import Ui_MainWindowdef convert2QImage(img):height, width, channel = img.shapereturn QImage(img, width, height, width * channel, QImage.Format_RGB888)class MainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super(MainWindow, self).__init__()self.model = torch.hub.load('./',  # 指向本地克隆的仓库'custom', path='runs/train/exp11/weights/best.pt',source='local')self.setupUi(self)self.timer = QTimer()self.timer.setInterval(100)self.video = Noneself.bind_slots()def image_pred(self, file_path):results = self.model(file_path)image = results.render()[0]return convert2QImage(image)def open_image(self):print("点击了检测文件")self.timer.stop()file_path, _ = QFileDialog.getOpenFileName(self, dir = "./demo_images/images/train", filter = "*.jpg;*.png;*.jpeg")if file_path:pixmap = QPixmap(file_path)qimage = self.image_pred(file_path)self.input.setPixmap(pixmap)self.output.setPixmap(QPixmap.fromImage(qimage))def video_pred(self):ret, frame = self.video.read()if not ret:self.timer.stop()else:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)self.input.setPixmap(QPixmap.fromImage(convert2QImage(frame)))results = self.model(frame)image = results.render()[0]self.output.setPixmap(QPixmap.fromImage(convert2QImage(image)))def open_video(self):print("点击了检测文件")file_path, _ = QFileDialog.getOpenFileName(self, dir = "./", filter = "*.mp4")if file_path:self.video = cv2.VideoCapture(file_path)self.timer.start()   def bind_slots(self):self.detpic.clicked.connect(self.open_image)self.detvid.clicked.connect(self.open_video)self.timer.timeout.connect(self.video_pred)if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()app.exec()

6.Gradio搭建Web GUI

pip install gradio
import torch
import gradio as grmodel = torch.hub.load('./', 'custom', path='runs/train/exp11/weights/best.pt',source='local')title = "基于Gradio的YOLOv5演示项目"desc = "这是一个基于Gradio的YOLOv5演示项目,非常简洁,非常方便!"base_conf, base_iou = 0.25, 0.45def det_image(img, conf, iou):model.conf = confmodel.iou = ioureturn model(img).render()[0]
gr.Interface(inputs = ["image", gr.Slider(minimum = 0, maximum = 1, value = base_conf, interactive=True), gr.Slider(minimum = 0, maximum = 1, value = base_iou, interactive=True)],outputs = ["image"],fn = det_image,title = title,description = desc,live = True,examples = [["./demo_images/images/train/demo_images30.jpg", base_conf, base_iou], ["./demo_images/images/train/demo_images120.jpg", base_conf, base_iou]]).launch()

http://www.xdnf.cn/news/10459.html

相关文章:

  • 算法打开13天
  • 焦虑而烦躁的上午
  • HTTPS
  • VeriFree:无需Verifier的通用RL框架
  • 【GPT入门】第40课 vllm与ollama特性对比,与模型部署
  • wsl安装linux
  • 测试总结(二)
  • Python 验证码识别(使用pytesseract库)
  • JVM——JVM运行时数据区的内部机制是怎样的?
  • unix/linux source 命令,在当前的 Shell 会话中读取并执行指定文件中的命令
  • 【AI学习】检索增强生成(Retrieval Augmented Generation,RAG)
  • Vue拖拽组件:vue-draggable-plus
  • 神经网络与Transformer详解
  • Ansible 剧本精粹 - 编写你的第一个 Playbook
  • Spring Boot 4.0实战:构建高并发电商系统
  • 通过内核寄存器排除HardFault
  • uni-app学习笔记十七-css和scss的使用
  • 振动力学:无阻尼单自由度系统
  • 【数据结构】顺序表和链表详解(上)
  • 图文详解Java并发面试题
  • 基于Canvas实现抽奖转盘
  • 打打基础 | 从翻转链表到寄存器、汇编与内存
  • 智慧新基建数字孪生,绘就桥梁运维新画卷
  • 【STM32F407 PWM配置和应用指南 】
  • [yolov11改进系列]基于yolov11引入上下文锚点注意力CAA的python源码+训练源码
  • Spring Boot中的事件与JMS消息集成
  • Windows搭建Swift语言编译环境?如何构建ObjC语言编译环境?Swift如何引入ObjC框架?Interface Builder的历史?
  • 【论文复现】水下单光子激光雷达设计 Sequential Multimodal Underwater Single
  • PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)
  • Vert.x学习笔记-EventLoop与Context的关系