【YOLO v5 v7 v8 v9小目标改进】RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题

RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题

  • 学习解耦表示
    • 可逆列网络(RevCol)
        • 子特征1:多级可逆单元
        • 子特征2:可逆列架构的宏观设计
        • 子特征3:微观设计调整
        • 子特征4:中间监督
      • 联想
    • 小目标涨点
      • YOLO v5 魔改
      • YOLO v7 魔改
      • YOLO v8 魔改
      • YOLO v9 魔改

 


论文:https://arxiv.org/pdf/2212.11696.pdf

代码:https://github.com/megvii-research/RevCol

 
传统的深度学习模型(遵循信息瓶颈原则)在层与层之间传递信息时,会逐步压缩与目标无关的信息。

在深度学习中,有一个常见的问题:当我们训练模型识别图片或者处理信息时,模型往往只关注于对当前任务有用的信息,而忽略其他可能对将来任务有用的信息。

这就像是在读书时,只记住了考试要考的知识点,但对书中其他有趣或有用的内容视而不见。

虽然短期内这样做可以帮助我们通过考试,但长期来看,我们可能会错过很多重要的知识。

类于交通系统中的立交桥设计。在繁忙的城市中,不同方向的车辆流需要高效地交织而不互相干扰。

立交桥通过不同层级的道路允许车辆在不同方向上流动,从而避免了交叉路口的拥堵和潜在冲突。

同样地,在深度学习网络中,信息需要在不同的层级(类似于不同的道路层级)之间流动。

传统的神经网络结构(比如简单的前馈网络)就像一个没有立交桥的交通系统,信息流(车辆)只能一层层单向传递,这可能导致信息的堵塞和丢失(交通拥堵)。

RevCol网络中的融合模块则像是在这些层级之间建立了立交桥,允许信息在高分辨率和低分辨率的层级之间自由流动(车辆在不同层级间行驶),从而减少了信息丢失,并增加了网络对信息的处理能力。

传统的卷积神经网络(CNNs)在信息流动方面就类似于普通道路系统,信息(车辆)从输入层(起点)一直传递到输出层(终点),中间的每一层只能接收到前一层的信息,难以直接获取到后面层的反馈。

我们得设计一个(立交桥网络)允许信息不仅向前传递,也可以从后续层返回到前面的层,就好比车辆在立交桥中可以自由地改变方向,从而提高了整个网络处理信息的灵活性和效率。

 
如果我们能在学习时,不仅仅记住考试内容,还能把书里的其他知识也整理归档,那么我们就能在需要时随时取用这些知识。

目标:让模型学会把信息分门别类地存储,既能记住对当前任务重要的知识,也能保存可能对未来任务有用的信息。

这种方法通过一个叫做可逆列网络(RevCol)的结构来实现。

RevCol就像一个高效的图书馆,它不仅能保存书中的所有内容,还能按照不同的主题将它们分类。

在这个图书馆里,信息是通过一系列的“列”进行管理的,每一列都负责存储一种类型的信息。

通过特殊的技术,这些列之间能够互相传递信息,而不会丢失任何细节。

这种方法使得模型在学习时,能够更全面地理解和保存信息,不仅仅局限于当前任务,也为处理将来可能遇到的问题做好了准备。

在这里插入图片描述

图1(a)展示的是传统的单列网络(比如一个普通的深度神经网络),其中输入数据经过多个层(Layer 1, 2, 3, …, N)处理后得到输出结果。

每层都对输入数据进行某种形式的转换,并且随着层级的深入,通常会丢失一些信息。

图1(b)展示的是RevCol网络,它包括多个列(Col 1, 2, 3, …, N),每个列都处理输入数据,并且通过可逆连接(由红色曲线标识)在列之间传递信息。

这种设计试图在不同列之间保持信息,确保即使在深层次也能保留低级(接近输入)和高级(语义)特征。

黄色表示低级信息,蓝色表示高级语义信息。

学习解耦表示

