YOLOv6 学习笔记

这篇具有很好参考价值的文章主要介绍了YOLOv6 学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概况

yolov6 出来的时候 yolov7 已经出了。
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

YOLOv6设计主要包含以下几个方面:

  • 网络架构设计:对于Backbone和Neck,延续了YOLOv4和YOLOv5的PAN架构思想并使用了重参思想进行了改进;关于Head部分,作者对Decoupled Head进行了简化并将其命名为Efficient Decouple Head(EDH)
  • 标签匹配:对TaskAlign、SimOTA、ObjectBox以及ATSS等进行了评估,最终确认TaskAlign更为有效且训练友好;
  • 损失函数:损失函数一般包含cls loss、box-regression loss以及object loss。YOLOv6进行了系统性分析并最终选择VariFocal Loss作为分类损失,SIoU/GIoU作为回归损失;

REPVGG 重参思想

重参思想: ACNet, DBB, MobileOne

第一次出现多分支结构应该是在Inception中(如果不是,请各位指正),就获得了高性能收益,加上不同分支应用不同卷积核,能获得不同感受野,后续出现的ResNet,其残差结构也是多路结构。但是需要注意的是,多路结构需要保存中间结果,显存占有量会明显增高,只有到多路融合时,显存会会降低。这里如下图所示:
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记
同时,由ShuffleNet论文中提到的网络高效推理法则:模型分支越少,速度越快。所以,可想而知,多分支结果虽然会带来高性能收益,但是,显存占用明显增加,且模型推理速度会一定程度降低,这在工业场景上是不实用的

我们都知道VGG几乎都是由3×3卷积堆叠而成,而现在加速库,比如NVIDIA的cudNN,Intel的MKL和相关硬件对3×3的卷积核有非常好的性能优化,而在VGG中几乎都是3×3卷积。
因此,VGG利用现有加速库会得到更好的性能优化,从下表就就可以看出,在相同channels、input_size和batchsize条件下,不同卷积核的FLOPs和TFLOPs和用时,可以看出3×3卷积非常快。
在GPU上,3×3卷积的计算密度(理论运算量(Theoretical FLOPs/Time usage)除以所用时间)可达1×1和5×5卷积的4倍。

YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记
VGG是一个直筒性单路结构,由上述分析可知,单路结构会占有更少的内存,因为不需要保存其中间结果,同时,单路架构非常快,因为并行度高。同样的计算量,大而整的运算效率远超小而碎的运算。

多分支结构会引入网络结构的约束,比如Resnet的残差结构要求输入和卷积出来的张量维度要一致(这样才能相加),这种约束导致网络不易延伸拓展,也一定程度限制了通道剪枝。对应的单路结构就比较友好,非常容易改变各层的宽度,这样剪枝后也能得到很好的加速比。
RepVGG主体部分只有一种算子:3×3卷积+ReLU。在设计专用芯片时,给定芯片尺寸或造价,可以集成海量的3×3卷积-ReLU来达到高效率。此外单路架构的省内存特性也可以帮降低存储单元。
综上所述,提出了RepVGG结构,如图所示:
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

对应论文中从Step1到Step2的变换过程,涉及conv于BN层融合,1×1卷积与identity转化为等价的3×3卷积的形式;
结构重参化的最后一步也就是上图中Step2 => Step3, 这一步就是利用卷积可加性原理,将3个分支的卷积层和bias对应相加组成最终一个3×3卷积的形式即可。
这里,大家可能既然把BN、identity、1×1卷积和conv_3×3都融合在一起了,为什么不干脆把ReLU也融合进去呢?其实也是可以将ReLU层进行融合的,但是需要进行量化,conv输出tensor的值域直接使用relu输出的值阈,就可以完成conv和relu合并。无量化动作的优化是无法完成conv+relu的合并。
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记 YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

整体架构改进

网络架构设计:
在Backbone方面,YOLOv6在小规模模型(n/t/s模型)采用RepBlock进行构建;对于大规模模型(m/l模型)采用CSPStackRepBlock进行构建;
在Neck方面,YOLOv6延续了YOLOv4与YOLOv5的设计思想,依旧使用的是PAN-FPN架构,同时采用RepBlock(n/t/s模型)与CSPStackRepBlock(m/l模型)进行特征的增强;
在Head方面,对Decoupled Head进行改进,最终使用Efficient Decouple Head;
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

正负样本匹配

anchor-free 的机制,和之前的 yolo 比较不一样。

yolo v6 有三个版本
第一版本是 SimOTA
第二版本是 TaskAlign; 论文发布基于2.0.
第三版本 加入 anchor base 辅助收敛的情况。

TaskAligned样本匹配

标签分配是目标检测非常重要的一环,SimOTA 作为OTA 的一个简化版本在YOLOX中被提出,SimOTA 减少了额外的超参数并保持了性能。在YOLOv6的早期版本中使用了SimOTA作为标签分配方法。然而,在实践中发现引入SimOTA会减慢训练过程。同时可能会使训练陷入不稳定。因此,YOLOv6 2.0 版本找到了一个替代SimOTA的匹配方法,TaskAlign。

