yolov4——你总能在这找到你想要的答案

news2024/11/19 18:21:45

目录

一:前言

二:一些数据增强的方法

三:自提议

四:dropout

         普通的dropout

         yolov4的dropblock

五:Label smothing 标签平滑

六: GIOU,DIOU,CIOU

七: 对网络结构的改进

Spp结构

Cspnet

八:PANet

yolov3中的FPN特征金字塔结构

Bi-FPN

九:Mish激活函数(RuLu的改进)


一:前言

YOLOv4是一种目标检测算法,它是YOLO系列(You Only Look Once)的最新版本。YOLO算法是一种实时目标检测算法,能够在一次前向传播过程中同时进行目标检测和定位。YOLOv4在YOLOv3的基础上进行了改进和优化,提高了检测精度和速度。

以下是YOLOv4的一些主要改进和特点:

  1. 骨干网络改进:YOLOv4使用了更强大的骨干网络,如CSPDarknet53和CSPResNeXt50,以提高特征提取能力和检测性能。

  2. 特征金字塔网络(FPN):YOLOv4引入了特征金字塔网络,通过多尺度特征融合来处理不同尺度的目标,提高了对小目标的检测能力。

  3. PANet:YOLOv4结合了PANet(Path Aggregation Network)的思想,通过横向连接和级联结构来提高不同分辨率特征的信息传递和融合。

  4. 判别式特征:YOLOv4在网络中引入了判别式特征,使得网络更容易学习到具有判别性的特征,提高了检测的准确性。

  5. 精细化检测:YOLOv4采用了多尺度训练和测试,以便检测不同尺度的目标,并使用IoU损失函数进行更准确的目标定位。

  6. 数据增强:YOLOv4使用了更多的数据增强技术,如Mosaic数据增强、CutMix数据增强等,增强了网络的鲁棒性和泛化能力。

  7. 快速推理:YOLOv4通过优化网络结构、使用精细化的Anchor框和采用更高效的推理策略,提高了检测速度。

V4贡献:
        亲民政策,单GPU就能训练的非常好,接下来很多小模块都是这个出发点

        两大核心方法,从数据层面和网络设计层面来进行改善

        消融实验,感觉能做的都让他给做了,这工作量不轻
        全部实验都是单GPU完成,不用太担心设备了

二:一些数据增强的方法

先做数据增加,增强完之后再把四张图片拼接在一起

给网络增加一些游戏难度,加目标的部分部位给遮挡住

 三:自提议

四:dropout

         普通的dropout

之前的dropout是随机丢弃一些神经元

         yolov4的dropblock

五:Label smothing 标签平滑

将标签数值减小一点点

使用后:簇内更紧密,簇间更分离 

 

六: GIOU,DIOU,CIOU:

        可以避免损失为0停止训练。IOU(Intersection over Union)损失属于定位损失(Localization Loss)的一部分。

 

但是GIOU存在问题。。。。

改进开始使用DIOU(距离度量),使得分母和分子的距离都越近越好,p^2表示欧式距离

但是DIOU还有一点点缺陷,,因为仅仅解决了当两个框完全一样的时候。没有考虑到长宽比。。。   

再改进,所以使用CIOU,a长宽比越大,av的值也就越大,iou损失也就越大

 soft-MNS是意思是,我先不提除掉,先抑制一点你的这个框,就降低你一点分,然后通过后面你学习,最后看你综合表现,看你能不能学习回来大于我这个阈值,能学习回来就代表你有能力,

七: 对网络结构的改进

Spp结构

yolov3x出现了spp结构

  

Cspnet

把channel减小了,大大的减小了计算量,效率更高,很符合yolo的出发点。

 

 注意力机制:分别再channel,位置上,都给不同的特征图分配不一样的权重

 

不过引入channel的attention的话会大大增加计算量,所以不用CBAM,而是引入了SAM只有空间的注意力机制。

然后又改进了SAM的一点点,把之前的maxpooling avgpooling变成之间卷积一步到位,主旨都是减小计算量。

八:PANet

YOLOv3中使用的FPN使用自顶向下的路径来提取语义丰富的特征并将其与精确的定位信息结合起来。

但对于为大目标生成mask,这种方法可能会导致路径过于冗长,因为空间信息可能需要传播到数百个层。

PANet是一个加强版的FPN,它通过融合自底向上和自顶向下两条路径的方式增强了骨干网络的表征能力。 

