【YOLO v5 v7 v8 v9小目标改进】AFPN 渐进式特征金字塔网络:解决多尺度特征融合中,信息在传递过程丢失

AFPN 渐进式特征金字塔网络:解决多尺度特征融合中,信息在传递过程丢失

    • 提出背景
      • AFPN = 多尺度特征金字塔 + 非邻近层次的直接特征融合 + 自适应空间融合操作
    • 小目标涨点
      • YOLO v5 魔改
      • YOLO v7 魔改
      • YOLO v8 魔改
      • YOLO v9 魔改

 


提出背景

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

代码:https://github.com/gyyang23/AFPN

 
对象检测是计算机视觉中的一个任务,目的是在图片或视频中识别出各种物体,并确定它们的位置。

随着深度学习技术的发展,对象检测领域取得了巨大进步。

在这些进步中,一个关键技术是特征金字塔网络(FPN),它帮助模型更好地处理不同大小的物体。

特征金字塔(如FPN、PAFPN、NASFPN)建立了一个多层次的特征表示体系,允许系统在不同的分辨率上捕捉图像的特征,以便能够检测不同大小的物体。

  • 它们解决了单一尺度特征分析的局限性,为特征融合提供了多尺度的特征来源。

特征融合模块(如CARAFE、ASFF、DRFPN)则进一步增强了这些特征的表示能力,通过各种方法(上采样、加权融合、注意力机制)优化了不同层级特征之间的融合,提高了特征金字塔中特征的质量和检测模型的性能。

 

AFPN = 多尺度特征金字塔 + 非邻近层次的直接特征融合 + 自适应空间融合操作

什么是AFPN?

AFPN(渐进式特征金字塔网络)是在特征金字塔和特征融合模块基础上的进一步创新和优化。

AFPN不仅采用了特征金字塔的多尺度特征表示理念,还引入了高效和创新的渐进式特征融合策略,特别是非邻近层次的直接特征融合自适应空间融合操作

  • 自适应空间融合操作解决了特征融合过程中的信息冲突问题
  • 渐进式特征融合则优化了信息流在不同层级间的传递,最大化地保留了有用的信息
  • 非邻近层次的直接特征融合,跨层级信息融合,允许高层特征直接与更低层特征结合,跳过中间层级,这样可以更快地将语义信息整合到细节信息中

AFPN的设计思路与软件工程中的迭代开发有共同点。

在软件开发过程中,开发团队通常不会一开始就完全设计出所有细节,而是通过不断迭代,逐步完善软件的功能和性能。

每个迭代周期中,都会评估现有的设计,引入新的功能,并改进用户体验。

这种逐步逼近最终目标的方法,既保证了项目的灵活性,也允许团队根据反馈不断调整方向,最终达到更优的产品质量。

同样,在建筑领域,设计和构建一个建筑物也往往采用类似的渐进式方法。

从概念设计开始,到初步设计,再到详细设计和施工图纸的制作,每一步都在逐渐加深对建筑物的理解和控制,同时也允许在过程中根据新的信息和条件进行调整。

这种思路的共同点在于,无论是组织活动、软件开发,还是建筑设计,都强调了在过程中灵活适应变化、逐步完善和精细化的重要性。

AFPN通过将这一思路应用到特征金字塔网络的设计中。

AFPN 核心组件:

  1. 非邻近层次直接特征融合:传统的FPN通常只将相邻层次的特征进行融合,而AFPN能够直接将不同层次的特征进行融合,这样可以更好地保留高层的语义信息和低层的细节信息。

  2. 自适应空间融合操作:在合并不同层次的特征时,AFPN使用一种特殊的方法来确保信息不会相互冲突,这样做可以更精准地保留对于识别对象有用的信息。

    因为在多层级特征融合过程中,不同层次的对象信息可能存在矛盾,通过引入自适应空间融合操作,可以过滤并保留对融合过程有用的信息,解决了简单的元素级求和不足以处理复杂信息融合的问题。

    在这里插入图片描述
    上图是对AFPN中使用的自适应空间融合操作的具体说明,展示了在不同层级特征之间应用该操作的效果。

    表明了如何结合来自不同层级的特征以生成一个综合特征,并使用策略自动分配权重,选择来区分上采样、下采样和横向连接。

  3. 从低层特征开始逐步融合高层特征:AFPN采取从低层次开始,并逐步添加高层次特征的方法

    是因为低层特征包含更多的细节信息,而高层特征包含更丰富的语义信息。

    通过从低层开始并逐步融合高层特征,可以确保融合后的特征同时包含细节和语义信息,避免了信息的丢失和降级。

在这里插入图片描述
上图展示了AFPN的结构细节,如特征是如何通过网络的不同层次进行融合的。

它通常会展示从输入图像的原始特征开始,如何通过上采样(增加分辨率)和下采样(降低分辨率)以及横向连接来融合特征。

图中可能会用不同颜色的箭头表示不同操作,比如蓝色箭头可能代表卷积操作,绿色箭头代表自适应空间融合。

 

