CornerNet详解

论文动机

1、anchor-box 好用,但是有两个缺点:
1)、数量太多,造成负样本太多,样本不均衡,导致训练效率低。
2)、anchor-box引入太多超级参数,数量,大小,长宽比等增加算法设计难度。

所以想通过一组关键点,用左上角和右下角的点来代替bbox。

网络结构

在这里插入图片描述

在这里插入图片描述

Heatmaps预测哪些点最有可能是Corners点,Embeddings用于表征属于相同对象的corner的相似度。它们的通道数都为C,C是object的类别数 (不包括background) 。最后的Offsets用于对corner的位置进行修正。

在这里插入图片描述

主干网络 —— Hourglass Network

hourglass 结构:
在这里插入图片描述
Hourglass先由卷积和池化将feature maps下采样到一个很小的尺度,之后再用nearest neighbor upsampling的方法进行上采样,将feature maps还原到最开始的尺度。不难看出,下采样和上采样是对称的,并且在每个upsampling层都有一个skip connection,skip connection上是一个residual modules。

使用这种沙漏结构的目的是为了反复获取不同尺度下图片所包含的信息。例如一些局部信息,包括脸部和手部信息。沙漏结构可以获取局部信息和全局信息。

  1. 、Hourglass在下采样时不再进行max-pooling,而是在卷积时通过stride=2进行下采样。
    2)、 在每个skip connection,有两个residual modules。
    3)、图片进入Hourglass前,进行了2次下采样。

CornerNet 主干网络由多个hourglass组成。
在这里插入图片描述

网络预测

在这里插入图片描述
上面两条支路经过33的卷积后,进行corner pooling,相加汇集成1路,随后再进行3x3的卷积和batch normalization;最下面的支路进行11的卷积和batch normalization 后,与上路相加后送入到Relu函数中。随后,再对feature maps进行33的卷积,接着分三路33的卷积+Relu后产生了Heatmaps, Embeddings, Offsets三组feature maps。

Corner-pooling

在这里插入图片描述
corner-pooling 希望把最大响应的点移动到角点上。

corner pooling的动机其实为了更好地适应corner的检测。在目标检测的任务中,object的corner往往在object之外,所以corner的检测不能根据局部的特征,而是应该对该点所在行的所有特征与列的所有特征进行扫描

有一点值得注意的是,池化时不能直接对整行或整列进行max pooling,当一张图上有多个目标时,这样会导致误检。

loss 计算

cornerNet 输出3条分支,每条分支对应一个loss。

1、headmap, 角点预测位置。

在这里插入图片描述
pcij 表示第c 个通道的(i,j)位置的值。ycij 表示对应的ground truth。N表示目标数量。ycij 等于其他目标值说说明(i,j)不是类别c的目标角点。 但是这里ycij不是0,而是用基于ground truth角点的高斯分布计算得到因此距离ground truth比较近的(i,j)点的ycij值接近1,这部分通过β参数控制权重,这是和focal loss的差别。

为什么要对不同负样本点的损失函数采取不同权重值?

这是因为headmap 带有一定的位置回归色彩,有些角点虽然没有落在ycij=1的位置上,但由角点生成的框基本正确地预测了位置,因此是有用的预测框。如此要么设为ignore ,要么为给定一定权重的正样本。我认为设为给定权重的正样本,可以使得样本更加均衡。
ycij 成高斯分布,使得在正样本和负样本之间形成一个过度区域。

ycij 计算方式:

以真实的角点为中心为1,往边上辐射值逐渐变小。但是怎么变化呢?也就是在这里高斯分布怎么变化呢?圆圈内的点的数值是以圆心往外呈二维的高斯分布exp(-(x2+y2)/2σ^2),σ=1/3设置的这里x,y为以真实坐标为原点新建坐标系。

2、offset

在这里插入图片描述
在这里插入图片描述

3、embedding,一对一关联。,如何找到一个目标的两个角点。

基于不同角点的embedding vector之间的距离找到每个目标的一对角点,如果一个左上角角点和一个右下角角点属于同一个目标,那么二者的embedding vector之间的距离应该很小

在这里插入图片描述
最终,总的损失为 :

在这里插入图片描述
作者在实验中设置各loss权重参数分别为0.1,0.1,1.

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RetinaNet是一种用于目标检测的深度学习模型。它是由Facebook AI Research团队在2017年提出的,旨在解决目标检测中存在的困难问题。 RetinaNet采用了一种特殊的网络结构,称为特征金字塔网络(Feature Pyramid Network,简称FPN),用于从图像中提取不同尺度的特征。这样可以使模型能够对不同大小和尺度的目标进行准确的检测。 与其他目标检测模型不同的是,RetinaNet采用了一种称为“焦点损失”(Focal Loss)的新的损失函数。传统的交叉熵损失函数在目标检测中常常面临正负样本不平衡的问题,即负样本远多于正样本。而焦点损失函数通过引入一个可调整的参数,有效地缓解了这个问题。它专注于解决难以分类的样本,即具有高置信度分数但分类错误的样本,从而提高了模型的检测精度。 RetinaNet还使用了一种称为“双向框架”(BiFPN)的多级特征融合方法。在目标检测任务中,不同尺寸的目标需要不同层级的特征进行检测。BiFPN通过在不同层级之间进行信息传递和特征融合,使得模型可以同时利用高级语义信息和低级细节特征,从而提高了目标检测的准确性。 总的来说,RetinaNet是一种基于特征金字塔网络的目标检测模型,通过引入焦点损失函数和双向框架,有效地解决了目标检测中的困难问题,提高了检测精度。这种模型的诞生为目标检测任务的进一步发展和应用提供了有力的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值