【YOLO v5 v7 v8 小目标改进】RFB:组合不同大小的卷积核和扩张卷积来模拟人类视觉感受野的多尺度特性

RFB:组合不同大小的卷积核和扩张卷积来模拟人类视觉感受野的多尺度特性

    • 提出背景
      • RFB 原理
      • 空间感受野结构
      • RFB-Net
    • 小目标涨点
      • YOLO v5 魔改
      • YOLO v7 魔改
      • YOLO v8 魔改

 


提出背景

当前表现最好的目标检测器依赖于深层CNN骨干网络,如ResNet-101和Inception,它们受益于强大的特征表示,但代价是高计算成本。

相反,一些轻量级模型的检测器能够实现实时处理,但它们的准确性都不咋地。

作者提出了一种用于快速且准确的目标检测的方法,旨在通过增强轻量级CNN网络的深层特征来解决当前深层网络模型计算成本高和推理速度慢的问题。

RFB 原理

RFB模块,即Receptive Field Block模块,是一种用于增强轻量级卷积神经网络(CNN)特征表示的网络结构。

它的设计灵感来自于人类视觉系统的感受野(Receptive Field),特别是感受野的大小和偏心率(即感受野中心与视网膜中心的距离)随视网膜位置变化的特性。RFB模块通过模拟这种特性来增强特征的区分能力和鲁棒性,尤其是对于位置的轻微偏移。

  • 人类视觉系统在处理这类任务时,会更加关注图像中的某些区域,特别是那些对当前任务更重要的区域。

  • 当你在街道上,专注于识别远处的交通标志时,你的视觉系统会自然地调整,使得感受野在那个特定区域变得更大,以便捕获更多的上下文信息,即使标志本身较小也能被准确识别。

  • 同时,对于图像中心附近的对象(如近处的行人),感受野则会相对较小,以捕获更细致的特征,如脸部特征或衣物纹理,从而提高对行人的识别准确性。

RFB 模拟过程:

  1. 多分支池化,实现多尺度特征捕获:使用不同大小的卷积核和池化层来捕捉不同尺度的特征。

    这样可以模拟不同大小的感受野,从而更好地捕捉图像中的详细信息。

    模型能够同时捕获图像中的粗糙和细致特征。

    这就像人眼能够同时注意到远处交通标志的整体形状(粗糙特征)和近处行人脸部的细节(细致特征)。

  2. 扩张卷积(Dilated Convolution)模拟偏心率调整:通过增加卷积核元素之间的间隔来扩大感受野,而不增加参数数量或计算量。

    通过扩张卷积(dilated convolution),调整卷积核的采样范围,增大感受野而不增加参数数量,以捕捉更广泛的上下文信息。

    这使得模型能够更有效地处理图像边缘或角落部分的对象,增强了对于位置变化的鲁棒性。

  3. 特征重组和整合,实现动态感受野调整:通过对不同分支的输出进行组合和调整,生成最终的特征表示。

    使用扩张卷积层而不是固定的池化策略。

    固定池化策略限制了感受野大小的多样性,影响特征的融合。

    这一步骤确保了模型可以利用来自不同感受野的信息,提高模型的识别能力。

在这里插入图片描述
这图是RFB模块的构建方式,通过结合不同核大小和扩张卷积层的多分支,来模拟人类视觉系统中的感受野。

不同大小的核对应不同大小的感受野,而扩张卷积层则用于调整这些感受野的偏心率。

这些分支最后通过连接操作和1x1卷积层结合起来,形成最终的感受野空间数组,类似于图1中展示的人类视觉系统中的感受野。

 


空间感受野结构

