目标检测 YOLOv5-7.0 详细调试自制数据集实战

目标检测 YOLOv5-7.0 详细调试&自制数据集实战

  • 一、项目介绍及环境配置
    • (一)项目解读
    • (二)版本选择
    • (三)环境配置
  • 二、如何利用YOLOv5进行预测(detect.py)
    • (一)main函数中参数的解读
    • (二)小技巧
      • (1)网络模型 下载的太慢/直接下载失败 ,怎么办?
      • (2)图例
  • 三、如何训练YOLOv5神经网络(train.py)
    • (一)本地上训练
      • (1)main函数中参数的解读
      • (2)可选参数
      • (3)训练生成文件的解读
    • (二)免费云端GPU上训练
    • (三)运行时的常见报错&解决方法
  • 四、如何训练与制作自己的数据集
    • (一)常见的几种情况
    • (二)实操演练
      • (1)数据集的获取
      • (2)人工/半人工标注
      • (3)创建标准化目录
      • (4)创建 - - data 数据集参数
      • (5)训练模型检验
    • (三)注意事项

一、项目介绍及环境配置

(一)项目解读

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)版本选择

  • v1.0版本写的代码最为简单核心,后面越来越复杂,这是一个项目从想象到成熟必经的过程。高版本的看不懂,可优先去读低版本的

在这里插入图片描述

在这里插入图片描述

  • .pt(.pth)文件:Pytorch中常用的文件扩展名,用于保存和加载模型的权重或整个模型的状态

(三)环境配置

  • 解压完压缩包,在Pycharm中打开项目后,进行Python解释器的配置

:最好一个项目一个环境!!!不然之后很容易依赖冲突!!!别问我是怎么知道的 🤕

在这里插入图片描述

  • 安装项目中需要用到的库
    在这里插入图片描述
  1. 如果作者提供requirments.txt文件
    可利用PyCharm自带的智能提示进行安装,或者利用pip install -r requirments.txt 指令输入终端进行安装
  2. 如果作者没有提供requirments.txt文件
    根据运行报错信息,百度,手动安装缺少的库

二、如何利用YOLOv5进行预测(detect.py)

(一)main函数中参数的解读

在这里插入图片描述

(二)小技巧

(1)网络模型 下载的太慢/直接下载失败 ,怎么办?

A:可以先在GitHub上下下来之后,再复制到当前文件夹(根目录)底下

Step1:Ctrl+C 暂停
在这里插入图片描述

Step2:找到项目的Release
在这里插入图片描述

Step3:往下翻,找到想要的模型,下载下来
在这里插入图片描述

Step4:粘贴到文件夹中
在这里插入图片描述
在这里插入图片描述

(2)图例

  1. resize的原理
    在这里插入图片描述
  2. –iou-thres
    iou达到某个阈值后,从下面多个框中选一个最适合的
    在这里插入图片描述

在这里插入图片描述
3. 参数解析
在这里插入图片描述
4. 设置固定参数配置的位置
在这里插入图片描述


三、如何训练YOLOv5神经网络(train.py)

(一)本地上训练

(1)main函数中参数的解读

在这里插入图片描述

(2)可选参数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(3)训练生成文件的解读

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(二)免费云端GPU上训练

(1)进入云端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)上传我们的项目
在这里插入图片描述

在这里插入图片描述
(3)解压缩
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(三)运行时的常见报错&解决方法

(1)attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

这是因为安装了新版本的 Pillow10 删除了 getsize 功能

  • 最容易想到的方法就是降级,降级到 Pillow 9.5 的确可以解决该问题,但有可能会造成其他库的依赖冲突。
  • 我们这里讲另外一个方法:
    因为 getsize 方法将在 Pillow10 中被 getbbox 或 getlength 代替
    所以我们可以在 utils / plots.py 文件 的第 91 行,找到 w, h = self.font.getsize(label) ,把他替换成 x, y, w, h = self.font.getbbox(label) ,就可以解决问题。

(2)requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘drive.google.com’, port=443): Max retries exceeded with url: /uc?id=1Kkx2zW89jq_NETu4u42CFZTMVD5Hwm6e (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x000001A5052AE640>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。’))

