2025年pointnet++改进(pointnet++改进的网络)

pointnet++改进(pointnet++改进的网络)该论文是由中科院 牛津大学以及华为诺亚方舟实验室联合提出 截至目前 2019 04 19 CenterNet 应该是 one stage 目标检测方法中性能 精度 最好的方法 论文名称 CenterNet Keypoint Triplets for Object Detectiontec 论文链接 https arxiv org abs 1904 08189 代码链接 https github com Duankaiwen CenterNet 该论文是由中科院



该论文是由中科院,牛津大学以及华为诺亚方舟实验室联合提出。截至目前(2019.04.19),CenterNet应该是one-stage目标检测方法中性能(精度)最好的方法。

论文名称:CenterNet: Keypoint Triplets for Object Detectiontection

论文链接:https://arxiv.org/abs/1904.08189

代码链接:https://github.com/Duankaiwen/CenterNet


该论文是由中科院,牛津大学以及华为诺亚方舟实验室联合提出。截至目前(2019.04.19),CenterNet应该是one-stage目标检测方法中性能(精度)最好的方法。

传统的基于关键点的目标检测方法例如最具代表性的CornerNet通过检测物体的左上角点和右下角点来确定目标,但在确定目标的过程中,无法有效利用物体的内部的特征,即无法感知物体内部的信息,从而导致该类方法产生了很多误检 (错误目标框)。

本文利用关键点三元组即中心点、左上角点和右下角点三个关键点而不是两个点来确定一个目标,使网络花费了很小的代价便具备了感知物体内部信息的能力,从而能有效抑制误检。另外,为了更好的检测中心点和角点,该论文分别提出了center poolingcascade corner pooling来提取中心点和角点的特征。该方法在MS COCO上,获得了47% AP,超过了所有已知的 one-stage 检测方法,并大幅度领先,其领先幅度至少达4.9%,推理时间略慢(270ms using a 52-layer hourglass backbone and 340ms using a 104-layer hourglass backbone per image)。

Anchor-based缺陷:anchor数量巨大,anchor人工自主设计,anchor与gt不对齐不利于分类


目标检测重新在图上画框_目标检测重新在图上画框

Anchor-free缺陷:Cornernet的全局信息获取能力较弱,无法正确group同一物体的两个点如上图,前100个预测框中有很多是长宽比不协调的误检(CornerNet通过embedding vector来group角点,但是该机制通过corner pooling仅依赖物体的边沿,并没有利用物体内部信息,事实证明根据人类vision pattern确定一个物体更多考虑其内部信息),这个问题可以通过互补信息解决——比如aspect ratio(anchor利用宽高比加速回归,但是角点无法)

预测框与gt有高iou并且gt的中心在预测框的中心区域,则这个预测框有更高的可能性是准确的,所以通过判断一个proposal的中心区域是否包含一个同类物体的中心点来决定它是否正确。如下图:


目标检测重新在图上画框_目标检测重新在图上画框_02

提出更好的两种检测角点和中心点的机制center poolingcascade corner pooling。center pooling用于预测中心点分支,通过相加特征图水平和垂直方向上最大值获得。cascade corner pooling类似与原来的corner pooling模块,只不过同时获取内部和边沿信息以增加稳定性。

使用CornerNet作为基准,CornerNet使用heatmaps、embeddings、offsets确定目标的左上右下角点以确定物体位置类别,具体不予阐述,可参考博主另一篇博文CornerNet论文笔记

为了能够量化的分析误检问题,本论文提出了一种新的衡量指标,称为FD (false discovery) rate, 此指标能够很直观的反映出误检情况。FD rate 的计算方式为 FD = 1-AP, 其中 AP 为 IoU 阈值取[0.05 : 0.05 : 0.5]下的平均精度。统计了 CornerNet 的误检情况,如下表table1所示:


目标检测重新在图上画框_目标检测重新在图上画框_03

可以看到,FD = 37.8,而FD5高达32.7,这意味着即使把gt匹配条件限制的很严格:只有那些与 ground-truth 的 IoU< 0.05 的才被认定为错误目标框,每100个预测框中仍然平均有32.7 个错误目标框!而小尺度的目标框其FDs更是达到了60.3!关键问题在于让网络具备感知物体内部信息的能力。一个较容易想到的方法是把 CornerNet 变成一个 two-stage 的方法,即利用 RoI pooling 或 RoI align 提取预测框的内部信息,从而获得感知能力。但这样做开销很大,因此本文提出了用关键点三元组来检测目标,这样使得本文在 one-stage 的前提下就能获得感知物体内部信息的能力。并且开销较小,因为只需关注物体的中心,从而避免了 RoI pooling 或 RoI align 关注物体内部的全部信息。


目标检测重新在图上画框_角点_04