YOLOv6实验发现,相比SimOTA,TaskAlign可以带来更多的性能提升,同时有助训练稳定性。
任务对齐学习(TAL)首次在TOOD中提出,其中设计了分类得分和bbox质量的统一度量。IoU被此度量替换以分配对象标签。在一定程度上,任务不一致的问题(分类和bbox)得到了缓解。
TOOD的另一个主要贡献是关于任务对齐头(T-head)。T-head堆叠卷积层以构建交互特征,在T-head上使用任务对齐预测器(TAP)。PP-YOLOE通过用ESE Attention取代T-head中的Layer Attention,从而改进了T-head,形成ET-head。
然而,ET-head会降低模型推理速度,并且不会带来精度增益。因此,保留了高效Decoupled Head设计。

YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

损失函数

VFL loss 分类损失函数

引入非对称的加权操作,对正样本只是普通的 BCE 加一个自适应的 IoU 加权。对负样本是标准的 Focal Loss.
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

DFL 损失函数 Distribution Focal Loss

主要是将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布。
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记

SIoU 损失

近年来,常用的边界框回归损失函数包括IoU、GIoU、CIoU、DIoU loss等等,这些损失函数通过考虑预测框与目标框之前的重叠程度、中心点距离、纵横比等因素来衡量两者之间的差距,从而指导网络最小化损失以提升回归精度,但是这些方法都没有考虑到预测框与目标框之间方向的匹配性。
SIoU 损失函数通过引入了所需回归之间的向量角度,重新定义了距离损失,有效降低了回归的自由度,加快了网络模型的收敛,并且在小规模模型(n/t/s模型)上可以一定程度上提升精度。
通过在 YOLOv6s 上采用 SIoU loss 进行实验,对比 CIoU loss,平均检测精度提升 0.3% AP。
因此,YOLOv6对小模型采用SIoU损失,大模型采用GIoU损失。
YOLOv6 学习笔记,yolo,计算机视觉,YOLO,学习,笔记文章来源地址https://www.toymoban.com/news/detail-825696.html

到了这里,关于YOLOv6 学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计:基于机器学习的硬币检测识别系统 人工智能 YOLO 计算机视觉

    目录 前言 课题背景和意义 实现技术思路 一、 硬币检测方法 1.1 规格、变形监测 1.2 变色检测 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为

    2024年02月20日
    浏览(75)
  • 毕业设计选题:基于深度学习的舌头分割系统 人工智能 YOLO 计算机视觉

    目录 前言 课题背景和意义 实现技术思路 一、 算法理论基础 1.1 Snake模型  1.2 几何约束  1.3 切片重组 二、 数据集 三、实验及结果分析 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。

    2024年02月19日
    浏览(130)
  • 毕业设计选题 基于深度学习的人流量预测系统 人工智能 YOLO 计算机视觉

    目录  前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 卷积神经网络 2.2 注意力机制 三、检测的实现 3.1 数据处理 3.2 实验环境搭建 3.3 实验及结果分析 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要

    2024年01月19日
    浏览(74)
  • 毕业设计选题:基于机器学习的票据表格分割识别系统 人工智能 YOLO 计算机视觉

    目录 前言 课题背景和意义 实现技术思路 一、 算法理论基础 1.1 卷积神经网络 1.3 EM算法 二、实验及结果分析 2.1 数据处理 2.2 模型训练 3.2 结果分析 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗

    2024年02月22日
    浏览(75)
  • 毕业设计:基于深度学习的绝缘子缺陷检测系统 人工智能 YOLO 计算机视觉

    目录 前言 一、课题背景与意义 二、设计思路 2.1.多尺度特征融合 2.2 绝缘子缺陷检测 三、模型训练 3.1 实验环境 3.2 结果分析 最后 前言  📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各

    2024年01月18日
    浏览(122)
  • 毕业设计选题-计算机视觉:复杂场景下的车牌识别系统 人工智能 深度学习 YOLO

    目录 前言 项目背景与简介 主要设计思路 一、算法理论技术 1.1 神经网络基础 1.2 深度神经网络 1.3 目标检测 二、数据处理 2.1 数据采集 三、实现的效果 更多帮助     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设

    2024年02月03日
    浏览(91)
  • 毕业设计:基于机器学习的高压线障碍物识别系统 人工智能 YOLO 计算机视觉

    目录 前言 课题背景和意义 实现技术思路 一、障碍物检测方法 1.1 障碍物识别算法 1.2 Adaboost算法 1.3 支持向量机 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学

    2024年02月21日
    浏览(54)
  • 【学习笔记】计算机视觉深度学习网络模型

    这是本人学习计算机视觉CV领域深度学习模型的学习的一点点学习笔记,很多片子没有完成,可以作为学习的参考~

    2024年04月10日
    浏览(68)
  • 【计算机视觉面经四】基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)

    目标检测算法主要包括:【两阶段】目标检测算法、【多阶段】目标检测算法、【单阶段】目标检测算法。 什么是两阶段目标检测算法,与单阶段目标检测有什么区别? 两阶段目标检测算法因需要进行两阶段的处理:1)候选区域的获取,2)候选区域分类和回归,也称为基于

    2024年03月27日
    浏览(58)
  • 计算机视觉注意力机制小盘一波 (学习笔记)

    将注意力的阶段大改分成了4个阶段 1.将深度神经网络与注意力机制相结合,代表性方法为RAM ⒉.明确预测判别性输入特征,代表性方法为STN 3.隐性且自适应地预测潜在的关键特征,代表方法为SENet 4.自注意力机制 在深度神经网络中,每个卷积层通常包含多个通道, 每个通道对

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包