【YOLOv8改进】BiFPN:加权双向特征金字塔网络 (论文笔记+引入代码)

简介: 该专栏深入研究了YOLO目标检测的神经网络架构优化,提出了加权双向特征金字塔网络(BiFPN)和复合缩放方法,以提升模型效率。BiFPN通过双向跨尺度连接和加权融合增强信息传递,同时具有自适应的网络拓扑结构。结合EfficientNet,构建了EfficientDet系列检测器,在效率和准确性上超越先前技术。此外,介绍了YOLOv8如何引入MPDIoU并应用BiFPN进行可学习权重的特征融合。更多详情可参考提供的专栏链接。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

摘要

在计算机视觉领域,模型效率的重要性日益增加。在本文中,我们系统地研究了用于目标检测的神经网络架构设计选择,并提出了几个关键优化以提高效率。首先,我们提出了一种加权双向特征金字塔网络(BiFPN),它允许轻松快速地进行多尺度特征融合;其次,我们提出了一种复合缩放方法,该方法统一缩放了所有主干网络、特征网络以及框/类别预测网络的分辨率、深度和宽度。基于这些优化和更好的主干网络,我们开发了一种新的目标检测器系列,称为EfficientDet,它在广泛的资源约束条件下始终比先前的技术实现了更好的效率。特别是,我们的EfficientDet-D7在COCO test-dev上以单模型和单尺度实现了55.1 AP的最先

创新点

BiFPN(双向特征金字塔网络)的创新点可以从以下几个方面总结:

  1. 高效的双向跨尺度连接:BiFPN的核心创新之一是双向跨尺度连接,允许特征在不同层级之间通过自上而下和自下而上的路径进行更全面的信息传递和融合。这与传统的FPN和PAN不同,后者主要采用自上而下的特征传播方式。

  2. 加权特征融合:BiFPN为每条连接边引入了可学习的权重,允许模型根据不同特征的重要性自适应地调整融合方式。这种加权方法优化了多尺度特征的融合效果,提高了特征表示的准确性。

  3. 不规则特征网络拓扑:BiFPN不局限于固定的网络结构,而是使用神经网络架构搜索技术来寻找最优的特征网络拓扑结构。这提供了更大的灵活性,适应不同的任务和资源约束。

  4. 特征调整和特征选择:在特征融合过程中,BiFPN不仅仅是简单地合并特征,而是通过权重调整和动态特征选择,优化融合结果,确保重要特征得到有效利用。

  5. 与EfficientDet的结合:BiFPN是EfficientDet架构的一部分,其中EfficientNet作为骨干网络,BiFPN负责特征融合。BiFPN的设计允许模型在保持准确性的同时实现高效率,特别是在模型放大时,BiFPN的深度和宽度根据复合缩放方法进行调整。

yolov8 引入MPDIoU

 # 结合BiFPN 设置可学习参数 学习不同分支的权重
# 两个分支add操作
class BiFPN_Add2(nn.Module):
    def __init__(self, c1, c2):
        super(BiFPN_Add2, self).__init__()
        # 设置可学习参数 nn.Parameter的作用是:将一个不可训练的类型Tensor转换成可以训练的类型parameter
        # 并且会向宿主模型注册该参数 成为其一部分 即model.parameters()会包含这个parameter
        # 从而在参数优化的时候可以自动一起优化
        self.w = nn.Parameter(torch.ones(2, dtype=torch.float32), requires_grad=True)
        self.epsilon = 0.0001
        self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0)
        self.silu = nn.SiLU()

    def forward(self, x):
        w = self.w
        weight = w / (torch.sum(w, dim=0) + self.epsilon)
        return self.conv(self.silu(weight[0] * x[0] + weight[1] * x[1]))

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/136021981

相关文章
|
7天前
|
编解码 计算机视觉 网络架构
【YOLOv10改进- 特征融合NECK】BiFPN:加权双向特征金字塔网络
YOLOv10专栏探讨了目标检测的效率提升,提出BiFPN,一种带加权和自适应融合的双向特征金字塔网络,优化了多尺度信息传递。EfficientDet系列利用这些创新在效率与性能间取得更好平衡,D7模型在COCO测试集上达到55.1 AP。YOLOv8引入MPDIoU,结合BiFPN学习分支权重,提高检测精度。详情见[YOLOv10 创新改进](https://blog.csdn.net/shangyanaf/category_12712258.html)和相关文章。
|
13天前
|
机器学习/深度学习 编解码 数据可视化
图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比
目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有类似的实验,今天我们就来使用KAN创建一个图神经网络Graph Kolmogorov Arnold(GKAN),来测试下KAN是否可以在图神经网络方面有所作为。
35 0
|
2天前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
9 0
|
25天前
|
机器学习/深度学习 算法 计算机视觉
没有公式,不要代码,让你理解 RCNN:目标检测中的区域卷积神经网络
没有公式,不要代码,让你理解 RCNN:目标检测中的区域卷积神经网络
45 0
没有公式,不要代码,让你理解 RCNN:目标检测中的区域卷积神经网络
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
49 1
|
3天前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
11天前
|
网络协议 安全 Ubuntu
7 个有用的免费 Linux 网络隧道
【7月更文挑战第4天】
47 0
7 个有用的免费 Linux 网络隧道
|
23天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
48 3
|
10天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
10天前
|
算法 网络协议 Shell
掌握Linux网络:深入理解TC —— 你的流量控制利器
目前需要做一款关于Linux下对于某IP限制的一个工具(QOS),在网上寻找了许多关于TC的教程,大多数都是一些比较基础的教学,且多数都是对网口的一些限制,然后自己研究了一段时间,最后有一些小小的了解,故在此分享给大家。