假设我们要在一张照片中识别和定位不同大小的狗。

  1. 非邻近层次直接特征融合

    • 传统的FPN可能会分别处理照片中的大型狗(使用高层次的特征)和小型狗(使用低层次的特征),然后将这些特征逐层融合。
    • AFPN的方式:它可以直接将识别大型狗的高层次特征与识别小型狗的低层次特征合并。

     
    这意味着,不管狗的大小,模型都能同时考虑狗的整体形状(高层次的语义信息)和毛发、眼睛等细节(低层次的细节信息)。

  2. 自适应空间融合操作

    • 在融合特征时,可能会遇到一些矛盾,比如同一个位置既有大型狗的一部分也有小型狗的一部分。
    • AFPN的方法:它能够识别出这种矛盾,并自动调整融合策略,只保留有助于识别和定位狗的信息。

     
    这样,无论是大狗还是小狗,模型都能更准确地识别它们。

  3. 渐进式特征融合 - 从低层特征开始逐步融合高层特征

    • 一开始,AFPN专注于捕捉照片中的所有狗的细节特征,如毛发纹理和眼睛。
    • 然后,它逐渐添加了识别狗的整体形状和姿态的高层次特征。
    • 这个过程的结果:是一个综合的特征表示,既包含了细节信息(帮助区分不同种类的狗),也包含了语义信息(帮助理解狗的整体形态)。

     
    这使得模型能够在各种大小和姿态的狗中做出准确的识别和定位。

AFPN 不直接处理单个大小的对象,而是综合考虑不同层次的信息,以更全面地理解图像内容。

小目标涨点

更新中…

YOLO v5 魔改

YOLO v7 魔改

YOLO v8 魔改

YOLO v9 魔改

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

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

相关文章

吴恩达deeplearning.ai:数据增强数据合成迁移学习

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 让我们看看为你的程序添加数据的技巧。在构建神经网络的时候,我们总是想要更多的数据,但是获取更多的数据往往是十分昂贵又缓慢的。相反地,添加数据的另一…

现在做抖店还能行吗?给2024年想入局抖店的新手,一些建议

我是王路飞。 说起来抖店好像也不算是个新项目了,毕竟抖音小店正式上线时间是在2019年,到现在也有5年多时间了。 我这边是从20年开始入局抖店的,比较庆幸的是赶上了当初的流量风口,且一直坚持到了现在。 由刚开始的单人单店&am…

手写分布式配置中心(六)整合springboot(自动刷新)

对于springboot配置自动刷新,原理也很简单,就是在启动过程中用一个BeanPostProcessor去收集需要自动刷新的字段,然后在springboot启动后开启轮询任务即可。 不过需要对之前的代码再次做修改,因为springboot的配置注入value("…

Unity 给刚体一个力或速度

创建平面和小球,给力或给速度让其弹起 给小球挂载刚体(Rigibdody)和脚本 (力是累计或者衰减的,直接给速度就是赋值,但如果速度就和力类似了) using System.Collections; using System.Collect…

数据库(mysql)-新手笔记(主外键,视图)

主外键 主键(唯一性,非空性) 主键是数据库表中的一个或多个字段,其值唯一标识表中的每一行/记录。 唯一性: 主键字段中的每个值都必须是唯一的,不能有两个或更多的记录具有相同的主键值 非空性:主键字段不能包含NULL值。 外键(引用完整 …

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Marquee)

跑马灯组件,用于滚动展示一段单行文本。仅当文本内容宽度超过跑马灯组件宽度时滚动,不超过时不滚动。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Ma…

Python笔记|基础算数运算+数字类型(1)

重新整理记录一下python的基础知识 基础运算符 、-、*、/ ;括号 ()用来分组。 >>>2 2 4 >>>50 - 5*6 20 >>>(50 - 5*6) / 4 5.0 >>>8 / 5 1.6向下取整除法:向下舍入到最接近的整数的数学除法。运算符是 //。比如1…

AI大模型,掀起新一波智能浪潮!

AI大模型的出现,标志着人工智能技术迈入了一个新的阶段。这些巨大的模型不仅在规模上超越了以往任何其他人工智能系统,而且在性能上也取得了巨大的突破。由于其庞大的参数量和复杂的结构,AI大模型在各个领域展现出了强大的学习能力和推理能力…

代码随想录算法训练营第day10|232.用栈实现队列、 225. 用队列实现栈

目录 a.232.用栈实现队列 b. 225. 用队列实现栈 a.232.用栈实现队列 题目链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素…

Linux系统——Haproxy高性能负载均衡软件

目录 一、Haproxy介绍 1.Haproxy定义 2.Haproxy主要特性 二、安装Haproxy 1.yum安装 2.第三方rpm包安装 3.编译安装 3.1解决Lua环境 3.2编译安装Haproxy 三、配置文件详解 1.状态页 2.日志管理 2.1定义日志到其他主机站点 3.指定进程线程个数 4.cpu亲缘性 5.多进…

测试框架到底是什么,如何定义?

测试框架的关键组件是什么? 测试执行引擎:协调测试的运行、管理序列和报告结果。 测试脚本存储库:存储将要执行的实际测试用例或脚本。 测试数据:测试执行所需的输入数据,可以是静态的、动态的或动态生成的。 存根和…

【Kafka系列 07】Kafka 如何保证消息不丢失

一、Kafka 消息不丢失的边界 一直以来,很多人对于 Kafka 丢失消息这件事情都有着自己的理解,因而也就有着自己的解决之道。在讨论具体的应对方法之前,我觉得我们首先要明确,在 Kafka 的世界里什么才算是消息丢失,或者…