| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> yolov5 原理解析 -> 正文阅读 |
|
[人工智能]yolov5 原理解析 |
1、 网络结构关于YOLOv5的网络结构其实网上相关的讲解已经有很多了。网络结构主要由以下几部分组成:
激活函数 ????????通过和上篇博文讲的YOLOv4对比,其实YOLOv5在Backbone部分没太大变化。但是YOLOv5在v6.0版本后相比之前版本有一个很小的改动,把网络的第一层(原来是Focus模块)换成了一个6x6大小的卷积层。两者在理论上其实等价的,但是对于现有的一些GPU设备(以及相应的优化算法)使用6x6大小的卷积层比使用Focus模块更加高效。下图是原来的Focus模块(和之前Swin Transformer中的Patch Merging类似),将每个2x2的相邻像素划分为一个patch,然后将每个patch中相同位置(同一颜色)像素给拼在一起就得到了4个feature map,然后在接上一个3x3大小的卷积层。这和直接使用一个6x6大小的卷积层等效。 ?2、Neck部分? ? ? ?在Neck部分的变化还是相对较大的,首先是将SPP换成成了SPPF(Glenn Jocher自己设计的),这个改动我个人觉得还是很有意思的,两者的作用是一样的,但后者效率更高。SPP结构如下图所示,是将输入并行通过多个不同大小的MaxPool,然后做进一步融合,能在一定程度上解决目标多尺度问题。 ? ? ? ??而 ? ? ? ??在Neck部分另外一个不同点就是New CSP-PAN了,在YOLOv4中,Neck的PAN结构是没有引入CSP结构的,但在YOLOv5中作者在PAN结构中加入了CSP。详情见上面的网络结构图,每个C3模块里都含有CSP结构。在Head部分,YOLOv3, v4, v5都是一样的,这里就不讲了。 ?3、损失计算YOLOv5的损失主要由三个部分组成:
? 其中,为平衡系数。 ? ? ? ?针对三个预测特征层(P3, P4, P5)上的obj损失采用不同的权重。在源码中,针对预测小目标的预测特征层(P3)采用的权重是4.0,针对预测中等目标的预测特征层(P4)采用的权重是1.0,针对预测大目标的预测特征层(P5)采用的权重是0.4,作者说这是针对COCO数据集设置的超参数。 4、消除Grid敏感度? ? ??YOLOv4中有提到过,主要是调整预测目标中心点相对Grid网格的左上角偏移量。下图是YOLOv2,v3的计算公式。 ? 其中:
关于预测目标中心点相对Grid网格左上角偏移量为,?。YOLOv4的作者认为这样做不太合理,比如当真实目标中心点非常靠近网格的左上角点,? 应该趋近与0)或者右下角点?,?应该趋近与1)时,网络的预测值需要负无穷或者正无穷时才能取到,而这种很极端的值网络一般无法达到。为了解决这个问题,作者对偏移量进行了缩放从原来的( 0 , 1 ) 缩放到( ? 0.5 , 1.5 )这样网络预测的偏移量就能很方便达到0或1,故最终预测的目标中心点 , 的计算公式为: 下图是我绘制的对应before曲线和对应after曲线,很明显通过引入缩放系数scale以后,y对x更敏感了,且偏移的范围由原来的( 0 , 1 )调整到了( ? 0.5 , 1.5 ) 。 ?在YOLOv5中除了调整预测Anchor相对Grid网格左上角偏移量以外,还调整了预测目标高宽的计算公式,之前是: ?在YOLOv5调整为: ?原来的计算公式并没有对预测目标宽高做限制,这样可能出现梯度爆炸,训练不稳定等问题。下图是修改前??和修改后?(相对Anchor宽高的倍率因子)的变化曲线, 很明显调整后倍率因子被限制在( 0 , 4 )之间。 5、?匹配正样本(Build Targets)? ? ? ?之前在YOLOv4介绍中有讲过该部分内容,其实YOLOv5也差不多。主要的区别在于GT Box与Anchor Templates模板的匹配方式。在YOLOv4中是直接将每个GT Box与对应的Anchor Templates模板计算IoU,只要IoU大于设定的阈值就算匹配成功。但在YOLOv5中,作者先去计算每个GT Box与对应的Anchor Templates模板的高宽比例,即: ?然后统计这些比例和它们倒数之间的最大值,这里可以理解成计算 ?接着统计 和 之间的最大值,即宽度和高度方向差异最大的值: ? ? ? 如果GT Box和对应的Anchor Template的小于阈值anchor_t(在源码中默认设置为4.0),即GT Box和对应的Anchor Template的高、宽比例相差不算太大,则将GT Box分配给该Anchor Template模板。为了方便大家理解,可以看下我画的图。假设对某个GT Box而言,其实只要GT Box满足在某个Anchor Template宽和高的×0.25倍和×4.0倍之间就算匹配成功。匹配方式如下图所示,其中黑色虚线框表示缩放过的anchor。 ?剩下的步骤和YOLOv4中一致:
? 还需要注意的是,YOLOv5源码中扩展Cell时只会往上、下、左、右四个方向扩展,不会往左上、右上、左下、右下方向扩展。下面又给出了一些根据,??的位置扩展的一些Cell案例,其中%1表示取余并保留小数部分。 跨预测分支匹配正样本:yolov5一共有三个预测分支,假设一个ground truth框可以和2个甚至3个预测分支上的anchor匹配,则这2个或3个预测分支都可以预测该ground truth框,即一个ground truth框可以由多个预测分支来预测。 为了扩充正样本个数一共采用了以下方案:
?6、数据增强在YOLOv5代码里,关于数据增强策略还是挺多的,这里简单罗列部分方法:
?
?
?
?
? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:54:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |