论文阅读笔记 | 目标检测算法——SAPD算法

简介: 论文阅读笔记 | 目标检测算法——SAPD算法

paper:Soft Anchor-Point Object Detection


摘要:

目前anchor-free目标检测算法取得了比较大的进步,anchor-free算法可以分为两种:一种是关键点检测(keypoint detection),eg:cornernet检测左上角与右下角,centernet检测中心点与4条边,都属于这种。另外一种是锚点检测(anchor-point detection),用语义分割的思想作用在目标检测任务上,逐像素点进行分类回归,eg:FSAF,FCOS算法均属于这一种。一般来说,anchor-free的这两种算法都是各有优点,处于速度-精度权衡的相对边缘。锚点检测的速度会快一点,而关键点检测的精度会高一点。


paper的想法就是,在保持锚点检测速度优势的同时,将精度也提高至优于关键点检测的水平,提出了SAPD算法。所以SAPD算法在那是是出于综合考虑速度与精度最好的算法,优于那是最先进的anchor-based和anchor-free的检测器。


回到问题上,对于同样是anchor-free算法,如何解决锚点检测的精度不如关键点检测高。作者从锚点检测的角度定位出主要的问题是锚点检测存在大量的无效训练(ineffective training)。作者的一个见解是:锚点(anchor points)应该作为一个组在特征金字塔的一个预测特征层及跨越特征金字塔的多个预测特征层中进行联合优化。


为此,作者提出了一种简单而有效的训练策略,使用软加权锚点(soft-weighted anchor points)和软选择金字塔层次(soft-selected pyramid levels),分别解决每个金字塔层级内的错误注意问题和在所有金字塔层级之间的特征选择问题。


1. Introduction


anchor-free目标检测算法不依赖与anchor boxes,预测是以point(s)-to-box的方式生成,相比于传统的anchor-based算法,anchor-free检测具有一些优点:

1)不需要手动设置anchor的超参数

2)预测子网结构比较简单

3)较少的训练内容成本


在FCOS与FSAF这两篇论文中也有介绍过,anchor-free检测器一般可以划分为两类:锚点检测和关键点检测。

锚点检测器,将对象边界框编码和解码为具有相应点到边界距离的锚点,其中锚点是金字塔特征地图上的像素,并且它们在它们的位置与特征相关联,就像锚点框一样。

关键点检测器,使用高分辨率特征图和重复的自下而上与自上而下的推理来预测边界框的关键点的位置,例如拐角、中心或极值点,并将这些关键点分组以形成框。


与关键点检测器相比,锚点检测器有几个优点:

1)网络结构更简单

2)训练和推理速度更快

3)受益于特征金字塔扩展的潜力

4)灵活的预测特征层级选择选择

然而,在相同的测试图像尺度下,它们不能像基于关键点的方法那样精确,也就是关键点检测器的精确度一般比锚点检测器要高。为此,作者提出了SAPD算法,使得锚点检测能够在速度与精度上都要比关键点检测要好。为了实现这一点,作者从锚点的角度来阐述检测问题,并将无效训练确定为阻碍锚点检测器在特征金字塔级别内和跨特征金字塔级别探索更多网络能力潜力的主要障碍。


作者也提出,传统的训练策略有两个被忽略的问题,即每个金字塔层级内的错误注意(false attention)和所有金字塔层次上的特征选择(这个层级选择FSAF也提出了一个在线特征选择的思想)。


问题一:每个金字塔层级内的错误注意

对于同一金字塔层次上的锚点,在训练中受到错误注意的锚点,在推理过程中会产生置信度高但定位不良的检测,压制一些定位准确但得分较低的锚点。这可能会混淆后处理步骤,因为在非最大抑制中,高分检测通常比低分检测具有更高的优先级,从而导致在严格的IoU阈值下AP得分较低。


问题二:所有金字塔层次上的特征选择

对于跨不同金字塔层级的相同空间位置的锚点,它们的关联特征是相似的,但是它们对网络损失的贡献程度是在没有仔细考虑的情况下决定的。当前的方法基于特定的探索式方法进行选择,例如实例对象尺度大小,并且通常限于每个实例对象在一个预测特征层上。这可能会浪费了一些性能更加的特征层。