不用加法而是用乘法

 总而言之,YOLOv4中Panet模块使用拼接而不是加法,是为了更好地融合不同层级的特征信息,并提升目标检测的性能。

        Panet模块旨在解决多尺度特征的融合问题,它接收来自不同层级的特征图,并将它们进行拼接(concatenate),形成一个更丰富的特征表示。通过拼接而不是加法,可以保留每个层级特征的细节信息,并将它们有机地结合起来。

yolov3中的FPN特征金字塔结构

         其对特征点进行不断的下采样后,拥有了一堆具有高语义内容的特征层,然后重新进行上采样,使得特征层的长宽重新变大,用大size的feature map去检测小目标。

        然不可以简单只上采样,因为这样上采样的结果对小目标的特征与信息也不明确了,因此我们可以将下采样中,与上采样中长宽相同的特征层进行堆叠,这样可以保证小目标的特征与信息。和U-net结构很相似。但多了堆叠的过程。

Bi-FPN


        在EfficientDet中提出了一种加权的双向特征金字塔网络,它允许简单和快速的多尺度特征融合。作者的目的是为了追求更高效的多尺度融合方式。

        以往的特征融合是平等地对待不同尺度特征,作者引入了权重(类似于attention),更好地平衡不同尺度的特征信息。在论文中作者也有与其他FPN的对比。

BiFPN(Bi-directional Feature Pyramid Network)使用了一种称为"weighted feature fusion"的操作,它综合了加法和concatenation(cat)的思想。

总的来说 Bi-FPN相当于给各个层赋予了不同权重去进行融合,让网络更加关注重要的层次,而且还减少了一些不必要的层的结点连接。

九:Mish激活函数(RuLu的改进)

 消除敏感度

        sigmoid函数的作用是将输入映射到0到1之间的概率值,这样做可以对置信度进行归一化,使其表示一个概率的概念。值接近0表示低置信度,值接近1表示高置信度。

        这种处理方式有助于模型更好地区分物体和背景,以及判断预测框中是否存在物体。通过应用sigmoid函数,可以使置信度输出符合概率的定义,并更适合用于后续的阈值筛选或目标检测任务的处理。

         在 YOLOv3 中,不同尺度的特征图通过拼接(concatenation)的方式合并为一个整体的特征图。然后,通过这个整体特征图计算总体的损失,并进行一次梯度更新来同时更新所有层的参数。 虽然在梯度更新的过程中使用了整体特征图,但每个尺度上的损失是分别计算的。通过拼接后的特征图,不同尺度上的目标检测结果都对总体的损失有贡献,而参数的更新是基于总体损失计算的梯度进行的。因此,可以说是分别更新了不同尺度大小的梯度,以优化整个模型。

参数被更新完梯度后,这些参数保存哪了?

        在常见的深度学习框架中(如PyTorch、TensorFlow等),参数的更新是自动完成的,无需手动将更新后的参数传入网络层。优化器(如Adam、SGD等)会自动更新模型的参数,并在后续的训练过程中使用这些更新后的参数。

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

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

相关文章

代码随想录算法训练营第五十五天 | 力扣 392.判断子序列, 115.不同的子序列

392.判断子序列 题目 392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace&quo…

Mysql 经典面试题总结

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Flask+pyecharts实现电影数据分析可视化

之前有写过pyecharts实现电影数据分析可视化和Djangopyecharts实现电影数据分析可视化,但是综合起来感觉还是有缺陷,所以我使用Flaskpyecharts重新整合一下电影数据可视化。 下面是完成后的截图 这应该就算是可视化大屏了吧 文章目录 代码结构index.cs…

MM32F3273G8P火龙果开发板MindSDK开发教程3 - Sysclk的配置

MM32F3273G8P火龙果开发板MindSDK开发教程3 - Sysclk的配置 1、时钟初始化流程 一般流程为startup_mm32f3273g.s中调用system_mm32f3273g.c中的SystemInit函数完成系统时钟的初始,而system_mm32f3273g.c中函数是空的。 原来MindSdk时钟初始化的流程放到了clock_i…

【ArcGIS Pro二次开发】(37):图层一键应用村规、国空符号系统

在国空、村规的实际工作中,将要素类加载到地图中后,需要将图斑的符号系统修改成国空或村规的样式。一般的做法是使用样式库或已经做好的图层文件进行匹配,这个工具要实现的功能是直接应用特定的符号系统,其实用的方法也就是GP工具…

HTMLCSS Day02 CSS简介与选择器

文章目录 1.CSS32.语法2.1.CSS声明(CSS declarations)2.2.CSS声明块( CSS declaration blocks)2.3.CSS规则集2.4.CSS可读性- 空白( White space)- 注释( Comments)- 速记写法&#x…