采用可逆列网络(RevCol):

  • RevCol的设计:通过N个具有相同结构但权重不同的子网络(列)组成,每个列接收输入的一个副本并生成预测,从而在每个列中存储从低级到高级语义表示的多级嵌入。

    通过引入可逆变换,无损地将多级特征从第i列传递到第i+1列,从而预测输入的最终解耦表示。

  • 为什么使用RevCol:由于问题的特征在于传统深度学习模型在特征传递过程中损失了大量信息,RevCol通过可逆变换保证信息无损传递,同时提供从低级到高级的多级语义表示。

引入新型的可逆多级融合模块:

  • 新型可逆多级融合模块:解决了传统RevNets的两个主要缺陷:特征图形状的限制和最后两个特征图必须同时包含低级和高级信息的问题。
  • 为什么使用这个子解法:这个新型模块能够更灵活地处理不同形状的特征图,并允许更有效地优化网络,避免了与信息瓶颈原则相冲突的问题。

与信息瓶颈原则下的传统深度学习模型不同,这种方法不是简单地抛弃与目标无关的信息,而是力图在保留尽可能多的输入信息的同时,将任务相关的概念或语义词嵌入到几个分离的维度中。

这种方式更贴近于生物细胞的机制,每个细胞虽然含有整个基因组的完整副本,但不同细胞的基因表达强度不同,类似地,在计算视觉任务中,也理应保留高级语义表示的同时,保持其他维度中的低级信息。

可逆列网络(RevCol)

如何在不丢失信息的前提下,实现特征的解耦和高效传递。

  1. 多级可逆单元:想象把信息分成好几层,每一层都处理不同类型的信息(比如一层专注于颜色,另一层专注于形状)。我们用一种特殊的方法让这些信息层之间相互传递信息,但不会丢失任何东西,就像魔术一样。

  2. 可逆列架构:我们把网络分成多个部分(列),每个部分都用上面提到的魔术方法处理信息。这样,我们可以在不同的部分专注于不同的任务,比如一部分识别猫,另一部分保留背景信息。

  3. 微观设计调整:为了让这一切工作得更好,我们对网络的一些基础部件做了细微调整,比如改变一些参数,以确保信息在传递过程中不会被扭曲。

  4. 中间监督:我们在网络的不同部分加入了额外的监督,这就像是给学生额外的测验,以确保他们在学习过程中没有走偏。这有助于网络更好地保留和利用信息。

可逆列网络(RevCol)就像是一个高效的学习机器,不仅能学会识别猫和狗,还能在这个过程中保留大量的其他有用信息。

这种方法让网络更加强大和灵活,适用于多种不同的任务。

在这里插入图片描述
图2(a)展示的是RevNet中的一个可逆单元的例子,这是构建RevCol网络的基础。

这里显示了如何在不丢失任何信息的情况下,将输入xt通过一系列函数(Ft-1, Ft-2, …, Ft-4)转换为输出xt-5。

图2(b)是一个简化的多级可逆单元,展示了如何在网络的不同层级(Level 1, 2, 3, 4)之间传递和转换信息。

图2©展示了整个可逆列网络架构的概览,包括多个列和每个列的多个层级。

在不同层级上的中间监督(Intermediate Supervision)有助于训练过程中信息的保存和优化。

 
在RevCol网络中,传统的可逆结构(如RevNet)和非可逆的多列结构(如HRNet)都存在限制,包括严格的特征维度约束和信息损失问题。

特别是在进行多任务学习时,信息的保留对于模型的泛用性非常关键。

RevCol = 可逆操作的引入 + 融合模块的设计 + 中间监督的加入

子特征1:多级可逆单元
  • 实现方式:通过扩展可逆变换方程,实现了特征的无损解耦传递。
  • 每m个特征图分为一组,通过可逆变换在组内进行信息传递,确保了信息的无损。
  • 选择原因:该方法可以在不同的语义层次或分辨率中使用不同形状的张量来表示特征,解决了特征维度强约束的问题,并易于与现有网络架构协作。