这些问题促使作者提出了一种新的训练策略,采用了两种软化的优化技术,即软加权锚点(soft-weighted anchor points)和软选择金字塔层次(soft-selected pyramid levels)。


  • soft-weighted anchor points

对于同一金字塔层次上的锚点,作者通过根据它们与实例对象的几何关系重新加权它们对网络损失的贡献来减少错误注意。作者认为,越靠近实例对象边界,锚点就越难因特征未对准而精确定位对象,它们对网络损耗的贡献就越小。


  • soft-selected pyramid levels

作者通过其金字塔级别的实例依赖“参与”程度来重新加权锚点,进而实现了一个轻量级的特征选择网络来学习给定对象实例的每级“参与”程度。特征选择网络与检测器联合优化,不参与检测器推断。软特征选择是为单阶段无锚方法设计的,可以动态选择多个具有差异化的金字塔级别。

作者还提出,通过soft-weighting方法比FCOS提出的“center-ness”方法更加有效。之前在训练阶段做软加权的工作有:focal loss,consistent loss,这些方法重塑分类损失,但独立处理所有样本。而作者提出的soft-weighting方法更加直接与全面,重塑了分类和回归损失的组合,并考虑对分布在特征金字塔层级内部和之间的一组锚点进行联合加权。


最后的结果显示SAPD提高了FSAF模型的基准。其中,没有DCN结构的快速型优于最好的关键点检测器,DCN的精确变体形成了速度/精度折衷的上限。

image.png


2. Soft Anchor-Point Detector


2.1 Detection Formulation with Anchor Points

在最近的锚点检测器中,都或多或少的将带有额外卷积层的检测头附加到特征金字塔的多个级别。作者从网络架构、监管目标和损失函数方面介绍锚点检测器的一般概念。


2.1.1 Network architecture

image.png


2.1.2 Supervision targets

image.png

image.png


2.1.3 Loss functions

image.png

2.2 Soft-Weighted Anchor Points

2.2.1 False attention

在传统的训练策略下,作者观察到在推理过程中,一些锚点会生成定位不佳但置信度较高的检测框,从而抑制定位较精确但置信度较低的检测框。结果,非最大抑制(NMS)倾向于保持定位不良的检测,导致在严格的IoU阈值下的低AP,如图所示:

image.png

出现这个问题的原因是,在公式(3)中,传统的训练策略独立的对待每一个锚点,也就是这些锚点受到了同等的关注。但是,对于ground-truth的收缩盒B v  中的一组锚点来说,它们的空间位置和相关特征是不相同的,也就是说他们回归到ground-truth B BB的能力是不一样的。


作者认为,位于实例对象边界附近的锚点没有与实例对齐的特征。它们的特征往往会被实例对象之外的内容所伤害,因为它们的接受域包含了太多来自背景的信息,导致精确定位的表示能力下降。因为,位于实例对象中心点附近的锚点应该比位于实例对象边界上的锚点具有更强大的特征表示能力,所以更多的关注应该放在这些具有强大特征表示的锚点上,减少对其他的错误关注。而正是由于这个原因,作者提出了一个ground-truth的收缩盒子B v 。


这个思想,在FSAF中对预测特征层划分了三个区域:正样本区域(白色区域),忽略区域(灰色区域),负样本区域(黑色区域)的思想是类似的。我们关注的首要目标,应该是位于ground-truth中心点附近的锚点,也就是FASF中的白色区域。


2.2.2 Solution

image.png

image.png


2.3 Soft-Selected Pyramid Levels

2.3.1 Feature selection

作者通过查看特征金字塔的属性来解决特征选择问题。不同金字塔级别的特征图彼此有些相似,尤其是相邻级别。如图所示:

image.png

事实证明,如果在某个区域激活了一个级别的特征,相邻级别的相同区域也可能以类似的样式激活,但是相似性随着层次的远离而减弱。这意味着来自多个金字塔级别的特征可以一起参与特定实例的检测,但是来自不同级别的参与程度应该有些不同。


基于以上分析,作者提出了特征层选择的两个原则:

1)选择应该与特征响应的模式相关,而不是一些特定的启发式。与实例相关的损失(instance-dependent loss)可以很好地反映金字塔级别是否适合检测某些实例。(FSAF中有类似想法)

