深度学习目标检测算法之RetinaNet算法

文章目录

  • 前言
  • RetinaNet 算法原理
    • 1.RetinaNet 简介
    • 2.backbone 部分
    • 3.FPN特征金字塔
    • 4.分类和预测
    • 5.Focal Loss
  • 结束语


  • 💂 个人主页:风间琉璃
  • 🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助欢迎关注点赞收藏(一键三连)订阅专栏

前言

提示:这里可以添加本文要记录的大概内容:

在RetinaNet之前,目标检测领域普遍认为one-stage算法,如YOLO系列和SSD,在准确性上不及two-stage算法,如Faster R-CNN。这种差异主要源于以下两个原因:

  • two-stage算法的流程包括使用RPN(Region Proposal Network)生成一系列的建议框,随后在这些建议框的基础上利用Fast R-CNN进行精细化调整,这一双阶段的设计使得结果更为精确。
  • 样本不平衡问题在one-stage算法中尤为突出。在Faster R-CNN中,正负样本的比例被明确设定为1:3,而one-stage算法中的正负样本比可能极端失衡,有时甚至达到1:1000。这种不平衡导致在训练过程中,梯度主要被简单样本所驱动,而复杂样本因为占比小,在损失函数的计算中被大量简单样本的影响所淹没。

RetinaNet的提出,在一定程度上解决了这一问题,它使得one-stage算法也能达到与two-stage算法相媲美的准确性。RetinaNet 原始论文为发表于 2017 ICCV 的 Focal Loss for Dense Object Detection。one-stage 网络首次超越 two-stage 网络,拿下了 best student paper,仅管其在网络结构部分并没有颠覆性贡献。

论文地址:https://arxiv.org/pdf/1708.02002.pdf


RetinaNet 算法原理

1.RetinaNet 简介

单阶段目标检测经过不断发展,虽然在检测速度上能够满足实时性的要求,但在精度上与 R-CNN 系列为代表的两阶段目标检测仍有着一定的差距。一个主要原因是正负样本数量的不均衡,对训练过程产生负面影响, He 等人提出基于Focal Loss的RetinaNet 模型,来改善样本间的不均衡性,以达到两阶段检测方法同等的精度。
在这里插入图片描述
如上图所示,RetinaNet 网络主要由ResNet主干网络FPN特征金字塔分类子网络边框回归子网络组成。其中,主干网络由 ResNet 与 FPN 共同构成,以实现对目标的特征提取分类子网络与边框回归子网络分别负责对== FPN 输出的特征图进行目标分类与位置回归==。在锚点的设计上,为了使锚框与目标边框的重合度更高, RetinaNet 设置了三种长宽比为 1:2、 1:1、 2:1,尺寸为 2 0 、 2 1 / 3 、 2 2 / 3 2^0、2^{1/3}、2^{2/3} 2021/322/3 的锚框,并使锚框的大小跟随特征层的增加而增加,使之能够匹配不同特征层上大小尺度不同的目标。

2.backbone 部分

在这里插入图片描述
RetinaNet的网络结构如图所示,与FPN网络相比,FPN在构建过程中融合了C2层的特征,而RetinaNet则跳过了C2层。这一省略是出于对计算资源的有效利用考虑,因为C2层产生的P2特征图会显著增加计算的复杂度。因此,RetinaNet的设计者选择了从C3层直接开始生成P3特征图。

RetinaNet的backbone部分与FPN在结构上相似,在P6特征图的生成上,RetinaNet的实现与原始论文描述的不同。原论文建议通过最大池化操作来下采样C5层的特征图以获得P6,而在实际的pytorch实现中,采用了一种更为高效的方法——通过一个3×3的卷积层来进行下采样。RetinaNet与FPN在特征图的尺度上也有所不同。FPN构建了一个从P2到P6的特征金字塔,而RetinaNet则构建了一个从P3到P7的特征金字塔。

3.FPN特征金字塔