在这里插入图片描述
在原文中,展示的四种不同的空间感受野结构意味着:

  1. Inception(图 3a)

    • Inception模块使用多个大小不同的卷积核同时工作,从而能够在同一层内捕获不同尺度的特征。
    • 这允许模型同时理解图像中的大范围模式和小范围的细节。
  2. ASPP(图 3b)

    • Atrous Spatial Pyramid Pooling(ASPP)结构通过使用不同扩张率的卷积层,可以在不同尺度上捕捉特征。
    • 这样做可以增加感受野的大小,同时不增加计算成本,能够更好地处理图像中的多尺度对象。
  3. Deformable Convolution(图 3c)

    • 可变形卷积网络通过允许卷积核的形状根据输入数据动态变化来捕捉不规则的特征。
    • 这种灵活性允许模型更好地适应物体的形状和大小,提高了模型对不同对象的适应能力。
  4. RFB(图 3d)

    • RFB结构结合了Inception和ASPP的优点,使用不同扩张率的卷积核来模拟人类视觉中感受野的大小和偏心率变化。
    • 这种设计在保持参数数量不变的情况下,使感受野更加多样化和精细化,提高了模型的准确性和对小物体及其上下文的识别能力。

每种结构都有其特定的优势,而RFB模块试图将这些优势集成到一个更加高效和精确的检测框架中。

  • 相比于Inception模块,RFB模块提供了更精细的控制感受野尺度的方法,不仅通过多分支结构捕获多尺度特征,还通过扩张卷积调整感受野的大小。
  • 与ASPP相比,RFB不仅利用了扩张卷积来增加感受野,还特别设计了多分支结构来模拟感受野的尺寸和位置变化,更符合人类视觉感受野的实际分布。
  • 不同于可变形卷积网络(Deformable Convolutional Networks)只在局部自适应调整感受野,RFB考虑了整个视网膜映射的规律,力求在全局范围内优化感受野的大小和形状。

在这里插入图片描述

RFB模块的设计,上文已描述。

RFB-s是RFB的一个变体,它专门设计来模拟人类视网膜图谱中较小的感受野。

它主要用于网络中更浅的层,因为这些层更接近原始图像,能够捕捉更精细的图像细节。

  1. 更多的分支:RFB-s使用了更多的分支,每个分支有更小的卷积核。这样可以提高对小尺寸特征的敏感性,对应于视网膜中心区域的细节捕捉能力。

  2. 较小的卷积核:较小的卷积核允许RFB-s模块有较小的感受野,更适合捕获小物体或图像中的细节特征。

  3. 步长为2的操作:在特征图上使用步长为2的RFB模块可以减少输出特征图的空间尺寸,从而减少模型的参数数量和计算负担。这种设置有助于加速模型的计算,同时仍然允许模型利用RFB模块提供的感受野多样性。

当这些模块应用于conv4_3特征图后时,它们提供了一个精细的感受野结构来增强后续层的特征表示。

在目标检测中,这意味着模型可以更有效地识别和定位图像中的小物体,同时还能快速处理图像,使其非常适用于需要实时处理的应用场景,如视频监控或自动驾驶汽车。

RFB 通过组合不同大小的卷积核和扩张卷积来模拟人类视觉感受野的多尺度特性,与其他方法(如Inception模块、ASPP等)相比,RFB特别强调通过这种组合来精细调整感受野的大小和偏心率,以优化对复杂背景下小目标的检测性能。
 


RFB-Net

RFB-Net 网络架构流程:
在这里插入图片描述
其中 conv4_3 特征图后接 RFB-s 模块,该模块具有较小的感受野,且使用步长为2的RFB模块来减少参数量,而保持原有RFB模块的多核心卷积层。

在RFB Net中,conv4_3这一层特征图上的锚点框数量被增加,以期望通过更多的候选框来提高网络对小目标的检测性能。

这种调整反映了一个通用的观点,即增加对小物体的敏感性可以通过在低层特征图上引入更多的锚点框来实现。

问题:优化小目标的检测精度

解法

  • 增加低层特征图的默认锚点框数量

  • 之所以增加锚点框,是因为小目标在低层特征图上更为明显,增加锚点框能够提供更多的正样本,从而提高小目标的检测精度。

 

问题:高性能的目标检测模型往往需要复杂的网络结构来提高准确率,但这样做的代价是计算成本高和推理速度慢,这对于需要实时处理的应用场景(如自动驾驶车辆的物体识别)是不可接受的。

SSD 是一种流行的单阶段目标检测模型,以其速度快和效率高而著称。