2)应该允许来自预测特征层的特征图参与每个实例对象的训练和测试,并且每个预测特征层都应该做出不同的贡献。 FoveaBox中表面,将实例分配到多个要素级别可以在一定程度上提高性能。但是分配过多的级别反而会严重影响性能。


因此,解决方案在于为每个实例重新加权金字塔级别。换句话说,根据特征响应为每个金字塔级别分配一个权重,使选择变得柔和。这也可以看作是将实例的一部分分配给一个级别。


2.3.2 Solution

作者提议训练一个特征选择网络来预测软特征选择的权重,来解决决定每个金字塔等级的权重问题。


网络的输入是从所有金字塔层次提取的依赖于实例的特征响应。这是通过将RoIAlign层应用于每个金字塔特征,然后进行concat拼接来实现的,其中RoI是实例对象的ground-truth box。然后,提取的特征通过特征选择网络输出概率分布向量,使用概率作为软特征选择的权重。如图所示:

image.png

特征选择网络有多种架构设计。为了简单起见,我们给出了一个轻量级的实例化。它由三个没有填充的3 × 3 conv层和一个带有softmax的全连接层组成,每个层后面都有ReLU函数。完整结构如图表格所示:

image.png

特征选择网络与检测器联合训练,其中使用交叉熵损失用于优化。最后的结果是一个独热编码向量,用来指示哪一层金字塔级别具有FSAF模块中定义的最小损失。可以看见,最后的全连接层输出大小为5,使用softmax就可以知道其中概率最大的那一层。

image.png


3. Result


  • 软加权与软选择的作用:

image.png

  • 广义中心函数的η ηη与预测特征层数k kk的选择所带来影响:

image.png

  • backbone的选择:

image.png

  • 与SOTA的对比:

image.png

总结:


延续结合了FCOS的“center-ness”及FSAF的"online feature select"的思想,SAPD算法提出了软加权与软选择的改进版方法。相较于FCOS的“center-ness”,SAPD中直接按离实例对象的中心距离进行优化;而相较与FSAF的"online feature select",SAPD将软加权于此步相结合,融合了一个特征选择网络更进一步的利用交叉熵损失选择了top k个预测特征层进行联合使用。


基于这两点创新,SAPD算法首次实现将基于锚点检测的anchor-free算法在精度与速度均优于关键点检测算法。


附录:

关于FCOS与的FSAF介绍可以查看链接:

论文阅读笔记 | 目标检测算法——FCOS算法

论文阅读笔记 | 目标检测算法——FSAF算法


目录
相关文章
|
2月前
|
机器学习/深度学习 运维 算法
大模型开发:描述一种用于异常检测的技术或算法。
LOF算法是一种无监督异常检测技术,通过比较数据点局部密度识别离群点。它计算每个点的局部离群因子得分,得分高则异常可能性大。主要步骤包括:距离度量、k近邻搜索、计算局部可达密度和LOF得分,然后设定阈值识别异常点。适用于入侵检测、故障检测等场景,Python中可使用scikit-learn库实现。
25 1
|
2月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
2月前
|
机器学习/深度学习 算法 计算机视觉
[YOLOv8/YOLOv7/YOLOv5系列算法改进NO.5]改进特征融合网络PANET为BIFPN(更新添加小目标检测层yaml)
本文介绍了改进YOLOv5以解决处理复杂背景时可能出现的错漏检问题。
109 5
|
3天前
|
机器学习/深度学习 人工智能 算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
7 0
|
10天前
|
人工智能 算法 测试技术
论文介绍:进化算法优化模型融合策略
【5月更文挑战第3天】《进化算法优化模型融合策略》论文提出使用进化算法自动化创建和优化大型语言模型,通过模型融合提升性能并减少资源消耗。实验显示,这种方法在多种基准测试中取得先进性能,尤其在无特定任务训练情况下仍能超越参数更多模型。同时,该技术成功应用于创建具有文化意识的日语视觉-语言模型。然而,模型融合可能产生逻辑不连贯响应和准确性问题,未来工作将聚焦于图像扩散模型、自动源模型选择及生成自我改进的模型群体。[论文链接: https://arxiv.org/pdf/2403.13187.pdf]
112 1
|
13天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
14天前
|
算法 数据可视化 数据挖掘
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
|
20天前
|
算法 数据可视化 数据挖掘
R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化
R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化
|
26天前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
|
27天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正