子特征2:可逆列架构的宏观设计
  • 实现方式:RevCol通过多个子网络和可逆连接进行特征解耦,使用多级可逆单元简化输入,每个子网络处理图像分割成的非重叠块,提取多级特征图进行信息传递。
  • 选择原因:这种宏观设计允许在不同任务中灵活使用高级和低级特征,通过可逆连接减少信息损失,提升模型的泛化能力。
子特征3:微观设计调整
  • 实现方式:调整了卷积块和引入融合模块,以兼容宏观架构。
  • 包括修改卷积核大小,采用可学习的可逆操作γ,优化网络稳定性和训练速度。
  • 选择原因:微观设计调整使得原始的ConvNeXt块与RevCol的宏观设计兼容,提高了模型的精度和训练效率,同时保持网络的稳定性。

融合模块的设计:

  • 实现方式:设计了一个新型的融合模块,以支持不同分辨率的特征融合,同时避免了传统可逆网络的严格特征维度约束。
  • 选择原因:这解决了传统结构中特征维度强制匹配的问题,使得网络设计更灵活,可以在不同分辨率间更好地融合特征。

引入融合模块优化信息流动:

  • 解决方案:设计了一种融合模块,结合了向上采样和向下采样的特点,以便在不同层级间更有效地传递信息。

  • 选择原因:传统的网络在传递过程中可能会导致信息的损失,尤其是在高分辨率和低分辨率特征间的转换。

    融合模块通过将低分辨率的特征向上采样,同时将高分辨率的特征向下采样,并将它们融合,以保持信息流动的连续性和完整性,从而提高网络的整体性能。

    这样的设计使得在深层网络中的每一级都能获得丰富的上下文信息,增强了模型的表示能力。

子特征4:中间监督
  • 实现方式:在网络的前几列添加额外的监督,通过优化二元交叉熵重建损失和分类损失,以减少信息丢失,提高特征的质量和网络的性能。
  • 选择原因:中间监督可以在列间迭代时维持信息,减少信息在列内的丢失,提升网络对输入图像和预测之间互信息的下界,从而提高性能。

RevCol通过引入多级可逆单元和宏观设计调整,实现了特征的无损解耦传递。

微观设计的调整和中间监督的加入进一步优化了模型的训练效率和性能。

这些设计选择都是为了解决深度学习中特征传递与学习过程中的信息损失问题,确保了模型在处理不同任务时的灵活性和高效性。

联想

何时使用 - 可逆列网络(RevCol):当你需要一个能够在保留重要特征的同时减少信息损失的网络时,RevCol是一个合适的选择。特别是在下游任务可能需要原始输入数据中不同层次信息的场景,如迁移学习、多任务学习,或是领域适应。

RevCol到每个子解法:

  1. 可逆连接:类似于解压缩算法,保留所有信息,即使在数据经过多个处理层后。
  2. 融合模块:像城市交通枢纽,允许信息在不同层级间有效转换,防止信息丢失。
  3. 中间监督:相当于考试过程中的阶段测试,确保网络在学习过程中不偏离目标。

以融合模块为例,如果我们考虑将其替换为注意力机制,注意力机制允许模型专注于输入数据的最重要部分,类似于人类在观看场景时会自然地注意到最有意义的部分。

  • 对比分析:融合模块通过物理地在网络中融合不同层级的特征来保留信息,而注意力机制则是通过赋予不同特征不同的权重来实现。

融合模块可能会在保持空间信息方面更有效,因为它们允许不同分辨率的特征直接合并。

另一方面,注意力机制在确定哪些信息最相关时可能更加灵活和有效,因为它可以根据上下文动态调整不同特征的重要性。

  • 信息保持:融合模块通过直接合并来自不同层次的特征,能够保持丰富的空间信息。这是特别有用的,比如在处理图像的局部细节时,这些局部细节可能在高层次的抽象中丢失。
  • 信息选择:注意力机制能够选择性地强调网络应该关注的信息部分。在RevCol中,这可以用来动态调整网络在不同列和层级中传递的特征的权重。

