当前位置: 首页 > news >正文

目标检测——YOLOR算法解读

论文:YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks
作者:Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao
链接:https://arxiv.org/abs/2105.04206
代码:https://github.com/WongKinYiu/yolor


YOLO系列算法解读:

  • YOLOv1通俗易懂版解读
  • SSD算法解读
  • YOLOv2算法解读
  • YOLOv3算法解读
  • YOLOv4算法解读
  • YOLOv5算法解读
  • YOLOR算法解读
  • YOLOX算法解读

PP-YOLO系列算法解读:

  • PP-YOLO算法解读
  • PP-YOLOv2算法解读
  • PP-PicoDet算法解读
  • PP-YOLOE算法解读
  • PP-YOLOE-R算法解读

文章目录

  • 1、算法概述
  • 2、YOLOR细节
    • 2.1 隐性知识如何工作
    • 2.2 统一网络的隐性知识
  • 3、实验结果
    • 3.1 实验设置
    • 3.2 FPN特征对齐消融实验
    • 3.3 目标检测预测细化消融实验
    • 3.4 多任务规范表征消融实验
    • 3.5 隐式知识建模不同算子比较
    • 3.6 隐式知识提升目标检测


1、算法概述

人类可以通过视觉、听觉、触觉以及过去的经验来“理解”世界。经验可以通过正常学习(作者称之为显性知识),也可以通过潜意识(作者称之为隐性知识)来学习。即对于一段数据,人类可以从显性知识中直接学习到它,也可以从大脑中以前的经验(潜意识)中推导分析它。然而,经过训练的卷积神经网络(CNN)模型通常只能实现一个目标,即直接从数据中学习。一般来说,从训练过的CNN中提取出来的特征通常对其他类型的问题适应性较差。造成上述问题的主要原因是我们只从神经元中提取特征,而没有利用CNN中丰富的隐性知识。在真实人脑运行时,上述隐性知识可以有效地辅助大脑完成各种任务,如下图所示:
图1
隐性知识是指在潜意识中学习到的知识。然而,对于隐性学习如何运作以及如何获得隐性知识,目前还没有一个系统的定义。在神经网络的一般定义中,从浅层获得的特征通常称为显性知识,从深层获得的特征称为隐性知识。论文中将与观测数据(网络输入)直接对应的知识称为显性知识。对于模型中隐含的与观测无关的知识,我们称之为隐性知识。
作者提出了一个统一的网络来整合隐性知识和显性知识,使学习模型包含一个通用的表示,这个通用的表示使得子表示适合于各种任务。图2©说明了该统一网络体系结构。本文构建统一网络的方法是将压缩感知和深度学习结合起来。
图2
借鉴知乎@算法小乔画的YOLOR网络结构图,可以看到作者主要在输出层OutProcess中增加了两个隐性知识向量shift-Channels和Control-Channels,这里的隐性知识向量,就是单独初始化一个向量shape为[1,C,1,1], 其中C与前一层的输出outchannels一致,有点类似于通道注意力的意思,然后在训练过程中,参数随着训练优化更新。shift-Channels将隐性知识向量与前一层的特征通过相加Add的方式进行融合;Control-Channels将隐性知识向量与前一层的特征通过相乘Mul的方式进行融合。
YOLOR网络结构图


2、YOLOR细节

2.1 隐性知识如何工作

本文的主要目的是建立一个能够有效训练隐性知识的统一网络,因此在后续的研究中,我们首先将重点放在如何训练隐性知识和快速推理上。由于隐性表示zi与观测无关,我们可以把它看作一组常数张量Z={z1,z2,⋯,zk}。在本节中,我们将介绍作为常量张量的隐性知识如何应用于各种任务。

  • 多维空间降维
    在这里插入图片描述
    一个好的表征应该能够在它所属的多维空间中找到一个合适的投影,并有助于后续目标任务的顺利完成。例如,如图3所示,如果目标类别可以通过投影空间中的超平面成功分类,那将是最好的结果。在上面的例子中,我们可以利用投影向量的内积和隐式表示来达到降低流形空间维数的目的,有效地完成各种任务。
  • 内核空间对齐
    在这里插入图片描述
    在多任务和多头神经网络中,核空间失调是一个常见的问题,图4(a)举例说明了多任务和多头神经网络中的核空间失调。为了解决这个问题,我们可以对输出特征和隐式表示进行加法和乘法,这样就可以对核空间进行平移、旋转和缩放,以对齐神经网络的每个输出核空间,如图4(b)所示。上述操作模式可广泛应用于不同领域,如特征金字塔网络(FPN)中大目标与小目标的特征对齐、利用知识蒸馏来对齐大模型与小模型、零样本迁移等问题。
  • 更多的功能
    在这里插入图片描述
    除了可以应用于不同任务的功能外,隐性知识还可以扩展为更多的功能。如图5所示,通过引入加法,可以使神经网络预测中心坐标的偏移量。还可以引入乘法来自动搜索锚点的超参数集,这是基于anchor的目标检测经常需要的。此外,点乘法和串联可分别用于执行多任务特征选择和为后续计算设置前提条件。