【OpenMMLab AI实战营第二期】目标检测笔记

目标检测 目标检测的基本范式 划窗 使用卷积实现密集预测 锚框 多尺度检测与FPN 单阶段&无锚框检测器选讲 RPN YOLO、SSD Focal Loss与RetinaNet FCOS YOLO系列选讲 什么是目标检测 目标检测:给定一张图片,用矩形框框出所有感兴趣物体同…

【系统迁移:笔记本更换硬盘,不重装系统方法】

本人在使用笔记本的时候,C盘空间经常不够用。每次空间满了,就要清理磁盘,卸载一些软件。后来网上搜索一些C盘扩容的办法,列在下面了。去官方下载 diskgenius 软件,点击 here 跳转官网。 电脑型号:联想小新…

操作系统(3.5)--死锁概述

目录 资源问题 可重用性资源和消耗性资源 可抢占性资源和不可抢占性资源 计算机系统中的死锁 1.竞争不可抢占性资源 2.竞争可消耗资源产生死锁 3.进程推进顺序不当引发死锁 死锁的定义、必要条件和处理方法 死锁的定义 产生死锁的必要条件 处理死锁的基本方法 资源…

华为OD机试真题(JavaScript),挑选字符串(100%通过+复盘思路)

一、题目描述 给定a-z,26个英文字母小写字符串组成的字符串A和B,其中A可能存在重复字母,B不会存在重复字母,现从字符串A中按规则挑选一些字母可以组成字符串B挑选规则如下: 同一个位置的字母只能挑选一次&#xff1b…

JS reduce方法对后台数据的处理案例(秒解决)

目录 一、前言 二、案例1 三、案例二 四、小结 一、前言 在我们项目开发阶段,当后端传回来的数据不太理想或者不好直接使用的话,那么此时我们就必须对数据进行处理,这次我就遇到了一种情况,当后端返回如下格式的数据&#xff…

Rust每日一练(Leetday0024) 爬楼梯、简化路径、编辑距离

目录 70. 爬楼梯 Climbing Stairs 🌟 71. 简化路径 Simplify Path 🌟🌟 72. 编辑距离 Edit Distance 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专…

dubbo源码阅读之-java spi, dubbo spi 和 Spring spi 到底有啥区别

java spi, dubbo spi 和 Spring spi 到底有啥区别 SPIJava SPI案例优缺点 Spring SPIDubbo SPI概述案例源码分析 自己实现一个SPI SPI SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由…

北京通信展的精华内容,都在这里!(中篇)

█ 中国移动 中国第一大运营商: 中国移动展出的内容非常非常多,既有应用,也有技术干货: 通感一体化: 6G: 猜猜这是什么: 揭晓答案: 1:2的卫星单元模型: RIS智能超表面&am…

HNU人工智能实验四-基于YOLOV3-DarkNet50的篮球检测模型

实验四:深度学习算法及应用-基于YOLOV3-DarkNet50的篮球检测模型 项目文档工程:https://github.com/mindspore-ai/mindspore-21-days-tutorials/tree/main/ 前言 这个实验要求做一个深度学习项目,做头歌的或者自己在华为云找一个都行&…

华为OD机试真题 Java 实现【最长回文子串】【牛客练习题】

一、题目描述 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1≤s…

华为OD机试真题 JavaScript 实现【最长回文子串】【牛客练习题】

一、题目描述 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 数据范围:字符串长度1≤s…

锤子眼里全是钉?谈如何对现有系统进行微服务改造

1 什么是微服务架构? 微服务架构,主要是一种思想,并非具体的技术、框架、语言等。核心在于将现有系统拆分为功能明确,内聚性强,职责单一的微小部分,以服务形式对外提供,从而将原来的复杂大系统…

SpringBoot 通过@Profile注解配置多环境

参考资料 Springboot中的Profile注解 目录 一. 使用场景二. 前期准备三. Profile注解作用于类上3.1 配置类3.2 效果 四. Profile注解作用于方法上4.1 定义一个生产环境的注解4.2 配置类4.3 效果 一. 使用场景 在Spring中,可以使用配置文件的方式来指定不同环境下所…

让AI写今年高考作文,满分60你给AI打多少分呢?

随着高考的落幕,各地高考作文已成为我们讨论的话题。 下面是2023年全国甲卷作文题目 我们就让AI根据要求,写上两篇作文。作文标题也是AI起的 一 、① 标题:与时间赛跑,不为时间所困 ​ 时间,这位无情的审判长&#…