YOLOv5-水印检测

简介:
YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。
YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

1>输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;

2> 基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;

3> Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;

4> Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

网络结构:
改编自知乎大佬的一张图:
Yolov5s网络是Yolov5系列中深度最小,特征图的宽度最小的网络。后面的3种(Yolov5m、Yolov5l、Yolov5x)都是在此基础上不断加深,不断加宽。
在这里插入图片描述
在这里插入图片描述

参数:

train.py (训练)
在这里插入图片描述
**weights:**权重文件(官方给了很多,看情况下载)
**cfg:**网络结构参数配置文件(锚点、骨干网络、头网络)
**data:**数据位置的配置文件
**hyp:**超参数配置文件(学习率、损失增益等)
**epochs:**训练轮数
**batch-size:**图片输入数量
img-size:输入图片大小,放缩图片
rect:矩形训练,减去一些不必要的信息
resume:是否接着上次打断的训练,TRUE的话需要指定上次中断的训练模型路径
nosave:不保存模型,仅保存最后的模型
notest:不进行test测试,仅测试最后一轮
noautoanchor:不调整anchor,禁止自动定位检查,设置目标检测的锚点框
evolve:对超参数进行净化
bucket:谷歌云盘,不使用
cache-images:将图片缓存到内存中,加快模型训练
image-weights:使用加权图像进行训练(测试过程),对训练不好的图片下一轮增加权重
device:GPU还是CPU的使用
multi-scale:改变图像尺寸
single-cls:用于设定训练集是多类数据、单类数据
adam:优化器
sync-bn: 分布式训练
local_rank:不能修改,单机多卡训练
workers:最大工作训练核心、线程 网上建议设置0
project:模型保存位置,没有会自动生成
entity:wandb库,可以看训练过程,一般不用(需要自己注册账号)
name:模型保存的文件夹,多次运行:exp1,exp2…
exist-ok:预测结果保存位置,覆盖上次结果不新建结果文件
quad:用于训练集图像大于–img-size设置的640图片,训练效果更好,小于的效果差一些
linear-lr:学习速率调整,默认FALSE 通过余弦函数降低学习率
label-smoothing:防止过拟合,对标签进行平滑处理,防止分类算法中产生过拟合
upload_dataset:wandb库的
bbox_interval:wandb库的
save_period:用于记录训练日志

yolov5s.yaml:(进行和你选择的结构参数配置文件)
在这里插入图片描述
nc:分类的类别
depth_multiple和width_multiple:根据选择的配置文件不同而不一样

voc.yaml:(数据配置文件)
在这里插入图片描述
train和val指定训练数据的位置,还可以设置test
nc:分类的类别
names:每个类别的名字

detect.py:(预测)

source:预测数据路径
weights:训练好的best.pt文件路径
conf-thres:置信度阈值
iou-thres:交并比阈值
conf-thres和iou-thres确定返回的预测框

test.py:(测试)
在这里插入图片描述
save-txt:返回检测框TXT文件
save-hybrid:标签和预测结果保存TXT文件
save-conf:检测到的坐标返回TXT文件
其余参数大致和train相同

数据标注

在这里插入图片描述
使用标注精灵:新建一个项目,选择位置标注和自定义标注类别,导入数据,选择矩形框标注,导出数据为XML文件。

格式转化
voc2yolov5.py

classes:类别名称
TRAIN_RATIO:按比例划分train和val
convert_annotation函数:读取xml文件,写入TXT文件,确定标注好的XML文件和查找位置相同

在这里插入图片描述
os.getcwd() 绝对路径
创建放图片、labe、train、val等文件夹

过程:
先进行数据的格式转化,然后train的参数修改,最后修改对应的配置文件,运行train进行模型训练。
预测、测试同理

结果:

在这里插入图片描述
配置文件指定路径下生成结果,模型权重文件防在weights下面,存在best和last(最好的和最好的),参数文件
检测结果:
在这里插入图片描述

开始运行:在这里插入图片描述

报错:

wandb:报错说没有账号等,可以直接关闭