2.2 统一网络的隐性知识

在本节中,我们将比较传统网络和提出的统一网络的目标函数,并解释为什么引入隐性知识对训练多用途网络很重要。同时,我们还将详细阐述本文提出的方法。

  • 卷积网络
    对于卷积网络的目标函数,如下:
    在这里插入图片描述
    其中x是观测量,即网络的输入,θ代表卷积网络的参数集,fθ(.)代表卷积网络运行;卷积网络训练,即最小化误差ε,使输入x经过卷积网络尽可能贴近真实数据y。
    在这里插入图片描述
    如图6(a)所示,我们需要对同一标注有不同的样本,以获取数据的丰富性。换句话说,我们期望得到的解空间仅对当前任务ti是有区别的,而对各种除ti以外的潜在任务是不变的,其中T={t1,⋯,tn}。
    对于一般用途的神经网络,我们希望所得到的表示能服务于T。因此,我们需要放松ε,以便在流形空间上同时找到每个任务的解,如图6(b)所示。然而,上述要求使得我们不可能用简单的数学方法,如一个one-hot向量的最大值或欧氏距离的阈值来求解ti。为了解决这个问题,我们必须对错误项ε进行建模,以便为不同的任务找到解决方案,如图6( c)所示。
  • 统一网络
    为了训练所提出的统一网络,我们将显性知识和隐性知识结合起来对误差项进行建模,然后用它来指导多用途网络的训练过程。相应的训练公式如下:
    在这里插入图片描述
    其中ϵex和ϵim是分别对观测值x和潜在编码z的显式误差和隐式误差进行建模的运算。gϕ这里是一个特定于任务的操作,用于从显性知识和隐性知识中组合或选择信息。
    已有的将显性知识整合到fθ(.)的方法,可以将(2)改写为(3)。
    在这里插入图片描述
    其中*表示了f和g之间的可能操作。可能是加法、乘法或者串联。
    如果我们把误差项的推导过程扩展到处理多个任务,我们可以得到如下公式:
    在这里插入图片描述
    其中,Z={z1,z2,⋯,zT}是不同任务的隐式编码,Φ是用于从Z生成隐性知识表示的参数,Ψ用于从显式表示和隐式表示的不同组合中计算最终输出参数。
    对于不同的任务 ,我们可以使用下面的公式获得预测:
    在这里插入图片描述
    对于所有的任务我们都从一个统一表示fθ(x),完成特定任务的隐式表示gϕ(z)开始,最后用任务识别器dΨ完成不同的任务。
  • 隐性知识的建模
    隐性知识可用如下方式建模:
    对于Vector/Matrix/Tensor,使用向量z直接作为隐性知识的先验,直接作为隐式表示。(z)
    对于Neural Network,使用向量z作为隐性知识的先验,然后使用权值矩阵进行线性组合或非线性化,从而成为隐式表示。(Wz)
    对于Matrix Factorization,使用多个向量作为隐性知识的先验,这些隐性先验由Z和系数c形成隐式表示。(ZTc)
  • Training
    如果模型一开始没有任何先验的隐性知识,也就是说,它不会对显式表征fθ(x)产生任何影响。那我们就直接初始化一个向量z即可,对于结合操作是相加或串连的,z服从N(0,σ),对于结合操作是乘法的,z服从N(1,σ),这里σ初始化的时候都是接近于0的。z和Φ都是在训练过程中遵循梯度反向传播算法进行优化的。
  • Inference
    因为隐性知识与观测量x无关,所以无论gϕ多么复杂,在推理过程之前都可以被简化为一组常数张量。