这个问题的原因是因为 DeepSORT 里面需要一些权重文件,没有权重文件的话会访问 Google Drive 进行下载,而国内没办法正常访问 Google Drive

  • 那么需要我们手动下载权重文件放在 “C:\Users\31923.cache\torch\checkpoints” 里面,同时需要在DeepSORT源代码把联网下载部分注释掉,即可正常运行
  • 最好的方法就是把需要下载的文件下载好之后,直接复制到当前文件夹底下

四、如何训练与制作自己的数据集

(一)常见的几种情况

(1)有数据集 --> 标注
(2)手动获得数据集 - 人工标注
(3)手动获得数据集 - 半人工标注
用已经训练好的网络对数据集进行简单的标注,再在此基础上进行微调
(4)仿真数据集(GAN,数字图像处理)
参考:https://github.com/Unity-Technologies/SynthDet
在这里插入图片描述

(二)实操演练

训练与制作自己的数据集教程参考:tutorials/train_custom_data

(1)数据集的获取

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)人工/半人工标注

在这里插入图片描述
在这里插入图片描述

标注工具1:https://github.com/cvat-ai/cvat
标注工具2:https://www.makesense.ai/
标注工具3:labelme/labelimg/roboflow……

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)创建标准化目录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(4)创建 - - data 数据集参数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(5)训练模型检验

  1. 权重参数
    在这里插入图片描述
  2. 验证数据参数
    在这里插入图片描述
  3. 结果
    在这里插入图片描述

(三)注意事项

在这里插入图片描述
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3268801.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计-程序论文-基于 Java 的高校教资报名系统的设计与实现

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写&#xff0c;禁止任何人抄袭以及各类盈利性传播&#xff0c; 相关的代码部署论文ppt代码讲解答辩指导文件都有可私要 项目源码&#xff0c;请关注❥点赞收藏并私信博主&#x…

Python 高阶语法

前言&#xff1a; 我们通过上篇文章学习了Python的基础语法&#xff0c;接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样&#xff0c;设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性&#xff1a;  封装  继承 …

VitualBox虚拟机重启后配置无法保存,已安装软件变为没有安装

VitualBox虚拟机重启后虚拟机还原为上次开机的状态&#xff0c;安装的安装包配置啥的全部丢失。 按网上的配置了半天也没解决。最终用下面讨巧的办法&#xff0c;即不重启虚拟机。 我们不在重启虚拟机&#xff0c;那我们想关闭虚拟机的时候怎么办呢&#xff1f; 1、按下图所…

LangChain结合LLM做RAG文档搜索

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…

数据结构 链式存储 +

int DeleteLinkList(LinkList *list, char *name); int ReviseLinkList(LinkList *list, char *name, DATATYPE data); int DestroyLinkList(LinkList *list); int InsertTailLinkList(LinkList *list, DATATYPE data); ​​​​​​​删除 修改​​​​​​​ 销毁 ​​​​​…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完&#xff0c;根本学不完:(&#xff0c;感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果&#xff0c;比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

C# 写入SQLServer数据库报错SqlException: 不能将值 NULL 插入列 ‘ID‘