上图figure2为 CenterNet 的结构图。网络通过 center pooling 和 cascade corner pooling 分别得到 center heatmap 和 corner heatmaps,用来预测关键点的位置。得到角点的位置和类别后,通过 offsets 将角点的位置映射到输入图片的对应位置,然后通过 embedings 判断哪两个角点属于同一个物体,以便组成一个检测框。正如前文所说,组合过程中由于缺乏来自目标区域内部信息的辅助,从而导致大量的误检。为了解决这一问题,CenterNet 不仅预测角点,还预测中心点。对每个预测框定义一个中心区域,通过判断每个目标框的中心区域是否含有中心点,若有则保留,并且此时框的 confidence 为中心点、左上角点和右下角点的confidence的平均,若无则去除,使得网络具备感知目标区域内部信息的能力,能够有效除错误的目标框。

另外中心区域的尺度会影响错误框去除效果。中心区域过小导致很多小尺度的错误目标框无法被去除,而中心区域过大导致很多大尺度的错误目标框无法被去除,因此本文提出了尺度可调节的中心区域定义法如下公式(1)。该方法可以在预测框的尺度较大时定义一个相对较小的中心区域,在预测框的尺度较小时预测一个相对较大的中心区域。如下图figure3所示,n的值根据边界框是否大于150进行设置为3或5。

目标检测重新在图上画框_三元组_05


目标检测重新在图上画框_目标检测重新在图上画框_06

目标检测重新在图上画框_语义信息_07

Center pooling:一个物体的中心并不一定含有很强的,易于区分于其他类别的语义信息。例如,一个人的头部含有很强的,易于区分于其他类别的语义信息,但是其中心往往位于人的中部。本文提出了center pooling 来丰富中心点特征。上图figure4(a)为该方法原理,center pooling提取中心点水平方向和垂直方向的最大值并相加,以此给中心点提供所处位置以外的信息。这一操作使中心点有机会获得更易于区分于其他类别的语义信息。Center pooling 可通过不同方向上的 corner pooling 的组合实现。一个水平方向上的取最大值操作可由 left pooling 和 right pooling通过串联实现,同理,一个垂直方向上的取最大值操作可由 top pooling 和 bottom pooling通过串联实现,具体操作如下图figure5(a)所示,特征图两个分支分别经过一个3×3Conv-BN-ReLU做水平方向和垂直方向的corner pooling,最后再相加(图b为Cascade corner pooling模块,注意与图(a)并没有连接)。

目标检测重新在图上画框_目标检测重新在图上画框_08

Cascade corner pooling: 该模块用于预测物体的左上和右下角点,一般情况下角点位于物体外部,所处位置并不含有关联物体的语义信息,这为角点的检测带来了困难。Figure4(b)为传统做法,称为corner pooling(CornerNet中提出)。它提取物体边界最大值并相加,该方法只能提供关联物体边缘语义信息,对于更加丰富的物体内部语义信息则很难提取到。Figure4 (c)为cascade corner pooling 原理,它首先提取物体边界最大值,然后在边界最大值处继续向内部(图中沿虚线方向)提取最大值,并与边界最大值相加,以此给角点特征提供更加丰富的关联物体语义信息。Cascade corner pooling可通过不同方向上的 corner pooling 的组合实现,如图figure5(b)所示,展示了cascade top corner pooling 原理(博主认为Cascade corner pooling只是为了通过内部信息丰富角点特征,也就是级联不同方向的corner pooling达到内部信息的叠加,最终目的还是要预测角点,所以左上角点通过cascade top corner pooling+cascade left corner pooling实现,右下角点通过cascade right corner pooling+cascade bottom corner pooling实现,figure5(b)只是画出了其中一个module,其他3个module类似,也就是用cascade corner pooling module代替原CornerNet中的Corner Pooling)。


目标检测重新在图上画框_语义信息_09

损失函数如上式(2),由角点位置损失(focal loss)+中心点位置损失+embedding损失+角点和中心点offsets损失(l1loss)组成,结构与CornerNet相似,只是增加中心点损失项,α,β和γ分别为0.1,,01,1。使用batch size为48在8 Tesla V100 (32GB) GPUs上迭代480K次,前450K次学习率为2.5×10-4,后30K次学习率降为2.5×10-5。代码使用pytorch实现,没有预训练,输出分辨率为511×511,损失函数优化策略为adam。


目标检测重新在图上画框_角点_10

实验结果表明 CenterNet 获得了47%的AP,超过了所有已知的 one-stage 检测方法,并大幅度领先,其领先幅度至少达4.9%。最近目标检测方法在COCO数据集上基本在以百分之零点几的精度往前推进,因为coco数据集难度很高,而CenterNet往前推进了将近5个百分点。同时,CenterNet 的结果也接近two-stage方法的最好结果。值得注意的是,CenterNet 训练输入图片分辨率只有 511X511,在 single-scale下,测试图片的分辨率为原图分辨率(~500),在 multi-scale下,测试图片的分辨率最大为原图分辨率的1.8倍。而two-stage的输入图片的分辨率一般最短边也要>600,甚至更大,比如D-RFCN+SNIP和 PANet。而且本文方法是 Train from scratch。