结合这两个概念,我们可以创建一个新的融合模块,其中包含注意力机制,使模型能够通过融合模块保持来自不同层的详细信息。

具体的改进点包括:

  • 加权融合:在融合模块中,不同层级的特征图在合并前首先通过注意力机制进行加权。

这意味着,每个特征图不是简单地被物理合并,而是根据其对最终任务的相关性赋予了一个权重。

这允许模型更加关注对当前任务最有用的信息,类似于人类视觉系统会集中注意力于最重要的细节。

  • 多尺度注意力:设计一个可以处理来自不同尺度(即分辨率)的特征图的注意力机制。

这样的机制可以在更广泛的上下文中评估信息的相关性,不仅仅是在单个层级内。

例如,一个来自较低层的特征图(较低级的特征,如边缘或纹理)可能对某个具体任务是至关重要的,而这一点可能在高层次的抽象特征中不是那么明显。

小目标涨点

更新中…

YOLO v5 魔改

YOLO v7 魔改

YOLO v8 魔改

YOLO v9 魔改

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM电源策略单元Power Policy Unit

本规范描述了电源策略单元(PPU)架构。它定义了PPU架构的1.1版本。 PPU规范的1.1版本增加了操作模式支持。这使得能够为功能或更高粒度的电源控制原因提供组件特定的电源模式支持。 在本文档中,对PPU或PPU的引用指的是实现了此PPU架构的设备…

十四、重写与多态

重写、多态 上一讲是,子类对父类横向上的扩展 这一讲是,子类对父类纵向上的扩展 方法重写 使用override关键字重写父类的方法 将父类原本方法的逻辑更新成新版本的逻辑 注:仅能重写可见的父类成员,并且重写要保持签名一致。 签名一…

GEE 将裁剪后的Sentinel-2影像 在ArcGIS中去除空值

在ArcGIS中,可以使用栅格计算器(Raster Calculator)工具来设置NoData值为空。以下是在ArcGIS中将NoData值设置为空的步骤: 打开ArcGIS软件并加载下载的Sentinel-2影像数据。 影像Nodata空值以黑色背景呈现,影响矢量数据…

SpringCloud2023最新版本该如何进行组件选型?

前言 Developing distributed systems can be challenging. Complexity is moved from the application layer to the network layer and demands greater interaction between services. Making your code ‘cloud-native’ means dealing with 12-factor issues such as exte…

鸿蒙4.0-DevEco Studio界面工程

DevEco Studio界面工程 DevEco Studio 下载与第一个工程新建的第一个工程界面回到Project工程结构来看 DevEco Studio 下载与第一个工程 DevEco Studio 下载地址:点击跳转 https://developer.harmonyos.com/cn/develop/deveco-studio#download 学习课堂以及文档地址…

《金三银四求职攻略》:程序员面试季倒计时

程序员的金三银四求职宝典 大家好,我是小明,一位即将面临春季求职季的程序员。在这个黄金时段,如何在众多应聘者中脱颖而出,拿下理想的offer,成为了我思考的重点。今天,我将分享一些我个人的求职攻略&…

增强型YOLOv5应用于扩展PASCAL VOC数据集

目录 摘要关键词 1. 引言2. 性能研究2.1 YOLO2.2 PASCAL VOC 2007 数据集2.3 MS COCO 数据集 3 实验方法3.1 利用COCO数据集扩展PASCAL VOC 2007(以elephant大象为例)3.2 方法实现(以YOLOv5为例)3.2.1 YOLOv5介绍3.2.2 YOLOv5…

【详识C语言】动态内存管理

本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 为什么存在动态内存分配 我们已经掌握的内存开辟方式有: int val 20;//在栈空间上开辟四个字节char arr[10] {0};//在栈空间上开…

Three.js--》探寻Cannon.js构建震撼的3D物理交互体验(二)

