【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.mfbz.cn/a/434806.html

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

相关文章

移动开发:图像查看器

一、新建ImageViewer模块,添加p1-p9图片(注意mdpi后缀) 二、相关代码 1.MainActivity.java文件代码 package com.example.imageviewer;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.MotionEvent; import and…

Windows安装MySQL详细教程

1.1 下载MySQL压缩包 官网下载链接[点击跳转] 按图中选择,然后点击【Download】 点击图中箭头所指方向直接下载 1.2 解压下载好的压缩包后找到【bin】文件夹,并记下文件路径(下文将以路径 D:\mysql-8.0.36-winx64\bin 为例) 1.…

【Java EE初阶二十七】深入了解cookie

1. 简单了解cookie Cookie是http请求里header 中的一个属性,浏览器持久化存储数据的一种机制,网页无法访问主机的文件系统,要想存储数据就得通过其他的方式; 且cookie中保存的数据也是键值对的形式,最终还是要把这个键…

Selenium的UI自动化测试屏幕截图功能实例代码

UI自动化测试执行过程中,当遇到检查失败的情况,往往会发现打印的log并不能有效地帮助我们定位问题。我们需要失败时刻的屏幕截图来重现当时的失败场景,进而排查出错原因。 基于这种需求可以使用Selenium的屏幕截图功能。 实现代码如下&…

程序计数器介绍

程序计数器是计算机处理器中的寄存器,它包含当前正在执行的指令的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。当计算机重启或复位时,程序计数器通常恢复到…

Matlab数值计算(多项式插值)

多项式插值问题 拉格朗日插值多项式 例1:在某个化学反应过程中,在有限个时刻t(min),测得生成物浓度y(g/)d的数据如下: 123468101214164.006.418.018.799.539.8610.3310.4210.5310.61 求在时刻t5分,t16.4分时的浓度是…

开发者如何选择代码签名证书?

代码签名证书是一种由权威认证机构颁发的数字证书,它允许软件开发者对其代码进行数字签名。这种签名基于公钥基础设施(PKI)技术,使用一对密钥:一个私钥和一个公钥。私钥用于生成签名,而公钥则嵌入到代码签名…

微信小程序开发:页面分享卡片、风格选择、通道启用等可配置

上文说到,我们部署了定时任务,但是有个地方忘记在上文写了,这里补上,就是定时任务的超时时间问题,超时时间有7200秒: 我们改成7100秒: 再把云函数调用的云对象的超时时间也改下: 超时…

20240306作业

1.编写一个伪终端&#xff1a;在真正的终端上运行这个伪终端程序之后&#xff0c;能够执行所有的shell指令&#xff0c;甚至再次运行自己 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h…

Vue3.2 + vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案

chunk-vendors.js 是/node_modules 目录下的所有模块打包成的包&#xff0c; 但是这包太大导致页面加载很慢&#xff08;我的都要3-4秒了&#xff09;&#xff0c; 这个时候就会出现白屏的情况 解决方案 1、compression-webpack-plugin 插件解决方案 1&#xff09;、安装 npm …

Docker数据卷篇

1. 数据卷&#xff08;容器数据管理&#xff09; 引言&#xff1a;在之前的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并且因为没有编辑器&#xff0c;修改文件也很麻烦。 这就是因为容器与数据&#xff08;容器内文件&#xff09;耦合带…

用位运算维护状态码,同事直呼牛X!

位运算是一种非常高效的运算方式。在算法考察中比较常见&#xff0c;它使用位级别的操作来表示和控制状态&#xff0c;这在管理多个布尔标志或状态时尤其有用。那么业务代码中我们如何使用位运算呢&#xff1f; 位运算基础 我们先来回顾一下位运算的基础&#xff1a; 与&…

领到了腾讯云服务器红包,可以用于购买服务器,开心!

在2024年腾讯云新春采购节优惠活动上&#xff0c;可以领取新年惊喜红包&#xff0c;打开活动链接 https://curl.qcloud.com/oRMoSucP 会自动弹出红包领取窗口&#xff0c;如下图&#xff1a; 腾讯云2024新春采购节红包领取 如上图所示&#xff0c;点击“领”红包&#xff0c;每…

腾讯云十大优惠活动曝光,TOP10值得买云服务器配置报价

腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

python爬虫(一)

一、python中的NumPy模块&#xff08;数据的存储和处理&#xff09; 这里是下载完成之后的表现 &#xff08;1&#xff09;创建数组 1、使用array&#xff08;&#xff09;函数创建数组 使用array函数可以创建任意维度的的数组 下面是一个创建二维数组的代码示例 下面是代码…

L1-096 谁管谁叫爹分数

L1-096 谁管谁叫爹 分数 20 全屏浏览 切换布局 作者 陈越 单位 浙江大学 《咱俩谁管谁叫爹》是网上一首搞笑饶舌歌曲&#xff0c;来源于东北酒桌上的助兴游戏。现在我们把这个游戏的难度拔高一点&#xff0c;多耗一些智商。 不妨设游戏中的两个人为 A 和 B。游戏开始后&…

使用统一功能完善图书管理系统

目录 一、前提 二、实现强制登陆传统方式 三、拦截器 1、概念 2、拦截器 &#xff08;1&#xff09;定义拦截器 &#xff08;2&#xff09;注册拦截器 &#xff08;3&#xff09;运行 3、使用拦截器实现强制登陆 4、DispatcherServlet源码解析 四、适配器模式 1、适…

Postman 接口自动化测试教程:入门介绍和从 0 到 1 搭建 Postman 接口自动化测试项目

关于Postman接口自动化测试的导引&#xff0c;全面介绍入门基础和从零开始搭建项目的步骤。学习如何有效地使用Postman进行API测试&#xff0c;了解项目搭建的基础结构、环境设置和测试用例的编写。无论您是新手还是经验丰富的测试人员&#xff0c;这篇教程都将为您提供清晰的指…

IIC 接口

IIC 接口 IIC总线概述IIC总线简介IIC总线通信过程IIC总线寻址方式 IIC总线信号实现起始信号、停止信号字节传送与应答同步信号 IIC典型时序 IIC总线概述 IIC总线简介 IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线&#xff0c;主要用于近距离、低速的芯片之间…

SpringBoot集成图数据库neo4j实现简单的关联图谱

社交领域&#xff1a;Facebook, Twitter&#xff0c;Linkedin用它来管理社交关系&#xff0c;实现好友推荐 图数据库neo4j安装&#xff1a; 下载镜像&#xff1a;docker pull neo4j:3.5.0运行容器&#xff1a;docker run -d -p 7474:7474 -p 7687:7687 --name neo4j-3.5.0 ne…
最新文章