3、实验结果

3.1 实验设置

在这里插入图片描述
本文通过FPN中的feature alignment(特征对齐)、目标检测中的prediction refinement(预测细化)、单模型中的multi-task learning(多任务学习)来应用implicit knowledge(隐式知识)(注:本文的多任务学习指特征嵌入、多标签图像分类和目标检测)。使用YOLOV4-CSP作为baseline model,隐式知识添加位置如上图所示,所有训练超参数与Scaled-YOLOv4一致。

3.2 FPN特征对齐消融实验

使用简单的向量隐式表征和加法算子,在FPN的每一个特征映射层添加隐式知识进行特征对齐,各个指标均获得了提升,如表1所示。
在这里插入图片描述

3.3 目标检测预测细化消融实验

使用简单的向量隐式表征和加法算子,在YOLO的每一个输出层添加隐式知识进行预测细化,大部分指标都获得到了一定的增益,如表2所示。
在这里插入图片描述

3.4 多任务规范表征消融实验

当需要同时训练一个被多个任务共享的模型时,由于损失函数的联合优化过程是必须执行的,因此在执行过程中往往会出现多方相互拉动的情况,这种情况将导致最终的整体性能比单独训练多个模型然后集成它们要差。为了解决这个问题,作者提出为训练多任务训练一个规范的表征,通过给每个任务分支引入隐式表征增强表征能力,表3展示了使用简单的向量隐式表征和加法算子进行不同联合训练方式的结果,(检测和特征嵌入联合训练,引入加法隐式表征)取得了最好的对比结果。
在这里插入图片描述

3.5 隐式知识建模不同算子比较

在这里插入图片描述
表4显示了图10中不同算子融合显式表征与隐式表征的结果。
在特征对齐实验中,相加与串联(concat)操作能够提升性能表现,相乘有所下降。特征对齐的实验结果完全符合其物理特性,因为它必须处理全局偏移和所有单个簇的缩放。
在预测细化实验中,由于concat会增加输出维度,所以只比较相加与相乘的效果,在这里相乘的效果更好。这是由于中心偏移在执行预测时使用加法解码,而锚框尺度使用乘法解码,而中心坐标是以网格为界的,影响较小,但人工设置的锚框具有较大的优化空间,因此改进更为显著。
在这里插入图片描述

3.6 隐式知识提升目标检测

按照Scaled-YOLOv4训练过程,先从头训练 300 epochs,然后微调150 epochs,表8展示了目标检测中引入隐式知识的优势。表9与SOTA方法进行了比较,值得注意的是YOLOR并没有增加额外的数据和标注做训练,只通过引入隐式知识的统一网络,YOLOR不仅达到了足可以和SOTA方法比拟的结果,而且速度非常快。
在这里插入图片描述
在这里插入图片描述

相关文章:

目标检测——YOLOR算法解读

论文:YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks 作者:Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接:https://arxiv.org/abs/2105.04206 代码:https://github.com/WongKinYiu/yolo…...

NVIDIA NCCL 源码学习(十三)- IB SHARP

背景 之前我们看到了基于ring和tree的两种allreduce算法,对于ring allreduce,一块数据在reduce scatter阶段需要经过所有的rank,allgather阶段又需要经过所有rank;对于tree allreduce,一块数据数据在reduce阶段要上行…...

Spark-Scala语言实战(4)

在之前的文章中,我们学习了如何在scala中定义无参,带参以及匿名函数。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言…...

ffmpeg不常用命令整理

最近做了许多有关音视频方面的工作,接触了一些不常用的命令,整理分享出来。 1.剪辑视频 ffmpeg -ss 1 -to 4 -accurate_seek -i input.mp4 -c:v copy output.mp4指定从视频中的第1秒开始,到第4秒结束的部分剪辑。 ss:指定开始时…...

怎么理解面向对象?一文带你全面理解

文章目录 1、类和对象(1)面向过程和面向对象初步认识(2)类的引入(3)类的定义(4)类的访问限定符及封装4.1 访问限定符4.2 封装 (5)类的作用域(6&am…...

神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)

