yolov5目标检测

news/2024/7/10 1:07:19 标签: YOLO, 目标检测, 人工智能

一、安装

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.niftyadmin.cn/n/5268058.html

相关文章

MongoDB mapReduce案例分析

文章目录 第1关:mongoDB的插入和查询第2关:MongoDB的删除操作 第1关:mongoDB的插入和查询 编程要求 根据提示,在右侧编辑器补充代码,根据提示。 测试说明 平台会对你编写的代码进行测试: 测试输入&#…

2023年全球软件架构师峰会(ArchSummit上海站)-核心PPT资料下载

一、峰会简介 峰会关键词:DataOps在企业落地实践,前沿技术探索,ToB软件质量保障,大数据架构的结合应用,架构标准化和质量评估前沿探索,架构稳定性保障,金融业数字化转型探索,企业架…

论文阅读——GroupViT

GroupViT: Semantic Segmentation Emerges from Text Supervision 一、思想 把Transformer层分为多个组阶段grouping stages,每个stage通过自注意力机制学习一组tokens,然后使用学习到的组tokens通过分组模块Grouping Block融合相似的图片tokens。通过这…

Vue宝典之深入理解 rules 属性

🍂引言 在 Vue 中,我们经常会使用表单来收集用户的输入信息。为了确保用户输入的准确性和完整性,我们需要对输入进行校验。Vue 提供了一种便捷的方式来进行表单校验,即使用 rules 属性。本文将深入介绍 Vue 中的 rules 属性&…

四十六----react路由

一、react 路由使用 import {render } from "react-dom"; import {BrowserRouter,Routes,Route, } from "react-router-dom"; // import your route components too render(<BrowserRouter><Routes><Route path="/" element={&l…

Flutter开发笔记 —— sqflite插件数据库应用

前言 今天在观阅掘金大佬文章的时候&#xff0c;了解到了该 sqflite 插件&#xff0c;结合官网教程和自己实践&#xff0c;由此总结出该文&#xff0c;希望对大家的学习有帮助&#xff01; 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式…

深圳移动与大富科技助力深圳人工智能教育高质量发展

12月12日&#xff0c;中国移动通信集团广东有限公司深圳分公司(以下简称“深圳移动”) 与大富科技&#xff08;安徽&#xff09;股份有限公司&#xff08;以下简称“大富科技”&#xff09;在中国移动深圳信息大厦签署“战略合作框架协议”&#xff0c;共同推进人工智能教育、I…

【工具】VUE 前端列表拖拽功能代码

【工具】VUE 前端列表拖拽功能代码 使用组件 yarn add sortablejs --save Sortable.js中文网 (sortablejs.com) 以下代码只是举个例子&#xff0c; 大家可以举一反三去实现各自的业务功能 <template><div><el-button type"primary" click"切换…