yolov5目标检测

news2024/11/25 12:42:38

一、安装

1.源码下载

git clone git://github.com/ultralytics/yolov5.git

cd yolov5

2.环境配置

conda create -n yolov5 python=3.8

conda activate yolov5

nvcc -V查看cuda版本

pytorch官网下载对应版本,例如当cuda版本为11.6

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3.权重下载

  1. https://github.com/ultralytics/yolov5

  2. 点击右侧Releases

  3. 最下方Assets中点击下载相应模型(yolov5s.pt)

4.测试

python3 detect.py --source data/image --weights yolov5s.pt

二、数据集

1.数据集准备

新建dataset文件夹 (名字可自定义)

新建images和labels文件夹 (名字不能错)

images和labels内分别新建train和val文件夹 (名字不能错)

将准备的图像按大致8 : 2随机分配,放入images的train和val文件夹内,作为训练集和验证集

labels文件夹将存放之后生成的txt格式标签

如图:

2.数据标注

推荐使用Roboflow

每类图片数量大于1500张 (不同场景上下浮动)

每类图片的实例(标注的数量)大于10000 (同上)

图片多样性: 不同光照,不同角度最重要

标签一致性: 不能有漏标的待检测物体

标签准确性: 标签需紧贴被标物体,不留空隙,不能漏标

背景图: 在训练集中加入0~10%的背景图(没有任何标注),以减少假阳性/过拟合 (防止将背景的特征误认为是物体的特征)

三、训练

1.准备

1.在data文件夹内修改或创建data.yaml (文件名可自定义)
  • train和val 指定训练集和测试集的图片所在文件夹路径

  • nc 为训练的classes数量

  • names 为标签名,需要和classes.txt顺序一一对应

2.修改models文件夹中对应预训练模型的yaml文件
  • 只需修改nc为你训练的classes数量

2.本地训练

cd yolov5 python train.py --img 640 --batch 16 --epochs 300 --data data/data.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0

参数说明

img 图片大小

device 使用cpu或者gpu

batch batch-size 和显卡性能有关,在能设的范围内越大越好,最好为2的倍数(玄学)

epochs 训练迭代次数

data 指定之前修改的data/data.yaml

cfg 模型结构配置文件

weights 允许练模型权重

resume 如果指定–resume则可以继续上次中断的训练

workers 多线程

训练效果

  • 随着训练进度,mAP@.5将从0趋近1

  • 观察多少epochs之后mAP开始趋近1,则模型收敛

  • 训练过程中best和last模型会实时保存到runs/train/expn/weights中

3.官方建议

训练小模型或中模型建议使用预训练模型

训练大模型建议不用预训练模型,从头开始训练

使用P6模型作为预训练模型可以提高精度,但是会减慢速度,P6模型image size为1280

初始epochs设为300,如果过拟合减少epochs,欠拟合则增加epochs

默认image size 640,如果训练小物体检测可将image size设为1280

训练,测试和部署的image size应一致

使用硬件所允许最大的batch size

四、detect

python detect.py --source data/image --weights runs/train/weights/best.pt --device cpu

五、export

python export.py --data data/myjob.yaml --weights runs/train/weights/best.pt --device cpu --include onnx --opset 12

python detect.py --source data/image --weights runs/train/weights/best.onnx --device cpu

netron可视化onnx

一般使用int8量化

六、c++推理加速

git clone https://github.com/Hexmagic/ONNX-yolov5

mkdir build&&cd build

cmake ..

make -j4

cd ..

./build/main yolov5s.onnx data/images/zidane.jpg

七、打标工具

https://roboflow.com/

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

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

相关文章

阿里云服务器租用价格分享,阿里云服务器热门配置最新活动价格汇总

在我们购买阿里云服务器的时候,1核2G、2核2G、2核4G、2核8G、4核8G、8核16G、8核32G等配置属于用户购买最多的热门配置,1核2G、2核2G、2核4G这些配置低一点的云服务器基本上能够满足绝大部分个人建站和普通企业用户建站需求,而4核8G、8核16G、…

Vue之模板语法

模板语法有两大类&#xff1a; 1.插值语法 2.指令语法 让我为大家介绍一下吧&#xff01; 一、插值语法 功能:用于解析标签体内容。 写法: {{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 举个例子&#xff1a; <!DOCTYPE html> &l…

六级高频词汇3

目录 单词 参考链接 单词 400. nonsense n. 胡说&#xff0c;冒失的行动 401. nuclear a. 核子的&#xff0c;核能的 402. nucleus n. 核 403. retail n. /v. /ad. 零售 404. retain vt. 保留&#xff0c;保持 405. restrict vt. 限制&#xff0c;约束 406. sponsor n. …

LinuxBasicsForHackers笔记 -- BASH 脚本

你的第一个脚本&#xff1a;“你好&#xff0c;黑客崛起&#xff01;” 首先&#xff0c;您需要告诉操作系统您要为脚本使用哪个解释器。 为此&#xff0c;请输入 shebang&#xff0c;它是井号和感叹号的组合&#xff0c;如下所示&#xff1a;#! 然后&#xff0c;在 shebang …