目录 一、神经网络简介 二、深度学习要解决的问题 三、深度学习的应用 四、计算机视觉 五、计算机视觉面临的挑战 六、得分函数 七、损失函数 八、前向传播 九、反向传播 十、神经元的个数对结果的影响 十一、正则化与激活函数 一、神经网络简介 神经网络是一种有监督…...

Tomcat的Host Manager页面403的原因和解决办法

目录 背景 原因: 解决方案 背景 一直报错 403 Access Denied You are not authorized to view this page.By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to…...

零基础学华为ip认证难吗?华为认证费用多少?

零基础学华为ip认证难吗? 首先,零基础的学习者可以通过系统的学习,逐步掌握网络基础知识和技能。可以通过阅读教材、参加培训课程、进行实践操作等方式,不断提升自己的知识和技能水平。同时,学习者还可以利用华为提供的…...

[C语言]——内存函数

目录 一.memcpy使用和模拟实现(内存拷贝) 二.memmove 使用和模拟实现 三.memset 函数的使用(内存设置) 四.memcmp 函数的使用 C语言中规定: memcpy拷贝的就是不重叠的内存memmove拷贝的就是重叠的内存但是在VS202…...

QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)

点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…...

计算机三级——网络技术(综合题第二题)

路由器工作模式 用户模式 当通过Console或Telnet方式登录到路由器时,只要输入的密码正确,路由器就直接进入了用户模式。在该模式下,系统提示符为一个尖括号(>)。如果用户以前为路由器输入过名称,则该名称将会显示在尖指号的前…...

Python 深度学习第二版(GPT 重译)(二)

四、入门神经网络:分类和回归 本章涵盖 您的第一个真实世界机器学习工作流示例 处理矢量数据上的分类问题 处理矢量数据上的连续回归问题 本章旨在帮助您开始使用神经网络解决实际问题。您将巩固从第二章和第三章中获得的知识,并将所学应用于三个新…...

【Redis】Redis常见原理和数据结构

Redis 什么是redis redis是一款基于内存的k-v数据结构的非关系型数据库,读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 redis的数据类型 string:字符串 缓存对象,分布式ID,token,se…...

3个Tips,用“AI”开启新生活

相信最近,很多朋友们都回归到了忙碌的生活节奏中。生活模式的切换,或多或少会带来身体或情绪状况的起伏。新技术正在为人们生活的方方面面带来便利。3个小Tips或许能让你也从新技术中获益,从身到心,用“AI”开启新生活。 关”A…...

【ROS | OpenCV】在ROS中实现多版本OpenCV、cv_bridge共存:安装与配置指南

在 Ubuntu 20.04 中,ROS Noetic 默认安装的 OpenCV 版本为 4.2.0。如果您需要确认系统中已安装的 OpenCV 版本,可以使用以下命令: sudo find / -iname "*opencv*"然而,许多开源算法都是基于 OpenCV 3 编写的&#xff0…...

Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)

安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…...

微分学<6>——Taylor公式

索引 Taylor公式Taylor公式的定性分析定理6.1 Taylor公式(Peano余项) Taylor公式的定量分析定理6.2 Taylor公式(Lagrange余项) Taylor公式 Taylor公式的定性分析 定理6.1 Taylor公式(Peano余项) 若函数 f ( x ) f\left ( x \right ) f(x)在 x 0 x_{0} x0​处的 n n n阶导数均…...

检索增强生成(RAG)应用的构建:LangChain与LlamaIndex的比较与选择

对于我要做RAG应用,我应该使用两者中的哪一个。或者说还是都使用? 在人工智能领域,检索增强生成(RAG)应用正变得越来越受欢迎,因为它们能够结合大型语言模型(LLMs)的自然语言处理能力…...

免费PDF转换和编辑工具 PDFgear 2.1.4

PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑,同时还提供了丰富的功能模块,如签名、表单填写等,方便用户进行多样化的操作。 该软件界面简洁美观,操作简单易懂,适合不同层次的用户…...

uniapp,导航栏(切换项)有多项,溢出采取左滑右滑的形式展示

一、实现效果 当有多项的导航&#xff0c;或者说切换项&#xff0c;超出页面的宽度&#xff0c;我们采取可滑动的方式比较好一些&#xff01;并且在页面右边加个遮罩&#xff0c;模拟最右边有渐变效果&#xff01; 二、实现代码 html代码&#xff1a; <!-- 头部导航栏 --…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...