| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 一文看懂YOLO v5 -> 正文阅读 |
|
[人工智能]一文看懂YOLO v5 |
YOLOv5在比赛与落地中运用广泛,它可以通过chaneel与layer的控制因子来根据落地要求灵活配置模型。与YOLO系列1-4不同的是YOLOv5对正样本的定义:其采用了跨领域网格,并在不同输出层匹配,极大的扩增了正样本anchor,加速模型收敛速度并提高模型召回率。为了大家更好的理解并使用yolov5,本文将结合代码从不同维度进行分析。 网络结构
YOLOv5的结构如下: Focus Neck YOLOv5引入了depth_multiple和width_multiple系数来得到不同大小模型: 模型输入端1.Mosaic数据增强 Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。我们知道目标检测难点一直是对小目标的检测定位,主要原因是,第一,coco数据集中大中小目标占比不均衡,小目标的数量很多,但出现的频率却很低,这导致bp时对小目标的优化不足。第二,小目标本身检测难度就高于大目标,容易出现误检与漏检。 作者提出Mosaic,随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。与此同时,Mosaic可以减少GPU的投入,使得小的bachsize也能训练出好的模型。 2.自适应anchor 3.自适应图片缩放(letterbox) 做法比较简单,用缩放后的长边减去短边,用此值去对32取余,就得到padding。 LOSSYOLOV5分类分支采用的loss是BCE,conf分支也是BCE,当然可以通过h[‘fl_gamma’]参数开启focal Loss,默认配置没有采用focal los,而bbox分支采用的是Giou loss。 YOLOv5中最有亮点的改变是对正样本的定义。在yolov3中,其正样本区域也就是anchor匹配策略非常粗暴:保证每个gt bbox一定有一个唯一的anchor进行对应,匹配规则就是IOU最大,并且某个gt一定不可能在三个预测层的某几层上同时进行匹配。然而,我们从FCOS等论文中了解到,增加高质量的正样本anchor能够加速模型收敛并提高召回。因此,YOLOv5对此做出了改进,提出匹配规则: (1) 采用shape匹配规则,分别将ground truth的宽高与anchor的宽高求比值,如果宽高比例小于设定阈值,则说明该GT和anchor匹配,将该anchor认定为正样本。否则,该anchor被滤掉,不参与bbox与分类计算。 (2) 将GT的中心最邻近网格也作为正样本anchor的参考点。因此,bbox的xy回归分支的取值范围不再是0-1,而是-0.5-1.5(0.5是网格中心偏移),因为跨网格预测了。 代码分析下面我们参考代码,具体看一下YOLOV5是如何改进的。 build_targets函数用于计算loss函数所需要的target(正样本anchor)。其大概流程为:
gain = torch.ones(7, device=targets.device),gain是输出的channel数,包含image,class,x,y,w,h,conf。 targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices将target复制3编,即每层anchor个数为3,target可以与每一层的3个不同size的anchor进行匹配。off是坐标的偏移,中心点以及上下左右4个分支。
将targets归一化的xywh还原到特征图尺寸,方便与anchor(特征图尺寸)进行比较,从而,将宽高比低于self.hyp[‘anchor_t’]=4的anchor滤出。j,k与l,m选出最近的两个中心点。t = t.repeat((5, 1, 1))[j]在5个点中选择其中的3个作为中心点。
由于其采用了跨网格预测, pxy = ps[:, :2].sigmoid() * 2. - 0.5,故xy预测输出不再是0-1,而是-1~1,加上offset偏移,则为-0.5-1.5;pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i]由于shape过滤规则,wh预测输出也不再是任意范围,而是0-4。
为了缓解低质量正样本对模型性能的影响,作者对置信度做出了改进。原本正样本对用的conf label是1,但是低质量的正样本由于IOU小,不应该将其置信度理解为1,他们应对应比1小的conf label。因此,作者将IOU作为系数与gr相乘重新获取conf label。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/12 0:43:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |