目标检测——YOLOv7算法解读

论文:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (2022.7.6)
作者:Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao
链接:https://arxiv.org/abs/2207.02696
代码:https://github.com/WongKinYiu/yolov7


YOLO系列算法解读:
YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算法解读、YOLOv7算法解读

PP-YOLO系列算法解读:
PP-YOLO算法解读、PP-YOLOv2算法解读、PP-PicoDet算法解读、PP-YOLOE算法解读、PP-YOLOE-R算法解读


文章目录

  • 1、算法概述
  • 2、YOLOv7细节
    • 2.1 YOLOv7的网络结构改进
    • 2.2 赠品礼包(bag-of-freebies)
  • 3、实验


1、算法概述

YOLOv7是YOLOv4和YOLOR同一个作者,一个有趣的现象,按照arxiv上显示的时间,YOLOv7发布的时间比YOLOv6更早,难道是美团研发团队先向YOLO原作者拿到了v6这个序号版权吗?YOLOv7和YOLOv6优化的方式大致相同,都是结合重参数化对网络结构进行改进,相比于YOLOv6在自蒸馏和量化方面做优化,YOLOv7在网络结构方面做了更多的探索,也提出了训练方法的优化。这些模块和优化方法可以在不增加推理成本的情况下,增强训练成本以提高目标检测的准确性。
YOLOv7的贡献如下:
1、设计了几种可训练的bag-of-freebies,使实时检测器可以在不提高推理成本的情况下大大提高检测精度;
2、对于目标检测的发展,作者发现了两个新的问题,即模块重参化如何高效替代原始模块,以及动态标签分配策略如何处理好不同输出层的分配。作者针对这两个问题提出了方法进行解决。
3、作者为实时检测器提出了“扩展”和“复合缩放”(extend” and “compound scaling”)方法,可以更加高效地利用参数和计算量,同时,作者提出的方法可以有效地减少实时检测器40%的参数和50%的计算量,并且具备更快的推理速度和更高的检测精度。
在这里插入图片描述


2、YOLOv7细节

YOLOv7网络结构如下所示,图片来自[1]
在这里插入图片描述

2.1 YOLOv7的网络结构改进

扩展高效层聚合网络(E-ELAN, Extended efficient layer aggregation network)
ELAN结构通过控制最短最长的梯度路径,允许深度模型更有效地学习和收敛。YOLOv7基于ELAN结构提出的E-ELAN适用于具有无限堆叠计算块的模型。E-ELAN通过打乱和合并(shuffling and merging)基数来结合不同groups的特征,在不破坏原有梯度路径的情况下增强网络的学习能力。
在这里插入图片描述

基于连接的模型的模型缩放
模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要。例如:Efficientnet系列,通过同时调整宽度、深度和分辨率得到b0到b7版本。YOLOv7的网络结构是基于串联的结构,其中标准缩放技术(如深度缩放)会导致过渡层的输入通道和输出通道之间的比率变化,从而导致模型的硬件使用减少。比如:串联结构网络中深度增加同时也会导致网络宽度增加,如下图a、b;YOLOv7提出了一种新的基于串联的模型缩放策略,该策略将块的深度和宽度以相同的因子进行缩放,以保持模型的最优结构。如下图c所示
在这里插入图片描述

2.2 赠品礼包(bag-of-freebies)

卷积重参数化
尽管RepConv在VGG上取得了优异的性能,但将它直接应用于ResNet和DenseNet或其他网络架构时,它的精度会显著降低。作者使用梯度传播路径来分析不同的重参化模块应该和哪些网络搭配使用。通过分析RepConv与不同架构的组合以及产生的性能,作者发现RepConv中的identity破坏了ResNet中的残差结构和DenseNet中的跨层连接,这为不同的特征图提供了梯度的多样性。基于这个原因,作者使用没有identity连接的RepConv结构。下图显示了作者在PlainNet和ResNet中使用的“计划型重参化卷积”的一个示例。
在这里插入图片描述

辅助训练模块
使用引导头(lead head)预测作为指导来生成由粗到细的层次标签,这些标签分别用于辅助头(auxiliary head)和引导头的学习。其结构如下:
在这里插入图片描述
引导头指导的标签分配器主要是根据引导头的预测结果和gt真实框进行计算,并通过优化过程生成软标签。这些软标签将作为辅助头和引导头的目标训练模型。这点可以被看作是一种广义残差学习。通过让较浅的辅助头直接学习引导头已经学习过的信息,引导头将更能专注于学习尚未学习的剩余信息。

其他bag-of-freebies
Batch normalization in conv-bn-activation:目的是在推理阶段将批归一化的均值和方差整合到卷积层的偏差和权重中。
Implicit knowledge:YOLOR中的隐式知识可以在推理阶段将计算值简化为向量。这个向量可以与前一层或后一层卷积层的偏差和权重相结合。
Exponential moving average:作者使用 EMA 模型作为最终的推理模型。


3、实验

实验设置
所有的实验都没有使用预训练的模型,用COCO2017训练集训练,用其验证集选择最佳模型,用COCO2017测试集评估模型性能。作者针对边缘端GPU、normal GPU和云端GPU分别设计了三种模型YOLOv7-tiny、YOLOv7和YOLOv7-W6。同时,我们还利用基本模型对不同的业务需求进行模型缩放,得到不同类型的模型。例如,通过对YOLOv7的neck部分缩放得到YOLOv7-X;对YOLOv7-W6进行缩放得到YOLOv7-E6和YOLOv7-D6。

BaseLines模型比较,以YOLOv4和YOLOR模型为基准进行比较
在这里插入图片描述

与现如今其他检测算法对比
在这里插入图片描述

消融实验:略

参考文献:
[1] Terven J, Cordova-Esparza D. A comprehensive review of YOLO: From YOLOv1 and beyond. arXiv 2023[J]. arXiv preprint arXiv:2304.00501

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bayes判别示例数据:鸢尾花数据集

使用Bayes判别的R语言实例通常涉及使用朴素贝叶斯分类器。朴素贝叶斯分类器是一种简单的概率分类器,基于贝叶斯定理和特征之间的独立性假设。在R中,我们可以使用e1071包中的naiveBayes函数来实现这一算法。下面,我将通过一个简单的示例展示如…

vue 实现左侧导航栏,右侧锚点定位滚动到指定位置(超简单方法)

项目截图: 实现方法: 点击左侧菜单根据元素id定位到可视内容区域。 浏览器原生提供了一种方法scrollIntoView 。 通过scrollIntoView方法可以把元素滚动到可视区域内。 behavior: "smooth"是指定滚动方式为平滑效果。 具体代码如下&#xf…

Flink CDC详解

文章目录 Flink CDC一 CDC简介1.1 CDC定义1.2 CDC应用场景1.3 CDC实现机制1.4 开源CDC工具对比 二 Flink CDC简介2.1 Flink CDC介绍2.2 Flink CDC Connector(连接器)2.3 Flink CDC && Flink版本2.4 Flink CDC特点 三 Flink CDC发展3.1 发展历程3.2 背景Dynamic Table &…

微软发布Phi-3 Mini,性能媲美GPT-3.5、Llama-3,可在手机端运行

前言 微软发布了最新版的Phi系列小型语言模型(SLM) - Phi-3。这个系列包括3个不同参数规模的版本:Phi-3 Mini (38亿参数)、Phi-3 Small (70亿参数)和Phi-3 Medium (140亿参数)。 Phi系列模型是微软研究团队开发的小规模参数语言模型。从第一代Phi-1到第二代Phi-2&…

深度学习中的熵、交叉熵、相对熵(KL散度)、极大释然估计之间的联系与区别

熵的最初来源于热力学。在热力学中,熵代表了系统的无序程度或混乱程度,也可以理解为系统的热力学状态的一种度量。后来被广泛引用于各个领域中,如信息学、统计学、AI等,甚至社会学当中。接下来将大家领略一下深度学习中熵的应用。…

【高阶数据结构】B树 {B树的概念;B树的实现:节点设计,查找,插入,遍历,删除;B树的性能分析;B+树和B*树;B树的应用}

一、常见的搜索结构 以上结构适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景。如果数据量很大,比如有100G数据,无法一次放进内存中,那就只能放在磁盘上了,如果放在磁盘上&#xff…

短视频素材哪里有?8个视频素材免费下载素材库无水印

在这个视觉内容至关重要的时代,每一位视频创作者都需要接触到多样化和高质量的视频素材,以提升作品的吸引力和专业度。以下这些视频素材网站将为你提供从全球各地收集的丰富资源。 1. 蛙学府(中国) 着重提供有关中国文化和场景的…

黑盒优化系列(一):自动化提示词优化【一、绪论】

大语言模型的提示词 随着ChatGPT等大语言模型的问世,我们获取知识的方式从单一的搜索引擎如Google转变为类似ChatGPT这种通过 Q & A 方式提供的方法。 我们尝试对比一下不同提示词,对应的模型输出 ChatGPT无提示词 API: ChatGPT 3.5 …

牛客NC216 逆波兰表达式求值【中等 栈 C++/Java/Go/PHP】

题目 题目链接:https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382 核心 栈 参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** param tokens strin…

STM32中的PWM

一、介绍 二、制作一个呼吸灯的效果(使用PWM) 原理是中心对齐的方式 学会分析复用管脚(根据手册) 配置 更正:是 最后一个输出的模式 最后生成代码 三、代码 要修改的业务代码 改代码,实现呼吸灯

「ChatGPT」掀起新一轮AI热潮!超越GPT-4 Turbo,商汤日日新大升级!

目录 拳打 GPT-4 Turbo ,脚踢 DALLE 3 端侧大模型,唯快不破 AI 应用落地需要一个即插即用的大模型超市 并不存在 AI 这个行业,只有 AI行业,强调 AI 需要与传统产业合作,这种关系是结合与赋能,而不是颠覆…

网络安全-Diffie Hellman密钥协商

密钥协商是保密通信双方(或更多方)通过公开信道来共同形成密钥的过程。一个密钥协商方案中,密钥的值是某个函数值,其输入量由两个成员(或更多方)来提供。密钥协商的记过是参与协商的双方(或更多…

政安晨:【Keras机器学习示例演绎】(十五)—— 用于图像分类的 CutMix 数据增强技术

目录 简介 设置 加载 CIFAR-10 数据集 定义超参数 定义图像预处理函数 将数据转换为 TensorFlow 数据集对象 定义 CutMix 数据增强功能 可视化应用 CutMix 扩增后的新数据集 定义 ResNet-20 模型 使用经 CutMix 扩展的数据集训练模型 使用原始非增强数据集训练模型 …

nginx 配置 SSL 证书实现 https 访问

nginx 配置SSL证书实现https访问 1. SSL 证书简介与获取1.1 SSL 证书介绍1.2 获取 SSL 证书 2. nginx 配置 SSL 文件2.1 SSL 文件放置与配置文件修改2.1.1 文件配置2.1.2 强制 https 访问 2.2 验证配置结果 同步发布在个人笔记 nginx 配置 SSL 证书实现 https 访问 配置好 ngi…

Powershell 一键安装 virtio_qemu_agent

前言 qemu-guest-agent qemu-guest-agent是一个助手守护进程,安装在客户机中。它用于在主机和客户端之间交换信息,并在客户端执行命令。 在Proxmox VE中,qemu-guest-agent主要用于三件事: 正确关闭客户机,而不是依赖于ACPI命令或windows策略在进行备份/快照时冻结客户机…

20240309web前端_第四次作业_完成随机点名程序

要求 一、结合抽奖案例完成随机点名程序,要求如下: 1.点击点名按钮,名字界面随机显示,按钮文字由点名变为停止 2.再次点击点名按钮,显示当前被点名学生姓名,按钮文字由停止变为点名 3.样式请参考css及html自由发挥完成…

flutter ios Firebase 消息通知错误 I-COR000005,I-FCM001000 解决

*前提是已经 使用firebase-tools 已经给 Flutter 加入了 消息通知相关配置。教程>> 一、I-COR000005 10.22.0 - [FirebaseCore][I-COR000005] No app has been configured yet. import Firebase....FirebaseApp.configure() 10.22.0 - [FirebaseMessaging][I-FCM001000…

kubernetes中Pod调度-Taints污点和污点容忍

一、污点的概念 所谓的污点,是给k8s集群中的节点设置的,通过设置污点,来规划资源创建是所在的节点 污点的类型 解释说明PreferNoshedule 节点设置这个污点类型后; 表示,该节点接收调度,但是会降低调度的概…

hbase 集成 phoenix 实现 sql 化

1. 依赖 hbase > hbase 集群搭建 2. 下载安装包 点击下载 ps:该网页在内网可能打不开,遇到该情况有条件的可以打开 VPN 在下载 3. 上传解压 使用工具将安装包上传的服务器上 笔者这里选择 上传到 /opt/software 目录,解压到 /opt/mo…

基于STM32和阿里云的智能台灯(STM32+ESP8266+MQTT+阿里云+语音模块)

一、主要完成功能 1、冷光模式和暖光模式两种灯光 主要支持冷光和暖光模式两种,可以通过语音模块或手机app远程切换冷暖光 2、自动模式和手动模式 主要支持手动模式和自动两种模式(app或语音助手切换) (1)自动模式:根据环境光照…