深度神经网络学习到的特征中,浅层特征学到的是物理信息,如物体的角点、边缘的细节信息,而深层特征学到的是语义信息,更加high-level和抽象化。对于分类任务来说,深层网络学到的特征可能更为重要,而对于定位任务来说,深层次和浅层次的特征同样重要,因为要想精准的定位,浅层的物理细节信息是必不可少的。
在这里插入图片描述
FPN之前的目标检测算法,多数只采用顶层特征来做预测,所含的细节信息比较粗略,即使采用了特征融合的方法,也一般是采用融合后的特征进行预测的。FPN提出了特征金字塔网络,可以在不同的特征层上独立进行预测。FPN 通过自下向上、自上向下以及横向连接,可以融合不同层的特征图,得到更加丰富的信息,如上图所示。
在这里插入图片描述

  • 图(a)
    先对原始图像构造图像金字塔,然后对图像金字塔的每一层提取不同的特征并进行相应的预测。优点:精度不错;缺点:计算量大,占用内存大。

  • 图(b)
    通过对原始图像进行卷积和池化操作来获得不同尺寸的特征图,在图像的特征空间中构造出金字塔。因为浅层的网络更关注于细节信息,高层的网络更关注于语义信息,更有利于准确检测出目标,因此利用最后一个卷积层上的feature map来进行预测分类。优点:速度快、内存少。缺点:仅关注深层网络中最后一层的特征,却忽略了其它层的特征。

  • 图(c )
    在图(b)的基础之上,同时利用低层特征和高层特征,首先在原始图像上面进行深度卷积,然后分别在不同的特征层上面进行预测。优点:在不同的层上面输出对应的目标,不需要经过所有的层才输出对应的目标(即对于有些目标来说,不用进行多余的前向操作),速度更快,又提高了算法的检测性能。缺点:获得的特征不鲁棒,都是一些弱特征(因为很多的特征都是从较浅的层获得的)。

  • 图(d)
    FPN(Feature Pyramid Network)即特征金字塔:自下而上,自上而下,横向连接和卷积融合
    (1)自下而上:即神经网络的前向传播过程,特征图经过卷积核计算,通常会越变越小。对于ResNet,使用每个阶段的最后一个residual block输出的特征激活输出。对于conv2,conv3,conv4和conv5输出,将这些最后residual block的输出表示为{C2,C3,C4,C5},如下图所示,并且它们相对于输入图像具有{4, 8, 16, 32} 的步长。由于其庞大的内存占用,不会将conv1纳入金字塔中。
    (2)自上而下把更抽象、语义更强的高层特征图进行上采样(upsampling),而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。横向连接的两层特征在空间尺寸相同,这样做可以利用底层定位细节信息。将低分辨率的特征图做2倍上采样(为了简单起见,使用最近邻上采样)。然后通过按元素相加,将上采样映射与相应的自底而上映射合并。这个过程是迭代的,直到生成最终的分辨率图。 为了开始迭代,只需在C5上附加一个1×1卷积层来生成低分辨率图P5。最后,在每个合并的图上附加一个3×3卷积来生成最终的特征映射,这是为了减少上采样的混叠效应。这个最终的特征映射集称为{P2,P3,P4,P5},分别对应于{C2,C3,C4,C5},它们具有相同的尺寸。 由于金字塔的所有层次都像传统的特征化图像金字塔一样使用共享分类器/回归器,因此在所有特征图中固定特征维度(通道数,记为d),文中设置d = 256,因此所有额外的卷积层都有256个通道的输出。
    (3)横向连接:采用1×1的卷积核进行连接(减少特征图数量)。
    在这里插入图片描述

在RetinaNet网络中,输入特征经ResNet50骨干网络特征提取后,送入FPN特征金字塔中进行特征融合,以得到目标的多尺度信信息,丰富特征语义。 RetinaNet 中的特征金字塔对 FPN 部分改进,FPN 接收 C3、 C4、 C5 特征图,输出 P3-P7 五个特征图,其中 P5 上采样和 P4 进行融合, P4 上采样与 P3 进行融合, P6 和 P7 为 P5 下采样得到,目的是增大感受野,获得图片的全局信息,具体结构如下图所示。
在这里插入图片描述

4.分类和预测

在这里插入图片描述
融合后的特征层送入分类子网络(Class Subnet)边界框子网络(Box Subnet)中,分类子网络中先进行 4 次卷积核为 256 的 3×3 的卷积操作,并且在每次卷积后都使用一次 Relu 激活函数,再进行一次卷积核为K×A3×3 卷积操作,其中== K 为目标的类别数==,== A 为锚框的数量==,最后使用 Softmax 函数得到每个锚框的置信度,训练时候选择达到置信度阈值的锚框使用Focal Loss计算分类损失,并对网络进行学习优化,分类子网络和边界框框子网络之间不共享参数,但对特征层之间实现参数共享。

5.Focal Loss

基于回归的目标检测算法由于没有候选区域生成这一步骤,因此在使用锚点对目标进行预测时,会出现正负样本不平衡和难易样本不平衡问题,这将使简单负样本占据网络模型训练中的大部分损失值,导致网络模型的优化效果不佳,影响网络模型对难样本的训练,进而使得网络模型对目标的检测效果不好。

对此, Focal Loss 有效解决了目标检测中存在的类别不平衡问题和难易样本不平衡问题,它通过控制正负样本和难易样本的权重,具体如下:
F L ( p t ) = − α ( 1 − p t ) γ log ⁡ p t {\color{Green} FL(p_t) = -\alpha (1-p_t)^\gamma \log_{}{p_t}} FL(pt)=α(1pt)γlogpt p t = { p , p = 1 1 − p , o t h e r w i s e } {\color{Green} p_t=\begin{Bmatrix} p,p=1 \\1-p,otherwise \end{Bmatrix}} pt={p,p=11p,otherwise}式中, p t p_t pt是预测框分类的得分; α \alpha α表示用于控制正负样本平衡的参数,取值为 0.25; γ \gamma γ表示调制因子参数,是降低易分类样本在学习中所占比重的参数,取值为 2。