“我“的测试之路,从初级测试到测试开发,往后前景...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试工程师的现…

C++ //习题2.5 请写出下列表达式的值。

C程序设计 &#xff08;第三版&#xff09; 谭浩强 习题2.5 习题2.5 请写出下列表达式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 设a的初值为3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE环境配置&#xff08;HarmonyOS 3.1&#xff09; 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、环境安装 IDE下载地址&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 IDE的安装就是…

家具制造ERP软件包含哪些功能?家具制造业ERP系统哪个好

不同的家具有不同的用料、品质、制造工时、营销渠道等&#xff0c;而有些家具制造企业采用传统的管理方式在处理物料BOM、生产实际成本核算、库存盘点、供应商选择、班组计件核对、生产领用以及物料追溯等方面存在不少提升空间。 与此同时也有很多的皮具制造企业借助ERP软件优…

探索HarmonyOS_开发软件安装

随着华为推出HarmonyOS NEXT 宣布将要全面启用鸿蒙原声应用&#xff0c;不在兼容安卓应用&#xff0c; 现在开始探索鸿蒙原生应用的开发。 HarmonyOS应用开发官网 - 华为HarmonyOS打造全场景新服务 鸿蒙官网 开发软件肯定要从这里下载 第一个为微软系统(windows)&#xff0c;第…

GLAB | CCNA+HCIA=融合课-最新开课通知

敲重点! 12月17日 CCNAHCIA 周日开课啦&#xff01; CCNA&#xff08;Cisco Certified Network Associate&#xff09;认证是Cisco售后工程师认证体系的入门认证&#xff0c;也是Cisco各项认证中级别最低的技术认证通过CCNA认证可证明你已掌握网络的基本知识&#xff0c;并能…

docker 一键寻找容器在服务器存储位置

docker ps -a找到容器id/容器名称 docker inspect 容器id/容器名称 | grep UpperDir找出该容器在物理机的位置 inspect作用:查看docker详细信息 cd到UpperDir所指向的地址&#xff0c;找到配置文件并修改,到这后,这个位置和你用exec命令进入容器内看到文件是一致的

盛域宏数合伙人张天:AI时代,数字化要以AI重构

大数据产业创新服务媒体 ——聚焦数据 改变商业 在这个飞速发展的科技时代&#xff0c;数字化已经深刻地改变了我们的生活和商业方式。信息技术的迅猛发展使得数据成为现代社会最宝贵的资源之一。数字化已经不再是可选项&#xff0c;而是企业持续发展的必由之路。背靠着数据的…

【LeetCode:1631. 最小体力消耗路径 | BFS + 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

高仿B站视频网站系统源码 附带完整的搭建教程

现如今&#xff0c;视频分享网站逐渐成为人们休闲娱乐和学习知识的重要平台。B站作为中国最大的弹幕视频网站之一&#xff0c;以其独特的弹幕系统、丰富的内容和良好的用户体验赢得了广大用户的喜爱。然而&#xff0c;对于一些想要搭建自己的视频分享网站的用户来说&#xff0c…

【ScienceAI Weekly】IBM新AI芯片提效25倍;清华大学发AI辅助框架;DeepMind新工具预测220万新晶体

「ScienceAI Weekly」是 HyperAI 超神经新创建的半月更栏目&#xff0c;主要从科研成果、企业动态、工具资源、近期活动 4 个维度&#xff0c;收集呈现 ScienceAI 领域近期值得关注的最新动态&#xff0c;以期为长期关注该领域的从业者、爱好者&#xff0c;提供更有价值的圈内资…

Docker中的常见命令

Docker开机自启 systemctl enable dockerDocker容器开机自启 docker update --restartalways [容器名/容器id]案例&#xff1a;docker操作nginx 拉取Nginx镜像 docker pull nginx查看镜像 docker images创建并运行Nginx容器 docker run -d --name nginx -p 80:80 nginx查…

19、线性容器、适配器容器

19、线性容器、适配器容器 线性容器向量 vector初始化迭代器使用 双端队列 deque双端队列和向量的差别成员函数 列表 list常用函数 适配器容器栈队列 线性容器 向量 vector 成员函数 front() 获取首元素 back() 获取尾元素 insert() 插入元素 erase() 删除元素 push_back() …

AIGC实战——WGAN(Wasserstein GAN)

AIGC实战——WGAN 0. 前言1. WGAN-GP1.1 Wasserstein 损失1.2 Lipschitz 约束1.3 强制 Lipschitz 约束1.4 梯度惩罚损失1.5 训练 WGAN-GP 2. GAN 与 WGAN-GP 的关键区别3. WGAN-GP 模型分析小结系列链接 0. 前言 原始的生成对抗网络 (Generative Adversarial Network, GAN) 在…

【js】数字字符串的比较

今天排查一个日历组件的bug&#xff0c;month打印出来是9&#xff0c;month1打印出来为12&#xff0c;比较month和month1大小进入if或者else&#xff0c;奇怪的是每次都是进入的month>month1语句里面 打印typeOf&#xff08;a&#xff09;和typeOf&#xff08;b&#xff09…

深入学习Redis:从入门到实战

Redis快速入门 1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端1.4.1.R…