目标检测重新在图上画框_三元组_11

上表Table3为 CenterNet 与 CornerNet 的单独对比,可以看出在coco数据集上CenterNet消除大量误检框,尤其是在小物体上。

速度方面,Two-stage 方法论文中一般是不报的。One-stage方法只在较浅的backbone上如VGG-16上报速度,一般处理一张图片需要十几毫秒,在较深的backbone上速度为慢一些,处理一张图片需要几百毫秒,但还是要比 two-stage 的方法快。本文在一张 Nvidia Tesla P100 显卡上比较了CornerNet和CenterNet,CornerNet511-104 测试速度约为 300ms/帧,而 CenterNet511-104 的测试速度约为340ms/帧,比 baseline 慢约 40ms/帧。但对于更轻backbone,CenterNet511-52的测试速度约为270ms/帧,比CornerNet511-104快约30ms/帧,而且其精度无论是single-scale test 还是 multi-scale test 都比CornerNet511-104高。


目标检测重新在图上画框_目标检测重新在图上画框_12

上图figure6表明CenterNet 与 CornerNet 的对比结果。(a) 和 (b) 表明 CenterNet 能有效去除小尺度的错误目标框。(c) 和 (d) 表明 CenterNet 能有效去除中等尺度和大尺度的错误目标框。(e)是否采用center pooling检测中心点。(f)对比分别使用corner pooling和cascade corner pooling检测角点。


目标检测重新在图上画框_三元组_13

上图figure7表明, CenterNet 去除了大量错误的目标框,因此即使在目标框的 confidence 较低的情况下,依然能保证较好的检测结果,上图展示了 confidence 在0.5以上的目标框分布情况。


目标检测重新在图上画框_语义信息_14

上表Table4 为消融实验。第一行为CornerNet结果。中心点的加入 (CRE) 使得网络提升了2.3% (37.6% vs 39.9%)。对于中心点的检测,本实验使用传统的卷积操作进行。其中小尺度目标提升的最多,提升了4.6% (18.5% vs 23.1%),而大尺度目标几乎没有发生变化。这说明小尺度的错误目标框被去除的最多,这是因为从概率上讲,小尺度目标框由于面积小更容易确定其中心点,因此那些错误的小目标框不在中心点附近的概率更大,因此去除的最多。Center pooling (CTP) 的加入使网络进一步提升了0.9%。值得注意的是,大尺度目标提升了1.4% (52.2% vs 53.6%),小目标和中等目标也得到了一定的提升,这表明 center pooling 能够使中心点获得更易于区分于其他类别的语义信息Cascade corner pooling (CCP) 使得使网络性能进一步提升。第二行的试验中,我们将 CornerNet 的corner pooling 替换成了 cascade corner pooling,性能提升了0.7% (37.6% vs 38.3%)。可以观察到大目标的 AP 没有发生变化,AR 却提升了1.8% (74.0% vs 75.8%), 这说明 cascade corner pooling 通过加入了物体内部信息能够感知更多的物体,但是由于大目标由于面积过大,使其容易获得较明显的内部特征而干扰了边缘特征,因此使得预测出的目标框位置不精确。当结合了 CRE 后,由于 CRE 能够有效去除错误目标框,因此使大目标框的AP得到了提升 (53.6% vs 55.8%).


目标检测重新在图上画框_目标检测重新在图上画框_15

上表Table5 为错误实验分析。将检测的中心点用真实的中心点代替,实验结果表明中心点的检测准确度还有很大的提升空间。同时该结果还表明要想更进一步的提升检测精度,需要进一步提升中心点的检测精度。

这篇CenterNet使用关键点三元组(左上,右下,中心点)来确定一个目标,与CornerNet相比增加一个中心点来消除误检框,故事点在于“网络具备感知物体内部信息的能力”,并在最后作者认为可以移植到其余anchor或anchor-free的检测器上,博主比较同意作者所提观点,比如目前潮流的attention机制就是增强物体之间的relation或者增强物体内部语义信息。与此相比,原CornerNet团队提出的CornerNet-Lite中的CornerNet-Saccade将原任务分为两个阶段,第一阶段粗检利用attention maps找到可能存在目标的中心点,第二阶段精检crop区域的所有目标,此两阶段方法与本文思想类似,都是通过加入中心点这一限定增强检测器性能。


编程小号
上一篇 2025-03-04 11:30
下一篇 2025-03-30 23:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/52023.html