找到utils下的wandb_loggig下面的wandb_utils添加:
在这里插入图片描述
利用tensorboard可视化训练过程,训练开始会在yolov5目录生成一个runs文件夹,利用tensorboard打开即可查看训练日志

tensorboard --logdir=runs

在这里插入图片描述
注意:数据转化的时候一定要把数据类别名称加上。

环境:
在这里插入图片描述
符合CUDA11.1的pytroch:

pip install torch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html 

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

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

相关文章

内网私有化聊天软件:哪些企业类型最受益?

在数字化时代,企业内部通讯的效率和安全性成为了企业运营中不可或缺的一环。随着数据泄露事件频发和隐私保护意识的增强,越来越多的企业开始寻求更加安全、可控的通讯解决方案。内网部署的私有化聊天软件,以其高度的安全性、定制化特性和自主…

甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?

在工作中、团队协作时,可能遇到的问题,如集成测试等场景。但是作为偏前端的全栈,锅从天上来,不是你想甩就能甩,尤其面对测试等比较强势的团体(bug创造者),你必须有强大的心理承受能力…

C++ STL容器(二) —— list 底层剖析

计划写几篇关于C STL容器底层剖析的文章,主要基于的是MSVC的实现,本篇先从比较简单的 list 入手,个人感觉文章更偏于代码的具体实现,而不是原理的讲解,所以前置需要你了解链表的相关算法,如果有问题欢迎评论…

长方形+ 下三角形的图形 css

<div class"transform">42.48%</div>//转化.transform {position: relative;width: 70px;height: 26px;background-color: #dcdfe6; /* 长方形的颜色 */display: flex;justify-content: center;align-items: center;font-family: PingFangTC-Medium;font…

Keil5 操作

目录 1.Debug&#xff08;软件模拟调试&#xff1a;&#xff09;&#xff1a; 2.代码提示设置&#xff1a; 3.添加. c与.h文件&#xff1a; 常用技巧 安装下载推荐&#xff1a;正点原子 1.Debug&#xff08;软件模拟调试&#xff1a;&#xff09;&#xff1a; 文章讲解 …

Selenium自动化安装教程

目录 提示&#xff1a; 一、安装Python运行环境 1. 找到官方网站 ​编辑 2. 找到下载页面 3. 双击安装包 ​编辑 4. 运行 hello world 二、安装 pycharm 1. 找到官方网站 ​编辑 2. 找到下载页面 3. 双击安装包 4. 运行 hello world 5. 字体设置 三、Python管理…

JavaWeb--小白笔记07:servlet对表单数据的简单处理

这里的servlet对表单数据的处理是指使用IDEA创建web工程&#xff0c;再创建html和class文件进行连接&#xff0c;实现html创建一个表单网页&#xff0c;我们对网页中的表单进行填充&#xff0c;可以通过class文件得到网页我们填充的内容进行打印到控制台。 一登录系统页面---h…

查找和排序(选择题)

查找 寻找最大/小项 n-1 排序 前三个的时间复杂度都是O(n^2),希尔排序是O(n^1.5). 在以上排序方法中&#xff0c;最坏情况下时间复杂度最小的是堆排序。 每经过一次元素的交换会产生新的逆序的是快速排序。

为什么越来越多的网工运维转行网络安全?_idc运维转网络安全工程师_系统运维转行网安

最近越来越多的网工运维小伙伴都在吐槽&#xff1a;干网工、运维多年&#xff0c;薪资还是5.6K&#xff0c;技术也遇瓶颈上不去&#xff0c;考虑转岗或者转行。其中大部分的网工运维小伙伴们纷纷瞄准了高薪高前景的网络安全工程师岗位 网络安全是怎样的岗位&#xff1f; 网络安…

2024重组胶原蛋白行业白皮书:从美业革新先锋到精准医疗动力源