解法

  • 通过在SSD(一种轻量级且能实时处理的目标检测模型)的顶部集成RFB模块,可以在不显著增加计算负担的情况下,显著提升模型的检测性能。
  • 这样,RFB Net能够快速准确地检测图像中的物体,同时保持较低的计算成本和高速的推理能力。

将RFB模块集成到SSD顶层的过程如下:

  1. 选择集成位置:首先确定在SSD网络结构中哪些层之后集成RFB模块。

    通常,这些位置选在特征提取网络的后面几层,因为这些层的特征图包含了丰富的语义信息,适合进行进一步的增强。

  2. 设计RFB模块:根据SSD的特定需求设计RFB模块。

    这包括确定分支的数量、卷积核的大小、扩张率等参数。

    设计的目标是在不显著增加计算负担的情况下,最大化特征的区分能力和鲁棒性。

  3. 集成RFB模块:在选定的层后面添加RFB模块。

    这意味着原有的特征图会首先通过RFB模块进行处理,然后再继续后续的检测流程。

  4. 调整检测头:由于引入了RFB模块,可能需要对SSD原有的检测头(即用于分类和定位的卷积层)进行一定的调整,以适应新的特征表示。

  5. 训练和优化:最后,需要使用标注数据重新训练和优化整个模型,确保RFB模块能够有效提升目标检测的性能。

通过上述步骤,RFB Net能够结合SSD的高效处理速度和RFB模块的强大特征表示能力,实现快速且准确的目标检测。

小目标涨点

更新中…

YOLO v5 魔改

YOLO v7 魔改

YOLO v8 魔改

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

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

相关文章

Vue3 条件渲染 v-show

v-show 指令&#xff1a;用于控制元素的显示或隐藏。 执行条件&#xff1a;当条件为 false 时&#xff0c;会添加一个 display:none 属性将元素隐藏。 应用场景&#xff1a;适用于显示隐藏切换频率较高的场景。 <div v-show"数据">内容</div> 基础用法…

LeetCode 热题 100 | 图论(一)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…

langchain学习笔记(七)

RunnablePassthrough: Passing data through | &#x1f99c;️&#x1f517; Langchain 1、RunnablePassthrough可以在不改变或添加额外键的情况下传递输入。通常和RunnableParallel结合使用去分配数值给到字典的新键 两种方式调用RunnablePassthrough &#xff08;1&#…

MySQL进阶:全局锁、表级锁、行级锁总结

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;MySQL事务、并发事务问题及隔离级别 &#x1f4da;订阅专栏&#xff1a;MySQL进阶 希望文章对你们有所帮助…

Linux学习笔记:进程的终止和等待

进程终止和等待 进程终止进程退出场景进程常见退出方式_exit()退出exit()退出return退出exit()与_exit()的不同之处 进程的等待什么是进程等待?为什么要进行进程等待如何进行等待wait方式:waitpid方式 进程终止 进程退出场景 一般来讲,进程的退出场景有三种: 代码运行完毕,…

Unity RectTransform·屏幕坐标转换

RectTransform转屏幕坐标 分两种情况 Canvas渲染模式为Overlay时&#xff0c;使用此方式 public Rect GetScreenCoordinatesOfCorners(RectTransform rt) {var worldCorners new Vector3[4];rt.GetWorldCorners(worldCorners);var result new Rect(worldCorners[0].x,world…

LeetCode54题:螺旋矩阵(python3)

路径的长度即为矩阵中的元素数量&#xff0c;当路径的长度达到矩阵中的元素数量时即为完整路径&#xff0c;将该路径返回。 循环打印&#xff1a; “从左向右、从上向下、从右向左、从下向上” 四个方向循环打印。 class Solution:def spiralOrder(self, matrix: List[List[i…

我的秋招数据分析岗面经分享(京东,美团,阿里,拼多多,vivo,滴滴)

节前&#xff0c;我们社群组织了一场技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对新手如何入门数据分析、机器学习算法、该如何备战面试、面试常考点分享等热门话题进行了深入的讨论。 基于社群的讨论&#xff0c;今天…

艺术家林曦:新的一年|开启人生的最佳竞技状态吧!

开年大吉呀&#xff5e;新的一年&#xff0c;你准备好如何启程了吗&#xff1f;    暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;艺术家林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲…

