Anchor-Free之CornerNet

CornerNet

CornerNet是比较具有开创性的目标检测方法.他是通过两个对角点的坐标和两个对角点所属的类别来进行目标检测的。

传统的anchor-based方法在一些问题:

  1. 如果使用场景和训练集差距大那么效果是将很不理想
  2. 存在正负样本严重不平衡问题,而这种正负样本不均衡问题至今并没有得到了一个很好的解决
  3. 网络收敛慢,尤其是数据集质量不佳的情况下

所以作者抛弃了anchor的做法,以下为大致流程:

网络架构

主干网络用的是Hourglass,FPN输出为两个部分,一个负责左上角点的预测,一个负责右下角点的预测。

Heatmaps: heatmaps一共n_cls(类别数)个通道,值是0或者1,表示是否为该类,这一点和mask-cnn一样,既将一个任务分解为多个任务又减弱了多标签的竞争关系

Embeddings: Embeddings表示每个点的一维特征向量,作者通过Embeddings将heatmaps输出的点划分为哪一个类。如果一个左上角点和一个右下角点来自同一个bounding box,那它们 embedding vector之间的距离应该很小

Offsets:由于网络经过了几次下采样,通过heatmaps重映射回原图时,会损失一些位置精度(尤其是对于小目标检测)

所以添加一个offset来微调角点的位置。

 

Corner Pooling

backbone中作者使用了一个特殊的pooling方式,下图为左上角corner pooling方法:

步骤就是先按从右往左每个像素改为以这个像素往右所有像素的极大值,逐行这样去做,然后按从下往上每个像素改为以这个像素往下所有像素的极大值,每一行都这样。最后,将两个特征图相加。这么做更有利于提取角点的特征。原理就是将比较重要的特征在空间上按一定的方向做延申,从而让特征的形状更接近于边界框的形状。预测左上角的用左上corner pooling否则用右下corner pooling.

 

角点检测

对每个gt正样本位置,作者会画一个圈, 圈的半径要满足在这个圈中采样的点组成的框要和边界框的iou至少为t(t默认为0.3)。对圈内的负样本给予'奖励', 这个奖励服从中心点为正样本位置方差为1/9的二维高斯分布

 

角点分类

对于一场图检测出的多个角点,我们需要找到哪些左上角点和右下角点是属于同一个边界框的。通过预测对角点的特征向量的距离来区分哪两个角点属于同一个框。

 

损失设计

heatmap损失: 

采用了BCELoss, 并加入了重新设计的focalloss,如果圈中里角点越远的点他的损失削弱的越小,越近损失削弱越厉害。

N为一张照片上的目标个数,alpha默认为2,beta默认为4

 

offset损失: 

 

使用了soomthL1损失, 偏移量计算公式为:

 

embedding损失: 

embedding损失分为pull部分和push部分,etk和ebk分别是目标K的左上角和右下角的embedding输出,ek为其平均值,该损失是为了让一个目标的两个角点的特征向量更加相近。push损失中如果两个角点相差过于大损失就为0,这一点类似于偏移量损失,只计算相差不远的特征向量的损失,delta默认为1

 

缺点

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Anchor-based和Anchor-free是目标检测中两种不同的方法。 Anchor-based方法是指在图像中使用一组预定义的锚点(anchors),通过对这些锚点进行分类和回归来检测目标。这种方法通常使用卷积神经网络(CNN)来提取特征,并在每个锚点处预测目标的类别和位置。 Anchor-free方法则不需要使用预定义的锚点,而是直接在图像中预测目标的位置和大小。这种方法通常使用一些特殊的网络结构,如CornerNet和CenterNet,来实现目标检测。 两种方法各有优缺点,选择哪种方法取决于具体的应用场景和需求。 ### 回答2: anchor-based和anchor-free是两种目标检测算法的方法。 传统的目标检测算法中,anchor-based是一种常见的方法。它通过事先定义一组候选框(即anchors),并在图像中对这些候选框进行分类和回归。这些anchors通常根据目标的大小和长宽比进行选取。在训练过程中,候选框与真实目标框进行匹配,并计算分类和回归损失。通过这种方式,anchor-based可以有效地检测目标,并确定它们的位置。 相比之下,anchor-free是一种较新的目标检测算法方法。它不需要使用事先定义的候选框,而是直接在图像中无缝地检测目标。anchor-free方法通常通过将目标检测任务转化为像素级分类问题来实现。在训练过程中,模型会学习到每个像素点是否属于目标,并对目标的位置进行回归。由于不依赖于候选框,anchor-free方法可以更灵活地检测各种大小和形状的目标。 总的来说,anchor-based方法在目标检测中具有广泛的应用,并且在经典的目标检测算法中取得了很好的效果。而anchor-free方法则是一种相对较新的方法,具有更大的灵活性和对各种目标形状和大小的适应性。这些方法各有优势和劣势,选择哪种方法要根据具体的应用场景和需求来决定。 ### 回答3: anchor-based和anchor-free是一种用于目标检测的两种不同的方法。 首先,anchor-based方法是一种使用预定义的尺寸和比例的框架来检测目标的方法。这些框架通常称为锚点或锚框,它们在图像中按照一定的规律分布。然后,在每个锚点上,使用CNN(卷积神经网络)模型进行分类和回归,确定目标是否存在以及目标的准确位置。这些锚点作为参考点帮助模型更好地理解目标的不同尺度和形状,并提高目标检测的准确性。常见的anchor-based方法包括Faster R-CNN、SSD和YOLO。 另一方面,anchor-free方法则不使用预定义的锚点来检测目标。相反,它们通过在整个图像中直接回归目标的位置和大小来进行目标检测。这些方法通常需要更加复杂和精细的网络设计,以提供对目标位置的准确预测。由于不需要预定义的锚点,anchor-free方法能够更好地适应任意大小和形状的目标。例如,CornerNet和CenterNet就是常见的anchor-free方法。 总的来说,anchor-based方法将目标检测问题划分为锚点分类和回归问题,而anchor-free方法则通过直接回归目标位置和大小来解决目标检测问题。两种方法各有优劣,并根据不同的应用场景和需求选择合适的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值