private int id; [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//id自增 public int ID { get > id; set > id value; } 将ID属性下的标识规范由否改成是

活动预告|8月3日 Streaming Lakehouse Meetup · Online 与你相约!

随着大数据分析技术的发展&#xff0c;越来越多的企业采用了数据湖架构。基于 Lakehouse 的架构优势&#xff0c;结合 Flink 的 Streaming 实时流处理能力&#xff0c;Flink 推出了新一代的“Streaming Lakehouse”技术。这一技术旨在能够让数据在湖上自由流动&#xff0c;为用…

AI学习记录 - transformer的位置编码的理解

看完肯定懂&#xff0c;可能会更新 一看位置编码公式&#xff0c;感觉很懵逼 懵逼四点&#xff1a;&#xff08;或者你还有其他不懂的点&#xff09; 1、为什么使用正弦余弦公式&#xff1f;不可以使用其他公式&#xff1f; 2、为什么奇数位置使用余弦&#xff0c;偶数位置使…

FreeModbus学习——定时器

FreeModbus版本&#xff1a;1.6 协议栈初始化时会初始化定时器&#xff1a; eMBInit → eMBRTUInit → xMBPortTimersInit( ( USHORT ) usTimerT35_50us ) 协议栈使能时会使能定时器&#xff1a; eMBEnable → pvMBFrameStartCur → eMBRTUStart → vMBPortTimersEnable 定时…

基于单片机控制的变压器油压油温故障检测

摘 要 在电力系统的运行中&#xff0c;通过对其核心设备变压器的故障进行检测&#xff0c;以此能够及时、准确的发现变压器的故障&#xff0c;基于单片机控制的变压器油压油温的故障检测的方法&#xff0c;利用压力传感器、温度传感器对变压器的油压、油温进行采集并送入单片机…

day08:订单状态定时处理、来单提醒和客户催单

文章目录 Spring Task介绍cron表达式入门案例 订单状态定时处理需求分析代码开发扩展 WebSocket介绍入门案例特点 来单提醒需求分析和设计代码实现 客户催单需求分析和设计代码实现 Spring Task 介绍 Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时…

Dify 零代码 AI 应用开发:快速入门与实战

一、Dify 介绍 Dify 是一个开源的大语言模型 (LLM) 应用开发平台。它结合了后端即服务 (Backend-as-a-Service) 和 LLMOps (LLMOps) 的概念&#xff0c;使开发人员能够快速构建生产级生成式 AI (Generative AI) 应用。即使是非技术人员也可以参与 AI 应用的定义和数据操作。 …

鸿蒙UI系统组件10——菜单(Menu)

果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下面名片&#xff0c;关注公众号。 Menu是菜单接口&#xff0c;一般用于鼠标右键弹窗、点击弹窗等。 1、创建默认样式的菜单 菜单需要调用bindMenu接口来实现。bindMenu响应绑定组件的点击事件&am…

【MATLAB APP】建立独立桌面APP

背景&#xff1a;已有MATLAB APP的.mlapp文件&#xff0c;但客户提出需要可以直接使用的exe文件。 要求&#xff1a;点开即用&#xff0c;无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者&#xff1a;安装MATLAB R2023a&#xff0c;配置Application Compile…

【SpringBoot】5 Swagger

官网 https://swagger.io/ 介绍 Swagger 是一套基于 OpenAPI 规范构建的开源工具&#xff0c;可以帮助开发者实现设计、构建、记录、使用 Rest API。 Swagger 是一款根据 Restful 风格生成的接口开发文档&#xff0c;并且支持做测试的一款中间软件。 Swagger主要包括三部分&…

AI绘画;Stable Diffusion再升级:学会以图生图!

前言 Stability AI 很高兴地宣布推出 Stable Diffusion Reimagine&#xff01;我们邀请用户通过 Stable Diffusion 尝试图像并“重新构想”他们的设计。 Stable Diffusion Reimagine 是一种新的 Clipdrop 工具&#xff0c;它允许用户无限制地生成单个图像的多个变体。无需复杂…

科研绘图系列:R语言山脊图(Ridgeline Chart)

介绍 山脊图(Ridge Chart)是一种用于展示数据分布和比较不同类别或组之间差异的数据可视化技术。它通常用于展示多个维度或变量之间的关系,以及它们在不同组中的分布情况。山脊图的特点: 多变量展示:山脊图可以同时展示多个变量的分布情况,允许用户比较不同变量之间的关…

【Java基础语法】字符修改,以及equals的用法

前言&#xff1a; 小编这里将上一期String类型进行了补充&#xff0c;添加了字符串的修改&#xff0c;以及equals的用法内容&#xff0c;和hashcode的使用&#xff1b;上一期&#xff1a;http://t.csdnimg.cn/ijiM6 1.字符串的修改 在上一期中我们说到字符串是不能被修改的&am…

计算机视觉项目-2024年第3号超强台风“格美”登陆福建带来大暴雨造成城市积水,通过模型识别路段积水避开积水道路

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉项目-2024年第3号超强台风“格美”登陆福建带来大暴雨造成城市积水&#xff0c;通过模型识别路段积水避开积水道路。今年第3号台风“格美”(强台风级)的中心今天(24日)早晨5点钟位于我国台湾省宜兰县东南…