当样本被错误分类且置信度较低时,调制因子 ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ接近 1损失函数不受影响;当样本置信度较高时,调制因子 ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ接近于 0,可以有效减少易分类样本的损失权重Focal Loss 不仅减少简单样本对分类损失函数的贡献,并扩大错误高难度样本的损失范围,实现对分类过程中的正负样本贡献均衡,提高单阶段检测模型的检测性能。

在retinanet网络中其损失函数如下所示:
L o s s = 1 N P O S ∑ i L c l s i + 1 N P O S ∑ j L r e g j {\color{Orange} Loss = \frac{1}{N_{POS}} \sum_{i}^{} L_{cls}^i+\frac{1}{N_{POS}} \sum_{j}^{} L_{reg}^j} Loss=NPOS1iLclsi+NPOS1jLregj其中 L c l s L_{cls} Lcls表示是Sigmoid Focal Loss; L r e g L_{reg} Lreg表示的是L1 Loss; N P O S N_{POS} NPOS表示的是正样本的个数;i表示所有的正负样本;j表示所有的正样本 ;

总损失依然分为两部分,一部分是分类损失,一部分是回归损失。Focal loss 比较独特的一个点就是正负样本都会来计算分类损失,然后仅对正样本进行回归损失的计算。

结束语

感谢阅读吾之文章,今已至此次旅程之终站 🛬。

吾望斯文献能供尔以宝贵之信息与知识也 🎉。

学习者之途,若藏于天际之星辰🍥,吾等皆当努力熠熠生辉,持续前行。

然而,如若斯文献有益于尔,何不以三连为礼?点赞、留言、收藏 - 此等皆以证尔对作者之支持与鼓励也 💞。

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

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

相关文章

