【深度学习】【ECCV2018】CornerNet及代码解读

CornerNet是一种基于角点检测的物体检测框架,解决了传统方法中样本不平衡和参数过多的问题。该文详细介绍了CornerNet的检测角点、角点分组、Corner Pooling、Hourglass Network等关键步骤,并提供了代码解读,包括数据处理、网络结构和损失函数的计算。实验证明,CornerNet在物体检测任务上表现优越。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Introduction

该论文的作者是美国密歇根大学Hei Law ,论文提出了基于左上和右下2个角点的检测框架,该框架先有检测顶点,再有物体边框。整体架构如下图所示:
在这里插入图片描述

  • anchor box的存在的缺点:
  1. anchor box太多会导致样本不平衡,anchor box存在会保证和gt box有充分的重叠,但是实际过程中只有少部分正样本。
  2. anchor box需要调节的参数太多`,比如说个数,大小,长宽比等等。
  • 为什么检测角点比中心点/proposal更好?
  1. 预测中心依赖于四个边,而角点依赖于两条边。
  2. 可以密集离散box的空间。

在这里插入图片描述
CornerNet 的检测模块如上图所示。上图只表示了top-left部分的结构,bottom-right也有类似的结构。经过backbone之后,首先经过corner pooling操作,输出pooling后的特征图,然后再和Backbone的特征图做融合,最终分为3个分支,分别输出Heatmap,Embedding,Offsets。heatmap主要是预测各类别下top-left角点的位置,Embedding是为了对top-left和bottom-right的角点进行配对,Offsets是为了解决下采样后的特征图与原图对应的问题。

ConerNet

Detecting Corners

该阶段主要生成两种heatmap,每个都是 H × W × C H\times W\times C H×W×C,其中 C C C为类别数,不包含背景。每个通道都是一个二值图来表示角点的位置,对于每个位置,只有一个通道是gt,其他位置都是负样本,在训练过程中,并不是公平的去惩罚负样本,而是在正样本周围给定一个半径,这个半径内的点都为负样本并且与gt的IoU大于阈值(0.3),惩罚的系数由下式得到,这是因为落在半径内的角点仍然可以生成有效的边界定位框。
y c i j = e − x 2 + y 2 2 σ 2 y_{cij}=e^{-\frac{x^2+y^2}{2\sigma ^2}} ycij=e2σ2x2+y2
x , y x,y x,y是正样本的位置坐标,其中:
σ = 1 3 r , r = I o U g t , b b o x > 0.3 \sigma = \frac{1}{3}r,r=IoU_{gt,bbox}>0.3 σ=31r,r=IoUgt,bbox>0.3
损失函数是focal loss的变体。
在这里插入图片描述
p c i j p_{cij} pcij代表第 c c c类第 ( i , j ) (i,j) (i,j)个位置的得分, N N N是一张图片中的目标个数, α , β \alpha,\beta α,β控制着每个点的贡献,其中所有实验中 α = 2 , β = 4 \alpha=2,\beta=4 α=2,β=4 y c i j y_{cij} ycij正是由高斯函数编码的损失。
举个例子:当一个负样本距离正样本的距离越近,那么带入高斯函数中计算得到的 y c i j y_{cij} ycij越高,此时对该负样本的损失就越小,也就是文章中所说的:

With the Gaussian bumps encoded in y c i j y_{cij} ycij , the ( 1 − y c i j ) (1-y_{cij}) (1ycij) term reduces the penalty around the ground truth locations.

回顾一下focal loss, 作者认为一阶段和两阶段的表现主要差异是由前景背景类别不平衡导致的,在双阶段过程中,要么是是在候选框阶段通过score和nms过滤了大量负样本,然后分类和回归阶段也固定了正负样本比例,要么是通过OHEM在线困难挖掘来保证样本平衡。而一阶段会产生上万个候选框,训练被大量负样本所主导。

二分类交叉熵函数:
在这里插入图片描述
Focal loss函数:
在这里插入图片描述
加入 γ \gamma γ因子从而使训练更关注于困难的样本,降低对于易分类样本的损失,比如对于预测结果为0.95的样本肯定是简单样本,所以该样本的损失就会变得更小。
在这里插入图片描述
α \alpha α是平衡因子,用来平衡正负样本本身的比例不均,一般为0.25。
在这里插入图片描述

Grouping Corners

该部分的目的是输入图像会有多个目标,相应地生成多个目标的两个顶点,需要对顶点进行分组来确定是不是属于同一个bbox。在该部分作者主要定义了两个loss,一个是为了让同一物体的两个角点吸引的“pull loss”,一个是为了让不同物体的两个角点相互排斥的“push loss”,公式如下图所示,其中 e t k e_{t_k} etk是第 k k k个目标的左上角点, e b k e_{b_k} ebk是第 k k k个目标的右下角点, e k e_{k} e

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值