6、wuzhicms代码审计

wuzhicms代码审计 前言 安装环境配置 服务器要求 Web服务器: apache/nginx/iis PHP环境要求:支持php5.2、php5.3、php5.4、php5.5、php5.6、php7.1 (推荐使用5.4或更高版本!) 数据库要求: Mysql5www/install文件夹即可进入安装页面 审计开始 首页文件index.php&#xff0c…

测试需求平台8-Arco组件实现产品增改需求

✍此系列为整理分享已完结入门搭建《TPM提测平台》系列的迭代版&#xff0c;拥抱Vue3.0将前端框架替换成字节最新开源的arco.design&#xff0c;其中约60%重构和20%新增内容&#xff0c;定位为从 0-1手把手实现简单的测试平台开发教程&#xff0c;内容将囊括基础、扩展和实战&a…

HCIA-Datacom实验指导手册:8 网络编程与自动化基础

HCIA-Datacom实验指导手册&#xff1a;8 网络编程与自动化基础 一、实验介绍&#xff1a;二、实验拓扑&#xff1a;三、实验目的&#xff1a;四、配置步骤&#xff1a;步骤 1 完成交换机的 Telnet 预配置步骤 2 Python 代码编写 五、结果验证六、windows 计划任务程序配置七、 …

大数据权限认证 Kerberos 部署

文章目录 1、什么是 Kerberos2、Kerberos 术语和原理2.1、Kerberos 术语2.1、Kerberos 原理 3、Kerberos 服务部署3.1、前置条件3.2、安装依赖3.3、配置 krb5.conf3.4、配置 kdc.conf3.5、配置 kadm5.acl3.6、安装 KDC 数据库3.7、启动服务3.8、创建 Kerberos 管理员3.9、创建普…

qsort的使用与实现

c语言常见的排序方法大概有这些&#xff0c;今天我们所讲的是就是qsort快排的讲解 头文件 qsort的使用 我们先使用msdn查看他的相关资料&#xff0c;得知这个函数的传参请情况 1.void *base 翻译过来就是将要排序的函数的起始位置/数组首元素地址 2.size_t num 翻译过来就是数…

vue项目获取拼音首字母

工具包 pinyin-pro npm install pinyin-pro 官方地址 pinyin-pro | pinyin-pro性能优异、转换准确的 js 中文转拼音工具https://pinyin-pro.cn/示例代码(获取每个汉字的拼音首字母) import {pinyin} from pinyin-pro;function getPinyinInitial(name){if (name) {let py p…

redis实战笔记汇总

文章目录 1 NoSQL入门概述1.1 能干嘛&#xff1f;1.2 传统RDBMS VS NOSQL1.3 NoSQL数据库的四大分类1.4 分布式数据库CAP原理 BASE原则1.5 分布式集群简介1.6 淘宝商品信息的存储方案 2 Redis入门概述2.1 是什么&#xff1f;2.2 能干嘛&#xff1f;2.3 怎么玩&#xff1f;核心…

高性能MySQL 第4版

第一章MySQL架构 MySQL提供了多种锁的颗粒度&#xff0c;每种MySQL存储引擎都可以实现自己的锁策略和锁力度。 行级锁是在存储引擎而不是在服务器中实现的。 隔离界别 READ UNCOMMITTED - 脏读 在事务中可以可以查看到其他事务中还没有提交的修改。实际中很少用。 READ C…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量&#xff1b;非基变量、非基向量&#xff1b;基解、基可行解&#xff1b;四、最优解与可行解、基可行解的关系五、用例题&#xff08;枚举法&#xff09;巩固基解、基可行解、最优解三个概念1、例…

鸿蒙Harmony应用开发—ArkTS声明式开发(点击事件)

组件被点击时触发的事件。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 onClick onClick(event: (event: ClickEvent) > void) 点击动作触发该回调。 卡片能力&#xff1a; 从API version 9开始…

【python】`assert`断言语句

assert是一个断言语句&#xff0c;用于在代码中检查某个条件是否为真。 如果条件为假&#xff0c;将触发AssertionError 异常&#xff0c;从而指示存在错误。