[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

link [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要0x01 启动 1.1 分布式启动1.2 构造基础 1.2.1 获取模型1.2.2 获取数据集1.2.3 步进函数 1.2.3.1 广播数据0x02 Pretrain0x03 初始化 3.1 …

点击标题滚动到指定模块

vue鼠标点击标题滚动到指定模块&#xff0c;如果滚动页面到指定模块的话标题同样改变颜色 <script> export default {name: ceshi,data() {return {activeSection: 0, // 默认激活第一个标题sections: [{ title: Section 1, content: Content for section 1 },{ title: S…

Kubernetes 镜像拉取策略全解析:如何根据需求选择最佳配置?

在Kubernetes集群里&#xff0c;拉取容器镜像是一个非常关键的步骤。这些镜像包含了应用程序及其所有需要的依赖项&#xff0c;Kubernetes通过拉取这些镜像来启动Pod中的容器。为了提升集群的稳定性、速度和安全性&#xff0c;Kubernetes提供了几种不同的镜像拉取策略。这篇文章…

【碳库】双碳目标下农田温室气体排放估算与模拟(从碳库模拟、机器学习方法、生命周期评价法(LCA)、经验模型和过程模型多个维度)

生态与农业是甲烷&#xff08;CH4&#xff09;、氧化亚氮&#xff08;N2O&#xff09;和二氧化碳&#xff08;CO2&#xff09;等温室气体的主要排放源&#xff0c;占全产业排放的13.5%。农田温室气体又以施肥产生的N2O和稻田生产产生的CH4为主&#xff0c;如何对农田温室气体进…

[计算机网络]OSPF协议

开放最短路径优先OSPF 1&#xff09;OSPF的工作方式 1>和谁交换消息 使用洪泛法&#xff0c;向本自治系统的所有路由器发送消息。 2>交换什么消息 发送的消息就是与本路由器相邻的所有路由器的链路状态&#xff0c;但这只是路由器所知道的部分信息。 链路状态就是说…

mysql进阶

存储引擎 MySQL体系结构&#xff1a; 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的&#xff0c;所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作&#xff1a; -- 查询建表语句 show create table ac…

Unity2021.3.16f1可以正常打开,但是Unity2017.3.0f3却常常打开闪退或者Unity2017编辑器运行起来就闪退掉

遇到问题&#xff1a; 从今年开始&#xff0c;不知道咋回事&#xff0c;电脑上的Unity2017像是变了个人似得&#xff0c;突然特别爱闪退掉&#xff0c;有时候还次次闪退&#xff0c;真是让人无语&#xff0c;一直以来我都怀疑是不是电脑上安装了什么别的软件了&#xff0c;导致…

linux系统上SQLPLUS的重“大”发现

SQL plus版本&#xff1a; [oraclepg-xc2 ~]$ sqlplus -v SQL*Plus: Release 19.0.0.0.0 - Production Version 19.3.0.0.0 操作系统&#xff1a;CentOS Linux 7 (Core) 数据库&#xff1a;Oracle 19c Version 19.3.0.0.0 同样的SQL脚本在windos CMD sqlplus 执行没问题。…

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

本篇文章将介绍一个新的改进机制——SMFA&#xff08;自调制特征聚合模块&#xff09;&#xff0c;并阐述如何将其应用于YOLOv11中&#xff0c;显著提升模型性能。随着深度学习在计算机视觉中的不断进展&#xff0c;目标检测任务也在快速发展。YOLO系列模型&#xff08;You Onl…

js-000000000000

1、js书写的位置 - 内部 <body> <!-- 习惯把 js 放到 /body 的后面 --> <script> console.log(这是内部 js 的书写位置) alert(内部js) </script> </body> <body><!-- 习惯把 js 放到 /body 的后面 --><script>console.log(这…

Android笔记(四十):ViewPager2嵌套RecyclerView滑动冲突进一步解决

背景 ViewPager2内嵌套横向滑动的RecyclerView&#xff0c;会有滑动冲突的情况&#xff0c;引入官方提供的NestedScrollableHost类可以解决冲突问题&#xff0c;但是有一些瑕疵&#xff0c;滑动横向RecyclerView到顶部&#xff0c;按住它不放手继续往左拖再往右拖&#xff0c;这…

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时&#xff0c;一直在探索性能优化的最佳实践。随着需求的不断迭代&#xff0c;项目中的性能问题难免日积月累&#xff0c;逐渐暴露出来影响用户体验。适逢双十一大促&#xff0c;我们趁着这个机会统一进行了Taro性能优化实践&#xf…

jangow-01-1.0.1靶机

靶机 ip&#xff1a;192.168.152.155 把靶机的网络模式调成和攻击机kali一样的网络模式&#xff0c;我的kali是NAT模式, 在系统启动时(长按shift键)直到显示以下界面 ,我们选第二个&#xff0c;按回车。 继续选择第二个&#xff0c;这次按 e 进入编辑页面 接下来&#xff0c;…

03.HTTPS的实现原理-HTTPS的工作流程

03.HTTPS的实现原理-HTTPS的工作流程 简介1. HTTPS的工作流程1.1. TCP的工作流程1.1.1. 三次握手的详细步骤1.1.2. 三次握手的作用 1.2. HTTPS的工作流程1.2.1. HTTPS与TCP的关系1.2.2. HTTPS的工作流程 2. 公钥和私钥的作用3. 对称密钥的生成和交换4. 对称加密和非对称加密的区…

阿里云人工智能ACA(五)——深度学习基础

一、深度学习概述 1. 深度学习概念 1-1. 深度学习基本概念 深度学习是机器学习的一个分支基于人工神经网络&#xff08;模仿人脑结构&#xff09;通过多层网络自动学习特征能够处理复杂的模式识别问题 1-2. 深度学习的优点与缺点 优点 强大的特征学习能力可以处理复杂问题…

MySQL和HBase的对比

Mysql &#xff1a;关系型数据库&#xff0c;主要面向 OLTP &#xff0c;支持事务&#xff0c;支持二级索引&#xff0c;支持 sql &#xff0c;支持主从、 Group Replication 架构模型&#xff08;此处以 Innodb 为例&#xff0c;不涉及别的存储引擎&#xff09;。 HBase &am…

Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道

一、专业数据摆渡系统对企业的意义 专业的数据摆渡系统对企业具有重要意义&#xff0c;主要体现在以下几个方面‌&#xff1a; 1、‌数据安全性‌&#xff1a;数据摆渡系统通过加密传输、访问控制和审计日志等功能&#xff0c;确保数据在传输和存储过程中的安全性。 2、‌高…

FPGA的DMA应用——pcileech

硬件通过pcie总线&#xff0c;访存本机的内存&#xff0c;并进行修改&#xff0c;可以进行很多操作。 学习视频&#xff1a;乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址&#xff1a;AMD-Xilinx Vivado™ 2024.1 现…

未来网络技术的新征程:5G、物联网与边缘计算(10/10)

一、5G 网络&#xff1a;引领未来通信新潮流 &#xff08;一&#xff09;5G 网络的特点 高速率&#xff1a;5G 依托良好技术架构&#xff0c;提供更高的网络速度&#xff0c;峰值要求不低于 20Gb/s&#xff0c;下载速度最高达 10Gbps。相比 4G 网络&#xff0c;5G 的基站速度…

一种寻路的应用

应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节&#xff1a; 全国的长途车车站的数据的更新&#xff1a; …