我们用three.js可以绘制出各种酷炫的画面,但是当我们想要一个更加真实的物理效果的话,这个时候我们就需要一个物理的库,接下来我们就讲解一下今天要学习的canon,它可以给我们提供一个更加真实的物理效果,像物体的张力、…

2024护网面试题精选(一)

0x00.基础漏洞篇 00-TOP10漏洞 1.SQL注入 2.失效的身份认证和会话管理 3.跨站脚本攻击XSS 4.直接引用不安全的对象 5.安全配置错误 6.敏感信息泄露 7.缺少功能级的访问控制 8.跨站请求伪造CSRF 9.实验含有已知漏洞的组件 10.未验证的重定向和转发 01-SQL注入漏洞 …

【Java_JSON】如何从JSON数据中提取value值

如何从JSON数据中提取value值? 首先将JSON数据转成字符串 创建JSONObject 对象 通过kv键值对的特性 使用key值来获取value 值 并输出 结果:

c++: 缺省参数/默认参数的详解及其应用

c缺省参数/默认参数的详解及其应用 缺省参数是什么 #include<iostream> using namespace std;void func(int a 666) {cout << "a " << a << endl; } int main() {func(); //没有传参func(10); //传参return 0; }缺省参数就是在我们不进…

计算机体系结构:VLIW

原文来自知乎 计算机体系结构&#xff1a;VLIW 本文主要介绍计算机体系结构中的VLIW&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f…

腾讯云服务器99元一年购买入口链接

腾讯云服务器99元一年购买入口链接如下&#xff0c;现在已经降价到61元一年&#xff0c;官方活动链接如下&#xff1a; 腾讯云99元服务器一年购买页面腾讯云活动汇聚了腾讯云最新的促销打折、优惠折扣等信息&#xff0c;你在这里可以找到云服务器、域名、数据库、小程序等等多种…

【uniapp】小程序自定义一个通用的返回按钮组件

左边箭头&#xff0c;右边文字可以自定义&#xff0c;但是不要太长&#xff0c;太长可以自己改 .back的width值&#xff0c;改宽一点。 用这个组件的时候首先要在pages.json里把导航栏变成自定义的&#xff1a; ,{"path" : "pages/test/test","style&…

Goose:Golang中的数据库迁移工具

Goose&#xff1a;Golang中的数据库迁移工具 在Golang开发中&#xff0c;数据库迁移是一个常见的任务&#xff0c;用于管理数据库模式的演化和版本控制。Goose是一个轻量级的、易于使用的数据库迁移工具&#xff0c;专为Golang开发者设计。本文将介绍Goose的基本概念、用法和优…

智能驾驶规划控制理论学习01-自动驾驶系统介绍、规划控制模块介绍

目录 一、自动驾驶系统概述 二、规划控制模块介绍 1、规划控制架构 2、规划控制目标 3、Cartesian和Frenet坐标系 4、Frenet坐标系概览 5、解耦式规划和联合式规划 一、自动驾驶系统概述 目前被国内外广为接受的自动驾驶级别划分标准是 SAE&#xff…

Nano 33 BLE Sense Rev2学习第二节——手机蓝牙接收数据

Nano 33 BLE Sense Rev2需要下载的程序 #include <ArduinoBLE.h> #include "Arduino_BMI270_BMM150.h"float x, y, z; int degreesX 0; int degreesY 0;BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214"); // create service// cre…

XSS漏洞--概念、类型、实战--分析与详解[结合靶场pikachu]

目录 一、XSS概念简述 1、XSS简介&#xff1a; 2、XSS基本原理&#xff1a; 3、XSS攻击流程&#xff1a; 4、XSS漏洞危害&#xff1a; 二、XSS类型&#xff1a; 1、反射型XSS&#xff1a; 2、存储型XSS&#xff1a; 3、DOM型XSS&#xff1a; 三、靶场漏洞复现(pikach…

LVS四层负载均衡集群

简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案&#xff0c;终端互联网用户从外部访…