YOLOv5改进系列(五) 更换Neck之BiFPN,AFPN,BiFusion

文章目录

  • BiFPN
    • 一、BiFPN介绍
      • 1.1 简介
      • 1.2 BiFPN
        • (1)跨尺度连接
        • (2)加权特征融合
      • 1.3 EfficientDet
        • (1)模型框架
        • (2)复合缩放
    • 二、添加方式1:Add操作
        • 第①步:在common.py中添加BiFPN模块
        • 第②步:在yolo.py文件里的parse_model函数加入类名
        • 第③步:创建自定义的yaml文件
        • 第④步:验证是否加入成功
        • 第⑤步:修改train.py
    • 三、添加方式2:Concat操作
        • 第①步:在common.py中添加BiFPN模块
        • 第②步:在yolo.py文件里的parse_model函数加入类名
        • 第③步:创建自定义的yaml文件
        • 第④步:验证是否加入成功
        • 第⑤步:修改train.py
  • Neck之AFPN
    • 一、AFPN介绍
      • img1.1 简介
      • 1.2 提取多级特征
      • 1.3 渐进架构
      • 1.4 自适应空间融合
      • 1.5 实验
    • 二、更换AFPN的方法
        • 第①步:在common.py中添加AFPN模块
        • 第②步:修改yolo.py文件
        • 第③步:创建自定义的yaml文件
  • BiFusion
        • YOLOv6贡献
        • BiFusion Neck 融合的原理
        • BiFusion Neck结构图
        • 参数量与计算量
        • YOLOv5 BiFusion Neck 配置文件

BiFPN

详细解读

一、BiFPN介绍

1.1 简介

EfficientDet 是继 2019 年推出 EfficientNet 模型之后,Google 人工智能研究小组Tan Mingxing等人为进一步提高目标检测效率,以 EfficientNet 模型和双向特征加权金字塔网络 BiFPN为基础,于2020 年创新推出的新一代目标检测模型,在COCO数据集上吊打其他方法。

EfficientDet = Backbone(EfficientNet) + Neck(BiFPN) + Head(class + box)

img


1.2 BiFPN

(1)跨尺度连接
  • 移除那些只
### BIFPN架构图及其特点 BiFPN(双向特征金字塔网络)是一种改进型的特征金字塔网络,用于提升目标检测模型中不同尺度特征之间的融合效果。这种结构不仅保留了传统的自顶向下的路径,还增加了自底向上的连接方式,使得低层细节信息能够更好地传递到高层语义表示中去[^2]。 #### BiFPN的关键特性: - **多方向的信息流**:除了标准的从粗粒度到细粒度的特征传播外,BiFPN允许反向传输,即从高分辨率到低分辨率逐级加强特征表达。 - **加权特征融合**:为了优化跨层次间的特征组合,在每次汇聚操作之前会对输入节点应用可学习权重参数,确保重要性的动态调整。 虽然具体的可视化图表未在此处提供,但通常情况下,BiFPN的架构可以通过以下要素来描绘: 1. 多个并行存在的特征提取分支; 2. 自顶向下与自底向上两条主要的数据流动路线; 3. 各层之间存在密集且双向的跳跃链接; 4. 特征融合点配备有相应的权重机制以调节各路贡献比例。 对于希望获取更加直观理解的朋友来说,建议查阅相关论文或者技术文档中的插图部分,那里往往会给出详细的框架布局说明以及工作流程示意。 ```python # 这里仅作为示例展示如何绘制简单的图形,并非实际BIFPN代码实现 import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.set_title('Simplified Illustration of BiFPN') ax.text(0.5, 0.9,'Input', ha='center', va='center') for i in range(1,6): ax.add_patch(plt.Rectangle((i/7-.1,i*.1), .2,.08)) if i>1: # Top-down path plt.arrow(i/7+.05,(i-1)*.1+i*.01,i/7-(i-1)/7,-.09,head_width=0.02) # Bottom-up path with weighted fusion plt.arrow((i-1)/7+.05,i*.1+(i-1)*.01,(i-1)/7-i/7,-.09,head_width=0.02) plt.axis('off') plt.show() ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小酒馆燃着灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值