从来源上看&#xff0c;胶原蛋白主要分为动物源胶原蛋白和重组胶原蛋白两大类。重组胶原蛋白相较于传统动物来源的胶原蛋白在生物活性、生物相容性、低免疫原性、降低漏检病原体风险、水溶性、无细胞毒性等方面表现出诸多优越性。随着胶原蛋白的来源和生产方式不断演变&#xf…

改进的yolov10 deepsort目标跟踪(yolo改进+最新算法+附代码和教程)

YOLOv10_DeepSORT&#xff1a;视频中的对象检测与跟踪 本仓库包含了使用YOLOv10对象检测模型和DeepSORT算法在视频中进行对象检测与跟踪的代码。YOLOv10是目前最先进的对象检测模型之一&#xff0c;而DeepSORT是一种基于深度学习的对象跟踪算法&#xff0c;它结合了外观信息和…

BOE(京东方)携故宫博物院举办2024“照亮成长路”公益项目落地仪式以创新科技赋能教育可持续发展

2024年9月20日&#xff0c;BOE&#xff08;京东方&#xff09;“照亮成长路”智慧教室落成暨百堂故宫传统文化公益课山西活动落地仪式在山西省太原市娄烦县实验小学隆重举行。自“照亮成长路”教育公益项目正式设立以来&#xff0c;BOE&#xff08;京东方&#xff09;持续以创新…

jenkins分布式构建

Jenkins分布式构建是一种将构建任务分散到多个机器上的方法&#xff0c;以提高构建效率和并行处理能力 1. 架构 主节点&#xff08;Master&#xff09;&#xff1a;负责管理构建任务、调度和监控所有从节点。从节点&#xff08;Slave&#xff09;&#xff1a;实际执行构建任务…

文件防泄漏方法有哪些|6个方法有效防止文件泄密

文件防泄漏是企业和组织保护其敏感信息和核心资产的重要手段。 以下是六个有效防止文件泄密的方法&#xff1a; 1. 文件加密 透明加密&#xff1a;使用专业的防泄密软件&#xff0c;如安企神等&#xff0c;对敏感文件进行透明加密处理。 这种加密方式在用户创建、编辑和保存…

DPDK 简易应用开发之路 4:基于Pipeline模型的DNS服务器

本机环境为 Ubuntu20.04 &#xff0c;dpdk-stable-20.11.10 使用scapy和wireshark发包抓包分析结果 完整代码见&#xff1a;github Pipeline模型 DPDK Pipeline模型是基于Data Plane Development Kit&#xff08;DPDK&#xff09;的高性能数据包处理框架。它通过将数据流分为多…

力扣46.全排列

一、题目 二、代码 class Solution {int[] nums;List<List<Integer>> ans new ArrayList<>();List<Integer> path new ArrayList<>();boolean[] onPath;public List<List<Integer>> permute(int[] nums) {this.nums nums;int n …

【GUI设计】基于图像分割的GUI系统(3),matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于Matlab的图像处理GUI系统&#xff08;3&#xff09;&#xff0c;用matlab实现。…

AH2212-12V转4.2V充电芯片

AH2212——12V转4.2V充电芯片&#xff0c;峰值2A输出编程电流&#xff0c;实现精准同步开关降压锂电池充电 随着科技的不断发展&#xff0c;移动电源、智能穿戴、电动工具等设备的应用越来越广泛&#xff0c;对电池充电芯片的需求也日益增大。本文将为您介绍一款高性能的充电芯…

与时间函数相关的那些事

在LuatOS中&#xff0c;获取时间函数用得最多的就是os.time()函数了。 接下来&#xff0c;我会讲一些与这个函数以及其他时间函数相关的知识。 一、时间戳相关 os.time()这个函数&#xff0c;只能获取当前时间戳&#xff1b;如果客户希望获取的是当前时间&#xff0c;即相应…

2024年【危险化学品生产单位安全生产管理人员】考试及危险化学品生产单位安全生产管理人员考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位安全生产管理人员考试为正在备考危险化学品生产单位安全生产管理人员操作证的学员准备的理论考试专题&#xff0c;每个月更新的危险化学品生产单位安全生产管理人员考试题祝您顺利通过危险化…