FPN & RetinaNet理解

FPN与Retina Net个人理解


Retina Net前的目标检测网络存在的问题及原因:

  • one-stage 算法如YOLO系列速度快但精度不够高
  • 原因:训练过程中类别分布不平衡,容易受到大量简单样本的支配
  • two-stage算法如Faster RCNN精度高但是速度不够快
  • 原因: 两次的预测降低了速度

FPN网络的发展演变

  • CNN:直接使用最后一层特征图
    在这里插入图片描述
  • 上述方法会丢失一些细节特征,因为不同层会提供不同的图片特征,于是想到利用不同尺度图像的特征,进行训练、测试
    在这里插入图片描述
    将图片缩放成多种比例,每个比例的单独提取特征
  • 为了节约时间,可以在上述思想下直接利用特征图
    在这里插入图片描述
  • FPN网络则更加复杂一些,它在获得了各层特征图之后还进行回传,进行上采样,并且和原来正向传播的特征图进行相加,实现特征的融合。
    在这里插入图片描述
    简单来说就是把高层的特征进行上采样(最邻近上采样),把上采样后得到的特征横向连接至前一层特征,这样就将特征进行了加强,横向连接的具体操作就是对应元素间的相加,于是这要求两个矩阵的维度完全一样。
    为了实现这样完全一样的矩阵,横向连接时左边的矩阵要先经过1*1的卷积增加通道数,这是因为进行上采样的特征图在之前经过了卷积,因此通道数会和横向连接的左边的特征图不一致,二者完全一致后就可以进行相加操作了。(可以参考下图)
    在这里插入图片描述

Retina Net

  • 网络结构:了解了FPN结构后再接触Retina Net就显得很简单了,他的主网络就是FPN网络,而对于每一个特征图的输出又采取了两个子网络分别进行分类和回归任务。

  • hard/easy positive/negative examples
    在说明损失函数前先说明一下examples的概念
    在这里插入图片描述
    观察上图,可以知道hard examples是难以分辨的例子,easy examples则容易辨别;positive examples和negative examples则是正负样本
    此时再考虑为什么one-stage精度低,因为negative example过多(背景),导致它的loss过大,以至于主导了损失函数,不利于收敛。虽然大部分背景图不在物体和背景上的过渡区域,也就是很容易辨别,但是架不住数量众多啊,于是影响了我们想要关注的hard examples对loss的贡献。
    另外Faster RCNN在使用FPN阶段时会根据前景分数提出最可能是前景的example,滤除掉大量背景概率高的easy example,但是速度就会慢一些

  • 损失函数
    Retina Net的损失函数是Focal Loss
    在这里插入图片描述
    先看一下他以前的版本损失函数是怎么样的:

  1. 计算分类时的传统loss:交叉熵公式像下面这样:

在这里插入图片描述
其中y=1表明这个候选框是一个物体而不是背景,而为了解决正负样本数量不均则会加一个系数来平衡,就变成了下面这样:

在这里插入图片描述
但是现在只解决了positive 和 negative example不均的问题,没有解决hard 和easy example 的不均问题。其实本来easy example就可以很方便地被检测出来。应该关注的是hard example的效果,对着已经可以检测出来的easy example来进行效果上的提升,最终模型训练的效果也就不明显,模型应该主要关注那些难于分类的样本,这才能提升自己。那么想法就是在loss上再加上点什么平衡一下head和easy example的数量影响:
在这里插入图片描述
假设gamma = 2,那么p=0.9那么(1-0.9)平方后就是0.001,那么easy example 的权重被大幅减小,另外还不要忘记对positive 和 negative example的关心,于是最终版本如下:
在这里插入图片描述
由下面这张图可以看出来,损失已经被hard example主导了
在这里插入图片描述


参考资料
目标检测算法之RetinaNet(引入Focal Loss)
学习FPN和retinanet的网络结构
FPN 学习笔记

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Faster R-CNN、R-FCN、SSD、FPN、RetinaNet和YOLOv3 MobileNet都是目标检测算法,用于在图像或视频中检测和定位物体。 Faster R-CNN是一种先进的目标检测算法。它由两个主要组件组成:区域提取网络(Region Proposal Network,RPN)和分类网络。RPN负责生成潜在的物体候选框,分类网络用于对候选框进行分类和定位。 R-FCN(Region-based Fully Convolutional Networks)通过引入ROI池化操作来消除Faster R-CNN中的全连接层,使网络可以端到端地进行训练,从而提高了计算效率和准确性。 SSD(Single Shot MultiBox Detector)是一种单阶段目标检测算法,通过在不同尺度的特征图上同时进行预测,实现了更快的检测速度。SSD通过多个不同大小和宽高比的锚框进行物体检测和分类。 FPN(Feature Pyramid Networks)是一种用于解决多尺度物体检测的算法。它通过构建金字塔式的特征图,使得网络在不同尺度的信息都能得到有效的利用,提高了检测的准确性。 RetinaNet是一种基于金字塔结构的目标检测算法。它使用了一种特殊的损失函数(Focal Loss),能够有效地解决正负样本极度不平衡的问题,同时保持了高度的检测准确性。 YOLOv3 MobileNet是YOLO(You Only Look Once)系列目标检测算法的一种轻量级版本。它通过使用MobileNet作为主干网络,实现了更小的模型体积和更快的检测速度,适用于在资源受限的设备上进行实时目标检测。 综上所述,这些目标检测算法各有特点,适用于不同的场景和应用需求。根据具体的要求和实际情况选择适合的算法可以达到更好的检测效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值