弱监督论文阅读:P2BNet算法笔记
标题:Point-to-Box Network for Accurate Object Detection via Single Point Supervision
会议:ECCV2022
论文地址:https://link.springer.com/10.1007/978-3-031-20077-9_4
官方代码:http://www.github.com/ucas-vg/P2BNet
作者单位:中国科学院大学、俄勒冈大学、伊利诺伊大学香槟分校、北方电子设备研究所、Picsart AI Research(PAIR)
文章目录
- Abstract
- 1 Introduction
- 2 Related Work
- 2.1 Box-Supervised Object Detection
- 2.2 Image-Supervised Object Detection
- 2.3 Point-Supervised Object Detection
- 3 Point-to-Box Network
- 3.1 Coarse Pseudo Box Prediction
- 3.2 Pseudo Box Refinement
- 4 Experiments
- 4.1 Experiment Settings
- 4.2 Performance Comparisons
- 4.3 Ablation Study
- 5 Conclusion
Abstract
近年来,使用单点监督的目标检测受到了越来越多的关注。然而,点监督目标检测(point supervised object detection,PSOD)与边界框监督检测的性能差距仍然很大。在本文中,我们将如此大的性能差距归因于未能生成对多实例学习(MIL)至关重要的高质量建议包(proposal bag)。为了解决这个问题,我们给现成建议(off-the-shelf proposal,OTSP)方法引入了一种轻量级的替代,并由此创建了点到框网络(Point-to-Box Network,P2BNet),它可以通过以一种锚框式的(anchor-like)方式生成建议来构建目标间(inter-objects)平衡的建议包。P2BNet通过充分挖掘精确的位置信息,进一步构建实例级的包(instance-level bag),避免了多个目标的混合。最后,以级联的方式使用由粗到精的策略来改善建议与真值(GT)之间的IoU。受益于这些策略,P2BNet能够生成高质量的实例级包来用于目标检测。P2BNet在MS COCO数据集上相对于之前最好的PSOD方法平均精度(AP)提升了超过50%。这也证明了在点监督和边界框监督检测器之间弥补性能差距的巨大潜力。
1 Introduction
通过精确的边界框标注训练得到的目标检测器在学术界和工业界都得到了很好的评价。然而,收集高质量的边界框标注需要大量的人力努力。为了解决这个问题,弱监督目标检测(WSOD)使用低成本的图像级标注替代边界框标注。然而,由于缺乏重要的位置信息以及稠密目标难以区分,WSOD方法在复杂场景中表现不佳。另一方面,点监督目标检测(PSOD)可以提供关于目标的有识别力的位置信息,并且比通过边界框监督的方法成本要低得多。
近年来,point-based标注被广泛用于目标检测、目标定位、实例分割、动作定位等任务中。然而,点监督检测的方法和边界框监督的检测器之间的性能差距仍然很大。虽然边界框提供的位置信息比点更丰富是可以理解的,但我们认为这并不是唯一的原因。我们认为大多数PSOD方法并没有充分利用point-based标注的潜力。之前的工作使用现成建议(OTSP)方法(例如Selective Search、MCG和Edge Box等)来获得构建包的建议。尽管这些OTSP-based方法在弱监督检测器中有广泛的适应力,但它们在图1中存在以下问题:①包里有太多的背景建议。OTSP方法生成的与前景目标没有任何交集的建议框太多。②每个目标的正建议(positive proposals)是不平衡的。图2a显示了在COCO-17训练集上每个目标通过MCG产生的正建议,明显是不平衡的。③包里的大多数建议具有表明低质量建议的非常低的IoU(图2b)。此外,由于之前的PSOD方法仅构建图像级的包,无法在MIL训练过程中利用点标注,导致了同一包中不同目标的混合。这些问题都限制了构建的包的整体质量,从而导致模型的性能较差。
在本文中,我们提出P2BNet作为OTSP方法的替代,用于生成高质量的目标建议。P2BNet为每个目标生成的建议数量是平衡的,并且覆盖了不同的尺度和纵横比。此外,建议包是实例级而不是图像级的。这维护了给定建议包中的目标的特有性(),在MIL训练期间非常有用。为了进一步提高包的质量,在P2BNet中以级联的方式设计了由粗到精的过程。细化阶段包括两部分,即粗糙伪框预测(coarse pseudo-box prediction,CBP)和精确伪框细化(precise pseudo-box refinement,PBR)。CBP阶段预测目标的粗糙尺度(宽度和高度),而PBR阶段则迭代地微调尺度和位置。我们的P2BNet生成了高质量的、平衡的建议包,并保证了点标注在所有阶段(MIL训练前、中、后)中的贡献。在COCO上的详细实验表明,我们模型的有效性和鲁棒性大大优于以前的point-based检测器。我们的主要贡献如下:
−-− 一种生成式的OTSP-free网络P2BNet被设计用来预测伪框。它生成目标间平衡的实例级包,有利于更好地优化MIL训练。此外,P2BNet比OTSP-base方法时间效率(time-efficient)高得多。
−-− 提出了在P2BNet中使用CBP和PBR阶段的由粗到精的方式,以获得更高质量的建议包和更好的预测。
−-− 我们提出的具有P2BNet的P2BNet-FR框架在单个准中心点(quasi-center point)监督下的检测性能将先前最好的PSOD方法的平均精度(AP)在COCO上提高了50%以上(相对),弥补了与边界框监督检测器之间的差距,在AP50_{50}50上取得了可比的性能。
2 Related Work
在这一部分,我们简要讨论框监督、图像级监督和点级监督目标检测的研究现状。
2.1 Box-Supervised Object Detection
边界框监督目标检测是一种传统的目标检测范式,提供网络一个具体的类别和框信息。YOLO、SSD、RetinaNet等基于滑动窗口的单阶段检测器通过设置anchor来预测分类和边界框回归。两阶段检测器通过OTSP方法(如Fast R-CNN中的选择性搜索)或深度网络(如Faster R-CNN中的RPN)来预测建议框,并对过滤后的建议框进行稀疏分类和边界框回归。Transformer-based检测器(DETR、Deformable-DETR、和Swin-Transformer)出现,利用全局信息得到更好的表示。Sparse R-CNN将Transformer和CNN的优点结合到一个稀疏检测器中。一些文献研究了航空场景中的定向目标检测。然而,框级标注需要较高的成本。
2.2 Image-Supervised Object Detection
图像监督目标检测是WSOD中的传统领域。传统的图像监督的WSOD方法可分为MIL-based和CAM-based两种方式。
在MIL-based方法中,如果一个包至少包含一个正实例,则该包被正标记;否则为负标记。MIL的目标是从一个正包中选择正实例。WSDDN将MIL引入到WSOD中,提出了一个具有代表性的双流(two-stream)弱监督深度检测网络,其可以对正建议进行分类。OICR把迭代的方式引入到WSOD中,试图找到整体部分而不是有识别力的部分。PCL开发了建议簇学习(proposal cluster learning),将建议簇作为监督来指示目标最有可能出现的粗糙位置。随后,SLV引入空间似然投票来代替最高分数建议,进一步寻找目标的整个上下文。本文在点标注周围生成锚框式的(anchor-like)建议来作为一个包,并使用实例级的MIL来训练分类器。它改变了固定的预生成的建议(如OICR、PCL和UWSOD)以达到由粗到精的目的。
在CAM-based方法中,主要思想是生成类激活图(class activation map,CAM),利用阈值来选择高分数区域,并找到最大通用域(general domain)的最小外接矩形。WCCN使用三阶段的级联结构。第一阶段产生类激活图并获得初始建议,第二阶段是用于细化目标定位的分割网络,最后一个阶段是输出结果的MIL阶段。Acol利用对抗互补学习引入两个并行分类器进行目标定位,以缓解有识别力的区域。
2.3 Point-Supervised Object Detection
点级标注是一个相当新的创新。标注单个点的平均时间约为1.87s/幅,接近图像级标注(1.5s/幅),远低于边界框(34.5s/幅)。这个统计量是在VOC上进行的,它可以类比到COCO。Zhang等人引入中心点击(center-click)标注来代替框监督,用两次中心点击的误差来估计尺度。UFO2^22设计了一个兼容标签、点、涂鸦、框标注等多种监督形式的网络。然而,这些框架都是基于OTSP方法,并不是专门为点标注而设计的。因此,在COCO数据集等复杂场景下性能有限且表现不佳。我们引入了一个新的不需要OTSP方法的具有P2BNet的框架。
3 Point-to-Box Network
P2BNet-FR框架由Point-to-Box Network(P2BNet)和Faster R-CNN(FR)组成。P2BNet使用点标注预测伪框来训练检测器。我们对Faster R-CNN使用标准的设置,没有任何点缀。因此,我们在本节详细介绍所提出的P2BNet。
P2BNet的结构如图3所示,包括粗糙伪框预测(CBP)阶段和伪框细化(PBR)阶段。CBP阶段预测目标的粗糙尺度(宽度和高度),而PBR阶段则迭代地微调尺度和位置。P2BNet的整体损失函数是这两个阶段的损失之和,即:
Lp2b=Lcbp+∑t=1TLpbr(t)(1)\mathcal{L}_{p2b}=\mathcal{L}_{cbp}+\sum_{t=1}^T\mathcal{L}_{pbr}^{(t)}\tag{1} Lp2b=Lcbp+t=1∑TLpbr(t)(1)其中,PBR包括TTT次迭代,而Lpbr(t)\mathcal{L}_{pbr}^{(t)}Lpbr(t)是第ttt次迭代的损失。
3.1 Coarse Pseudo Box Prediction
在CBP阶段,首先为每个目标以锚框的方式(anchor-style)生成不同宽度和高度的建议框,以标注的点作为框的中心。然后,提取采样的建议的特征来训练MIL分类器,以选择目标最合适的建议。最后,利用top-kkk合并策略来估计粗糙伪框。
CBP采样: 在标注点的周围固定采样。以点标注p=(px,py)p=(p_x,p_y)p=(px,py)作为中心,sss为大小,vvv用来调整纵横比,生成建议框b=(bx,by,bw,bh)b=(b_x,b_y,b_w,b_h)b=(bx,by,bw,bh),即b=(px,py,v⋅s,1v⋅s)b=(p_x,p_y,v·s,\frac{1}{v}·s)b=(px,py,v⋅s,v1⋅s)。建议框采样的示意图如图4左所示。通过调整sss和vvv,每个点标注pjp_jpj生成一个不同尺度和纵横比的建议框包,记为Bj\mathcal{B}_jBj(j∈{1,2,...,M}j\in\{1,2,...,M\}j∈{1,2,...,M},其中MMM是目标的数量)。所有的建议包被用来训练CBP模块中的MIL分类器,以点的类别标签作为监督。
有一个小问题是,过大的sss可能会导致大部分bbb在图像之外,引入太多无意义的填充值。在这种情况下,我们对bbb进行裁剪以保证其位于图像内部(见图4左),即:
b=(px,py,min(v⋅s,2(px−0),2(W−px)),min(1v⋅s,2(py−0),2(H−py)))(2)b=\left(p_x,p_y,min(v·s,2(p_x-0),2(W-p_x)),min(\frac{1}{v}·s,2(p_y-0),2(H-p_y))\right)\tag{2} b=(px,py,min(v⋅s,2(px−0),2(W−px)),min(v1⋅s,2(py−0),2(H−py)))(2)其中,WWW和HHH表示图像尺寸。(px−0)(p_x-0)(px−0)和(W−px)(W-p_x)(W−px)分别是中心到图像左右边缘的距离。
CBP模块。 对于建议包Bj\mathcal{B}_jBj,通过7×77×77×7的RoIAlign和两个全连接(fc)层提取特征Fj∈RU×D\bold{F}_j\in\mathbb{R}^{U×D}Fj∈RU×D,其中,UUU是Bj\mathcal{B}_jBj中建议的数量,DDD是特征的维度。我们参考WSDDN,设计了双流结构作为MIL分类器,以寻找最佳的边界框区域来表示目标。具体来说,对Fj\bold{F}_jFj应用分类分支fclsf_{cls}fcls得到Ojcls∈RU×K\bold{O}_j^{cls}\in\mathbb{R}^{U×K}Ojcls∈RU×K,然后它通过激活函数得到分类分数Sjcls∈RU×K\bold{S}_j^{cls}\in\mathbb{R}^{U×K}Sjcls∈RU×K,其中KKK表示实例类别的数目。同样,通过实力选择分支finsf_{ins}fins和激活函数得到实例分数Sjins∈RU×K\bold{S}_j^{ins}\in\mathbb{R}^{U×K}Sjins∈RU×K,即:
Ojcls=fcls(Fj),[Sjcls]uk=e[Ojcls]uk/∑i=1Ke[Ojcls]ui(3)\bold{O}_j^{cls}=f_{cls}(\bold{F}_j),~~~[\bold{S}_j^{cls}]_{uk}=e^{[\bold{O}_j^{cls}]_{uk}}/\sum_{i=1}^Ke^{[\bold{O}_j^{cls}]_{ui}}\tag{3} Ojcls=fcls(Fj), [Sjcls]uk=e[Ojcls]uk/i=1∑Ke[Ojcls]ui(3)Ojins=fcls(Fj),[Sjins]uk=e[Ojins]uk/∑i=1Ue[Ojins]ik(4)\bold{O}_j^{ins}=f_{cls}(\bold{F}_j),~~~[\bold{S}_j^{ins}]_{uk}=e^{[\bold{O}_j^{ins}]_{uk}}/\sum_{i=1}^Ue^{[\bold{O}_j^{ins}]_{ik}}\tag{4} Ojins=fcls(Fj), [Sjins]uk=e[Ojins]uk/i=1∑Ue[Ojins]ik(4)其中[⋅]uk[·]_{uk}[⋅]uk表示矩阵中第uuu行第kkk列的值。通过计算分类分数与实例分数的Hadamard乘积得到建议得分Sj\bold{S}_jSj,通过对UUU个建议框的建议分数求和得到包分数S^j\widehat{\bold{S}}_jSj,即:
Sj=Sjcls⊙Sjins∈RU×K,S^j=∑u=1U[Sj]u∈RK(5)\bold{S}_j=\bold{S}_j^{cls}\odot\bold{S}_j^{ins}\in\mathbb{R}^{U×K},~~~\widehat{\bold{S}}_j=\sum_{u=1}^U[\bold{S}_j]_u\in\mathbb{R}^K\tag{5} Sj=Sjcls⊙Sjins∈RU×K, Sj=u=1∑U[Sj]u∈RK(5)S^j\widehat{\bold{S}}_jSj可以看做是分类分数[Sjcls]u[\bold{S}_j^{cls}]_u[Sjcls]u与对应选择分数[Sjins]u[\bold{S}_j^{ins}]_u[Sjins]u的加权之和。
CBP损失。 CBP模块中的MIL损失(命名为Lmil1\mathcal{L}_{mil1}Lmil1以区别PBR中的MIL损失)使用交叉熵损失的形式,定义为:
Lcbp=αmil1Lmil1=−αmil1M∑j=1M∑k=1K[cj]klog([S^j]k)+(1−[cj]k)log(1−[S^j]k)(6)\mathcal{L}_{cbp}=\alpha_{mil1}\mathcal{L}_{mil1}=-\frac{\alpha_{mil1}}{M}\sum_{j=1}^M\sum_{k=1}^K[\bold{c}_j]_k\mathrm{log}([\widehat{\bold{S}}_j]_k)+(1-[\bold{c}_j]_k)\mathrm{log}(1-[\widehat{\bold{S}}_j]_k)\tag{6} Lcbp=αmil1Lmil1=−Mαmil1j=1∑Mk=1∑K[cj]klog([Sj]k)+(1−[cj]k)log(1−[Sj]k)(6)其中,cj∈{0,1}K\bold{c}_j\in\{0,1\}^Kcj∈{0,1}K是独热(one-hot)类别标签,αmil1\alpha_{mil1}αmil1为0.25。CBP损失是使每个建议正确地预测其所属的类别和实例。
最后,对每个目标的建议分数Sj\bold{S}_jSj最高的top-kkk个框进行加权,得到粗糙伪框,用于后续的PBR采样。
3.2 Pseudo Box Refinement
PBR阶段旨在微调伪框的位置、宽度和高度,它可以以级联的方式迭代地执行来获得更好的性能。通过在小范围内调整上一阶段(或迭代)得到的伪框的高度和宽度,同时抖动其中心位置,来生成更细化的建议框作为模块训练的正样本。而且,由于正建议包是在局部区域产生的,因此可以在远离建议包的地方采样负样本以抑制背景。PBR模块也对预测分数最高的top-kkk个建议进行加权,得到细化后的伪框,作为P2BNet的最终输出。
PBR采样。 在估计的框周围自适应采样。如图4 右所示,对于上一阶段(或迭代)得到的每个粗糙伪框b∗=(bx∗,by∗,bw∗,bh∗)b^*=(b_ x^*,b_y^*,b_w^*,b_h^*)b∗=(bx∗,by∗,bw∗,bh∗),我们用sss和vvv调整其尺度和纵横比,用oxo_xox和oyo_yoy抖动其位置,得到更细化的建议b=(bx,by,bw,bh)b=(b_x,b_y,b_w,b_h)b=(bx,by,bw,bh):
bw=v⋅s⋅bw∗,bh=1v⋅s⋅bh∗(7)b_w=v·s·b_w^*,~~~b_h=\frac{1}{v}·s·b_h^*\tag{7} bw=v⋅s⋅bw∗, bh=v1⋅s⋅bh∗(7)bx=bx∗+bw⋅ox,by=by∗+bh⋅oy(8)b_x=b_ x^*+b_w·o_x,~~~b_y=b_ y^*+b_h·o_y\tag{8} bx=bx∗+bw⋅ox, by=by∗+bh⋅oy(8)这些更细化的建议将作为正建议包Bj\mathcal{B}_jBj来训练PBR模块。
此外,为了更好地抑制背景,在PBR采样中引入了负样本。我们随机采样许多建议框,它们与所有包中的所有建议都具有较小的IoU(默认设置为小于0.3),组成PBR模块的负样本集合N\mathcal{N}N。通过伪框的分布对建议框进行采样,得到高质量的建议框以更好地优化(如图5所示)。
PBR模块。 PBR模块具有与CBP模块相似的结构。它与CBP共享主干网络和两个全连接层,并且也有一个分类分支fclsf_{cls}fcls和一个实例选择分支finsf_{ins}fins。注意,fclsf_{cls}fcls和finsf_{ins}fins在不同阶段和迭代之间不共享参数。对于实例选择分支,我们采用与CBP模块相同的结构,利用公式4来预测建议包Bj\mathcal{B}_jBj的实例分数Sjins\bold{S}_j^{ins}Sjins。不同的是,分类分支使用sigmoid激活函数σ(x)\sigma(x)σ(x)来预测分类分数Sjcls\bold{S}_j^{cls}Sjcls,即:
σ(x)=1/(1+e−x),Sjcls=σ(fcls(Fj))∈RU×K(9)\sigma(x)=1/(1+e^{-x}),~~~\bold{S}_j^{cls}=\sigma(f_{cls}(\bold{F}_j))\in\mathbb{R}^{U×K}\tag{9} σ(x)=1/(1+e−x), Sjcls=σ(fcls(Fj))∈RU×K(9)这种形式使其可以进行多标签分类(multi-label classification),可以区分来自不同目标的重叠的建议框。根据公式5的形式,使用当前阶段的Sjcls\bold{S}_j^{cls}Sjcls和Sjins\bold{S}_j^{ins}Sjins计算包分数S^j∗\widehat{\bold{S}}_j^*Sj∗。
对于负样本集合N\mathcal{N}N,我们计算其分类分数为:
Snegcls=σ(fcls(Fneg))∈R∣N∣×K(10)\bold{S}_{neg}^{cls}=\sigma(f_{cls}(\bold{F}_{neg}))\in\mathbb{R}^{|\mathcal{N}|×K}\tag{10} Snegcls=σ(fcls(Fneg))∈R∣N∣×K(10)PBR损失。 PBR损失由正包的MIL损失Lmil2\mathcal{L}_{mil2}Lmil2和负样本的负损失Lneg\mathcal{L}_{neg}Lneg组成,即:
Lpbr=αmil2Lmil2+αnegLneg(11)\mathcal{L}_{pbr}=\alpha_{mil2}\mathcal{L}_{mil2}+\alpha_{neg}\mathcal{L}_{neg}\tag{11} Lpbr=αmil2Lmil2+αnegLneg(11)其中,αmil2=0.25\alpha_{mil2}=0.25αmil2=0.25和αneg=0.75\alpha_{neg}=0.75αneg=0.75是本文中的设置。
①MIL损失。 PBR阶段中的MIL损失Lmil2\mathcal{L}_{mil2}Lmil2定义为:
FL(ζ,τ)=−∑k=1K[τ]k(1−[ζ]k)γlog([ζ]k)+(1−[τ]k)([ζ]k)γlog(1−[ζ]k)(12)\mathrm{FL}(\zeta,\tau)=-\sum_{k=1}^K[\tau]_k(1-[\zeta]_k)^\gamma\mathrm{log}([\zeta]_k)+(1-[\tau]_k)([\zeta]_k)^\gamma\mathrm{log}(1-[\zeta]_k)\tag{12} FL(ζ,τ)=−k=1∑K[τ]k(1−[ζ]k)γlog([ζ]k)+(1−[τ]k)([ζ]k)γlog(1−[ζ]k)(12)Lmil2=1M∑j=1M⟨cjT,S^j∗⟩⋅FL(S^j,cj)(13)\mathcal{L}_{mil2}=\frac{1}{M}\sum_{j=1}^M\langle\bold{c}_j^T,\widehat{\bold{S}}_j^*\rangle·\mathrm{FL}(\widehat{\bold{S}}_j,\bold{c}_j)\tag{13} Lmil2=M1j=1∑M⟨cjT,Sj∗⟩⋅FL(Sj,cj)(13)其中,FL(ζ,τ)\mathrm{FL}(\zeta,\tau)FL(ζ,τ)是focal loss,γ\gammaγ按照其原文设置为2。S^j∗\widehat{\bold{S}}_j^*Sj∗表示上一次PBR迭代的包分数(对于PBR的第一次迭代,使用CBP中的包分数)。⟨cjT,S^j∗⟩\langle\bold{c}_j^T,\widehat{\bold{S}}_j^*\rangle⟨cjT,Sj∗⟩表示两个向量的内积,意味着上一阶段或迭代在真值类别上预测的包分数。为了稳定训练,利用这个分数对每个目标的FL进行加权。
②负损失。 传统的MIL将属于其它类别的建议框视为负样本。为了进一步抑制背景,我们在PBR阶段采样更多的负样本,并引入负损失(γ\gammaγ也按照FL设定为2),即:
β=1M∑j=1M⟨cjT,S^j∗⟩,Lneg=−1∣N∣∑N∑k=1Kβ⋅([Snegcls]k)γlog(1−[Snegcls]k)(14)\beta=\frac{1}{M}\sum_{j=1}^M\langle\bold{c}_j^T,\widehat{\bold{S}}_j^*\rangle,~~~\mathcal{L}_{neg}=-\frac{1}{|\mathcal{N}|}\sum_{\mathcal{N}}\sum_{k=1}^K\beta·([\bold{S}_{neg}^{cls}]_k)^\gamma\mathrm{log}(1-[\bold{S}_{neg}^{cls}]_k)\tag{14} β=M1j=1∑M⟨cjT,Sj∗⟩, Lneg=−∣N∣1N∑k=1∑Kβ⋅([Snegcls]k)γlog(1−[Snegcls]k)(14)
4 Experiments
4.1 Experiment Settings
数据集和评价指标。 介绍了实验用的数据集和评价指标。mIoUpred_{pred}pred由训练集中所有目标的预测伪框与其对应的真值边界框之间的平均IoU计算得到。它可以直接评估P2BNet将标注的点转化为精确伪框的能力。
实现细节。 介绍了实验中的一些细节设置。在P2BNet中,我们使用多尺度(480、576、688、864、1000、1200)作为短边,在训练时调整图像尺寸,在推理时使用单尺度(1200)。我们选择默认设置的经典的Faster R-CNN FPN(主干是ResNet-50)作为检测器,训练和推理时使用单尺度(800)图像。
准中心点标注。 我们提出了一种对目标检测任务友好且成本较低的准中心(quasi-center,QC)点标注。在实际场景中,我们要求标注者以宽松的规则标注非高限制(non-high limit)中心区域的目标。由于实验中的数据集已经用边界框或掩码进行了标注,因此人工标注的点在中心区域服从高斯分布是合理的。我们利用Yu等人定义的具有中心椭圆约束的修正高斯分布(Rectified Gaussian Distribution,RG)。对于一个边界框b=(bx,by,bw,bh)b=(b_x,b_y,b_w,b_h)b=(bx,by,bw,bh),其中心椭圆可以定义为Ellipse(K)Ellipse(\mathcal{K})Ellipse(K),用(bx,by)(b_x,b_y)(bx,by)作为椭圆的中心,(K⋅bw,K⋅bh)(\mathcal{K}·b_w,\mathcal{K}·b_h)(K⋅bw,K⋅bh)作为椭圆的两个轴。此外,针对上述规则下大目标的绝对位置偏移过大的问题,我们限制两个坐标轴不超过96像素。如果目标的掩码MaskMaskMask与中心椭圆Ellipse(K)Ellipse(\mathcal{K})Ellipse(K)重叠,则用VVV表示相交的区域。如果没有相交的区域,那么VVV表示整个MaskMaskMask。当从边界框标注生成时,这些框被视为掩码。接下来,RGRGRG的定义为:
RG(p;μ,σ,K)={Gauss(p;μ,σ)∫VGauss(p;μ,σ)dp,p∈V0,p∉V(15)RG(p;\mu,\sigma,\mathcal{K})=\left\{\begin{matrix} \frac{Gauss(p;\mu,\sigma)}{\int_VGauss(p;\mu,\sigma)dp},&p\in V\\ 0,&p\notin V \end{matrix}\right.\tag{15} RG(p;μ,σ,K)={∫VGauss(p;μ,σ)dpGauss(p;μ,σ),0,p∈Vp∈/V(15)其中,μ\muμ和σ\sigmaσ是RGRGRG的均值和标准差。K\mathcal{K}K决定了Ellipse(K)Ellipse(\mathcal{K})Ellipse(K)。本文选择RG(p;0,14,14)RG(p;0,\frac{1}{4},\frac{1}{4})RG(p;0,41,41)生成QC点标注。
4.2 Performance Comparisons
和点监督、弱监督以及框监督方法的对比实验,具体的实验结论可以参照原文。
4.3 Ablation Study
除了表2b中的框合并策略部分和表3d中不同检测器部分(k=4k=4k=4)外,top-kkk设置为k=7k=7k=7。
P2BNet中的训练损失。 ①CBP损失。 作为对比,我们实施了Lpos\mathcal{L}_{pos}Lpos,它将包中的所有建议框都视为正样本。我们发现它很难优化,并且性能很差,证明了我们提出的KaTeX parse error: Expected 'EOF', got '}' at position 17: …mathcal{L}_mil1}̲用于伪框预测的有效性。粗糙建议包可以覆盖高IoU的大部分目标,致使缺失率较低。但由于尺度和纵横比是粗糙的,中心位置需要调整,性能仍有细化的潜力。②PBR损失。 如果仅有Lmil2\mathcal{L}_{mil2}Lmil2,性能会下降,主要原因是级联方式的误差累积focal loss的负样本不足。SigmoidSigmoidSigmoid激活函数没有显式的负样本来抑制背景,因此引入负采样和负损失Lneg\mathcal{L}_{neg}Lneg。性能分别提升,表明对其进行优化是必要且有效的。我们还对mIoUpred_{pred}pred进行了评估,讨论预测伪框的质量。在PBR阶段使用Lmil2\mathcal{L}_{mil2}Lmil2和Lneg\mathcal{L}_{neg}Lneg,mIoU提升了,表明伪框的质量更好了。受Yu等人的启发,我们实施了LpesudoL_{pesudo}Lpesudo,将CBP阶段的伪框视为正样本。然而,LpesudoL_{pesudo}Lpesudo限制了细化,性能下降了。在表3 c中,如果在PBR阶段去除建议框的抖动策略,性能也会下降。
PBR中的细化次数。 使用两次细化可以达到性能饱和,我们选择一次细化作为默认配置。
包的合并策略。 我们使用top-kkk分数平均权重作为合并策略。我们发现超参数kkk轻微地敏感,可以很容易地推广到其它数据集,如表2b所示,并且只有top-111或top-fewfewfew的建议框在框合并中起主要作用。k=4k=4k=4时性能最好。在推理时,如果将包分数S\bold{S}S替换为分类分数Scls\bold{S}^{cls}Scls进行合并,性能会下降。
平均召回率。 如表3a所示,我们的OTSP-free方法更善于发现目标。
不平衡采样的分析。 为了演示不平衡采样的影响,我们为每个目标采样不同数量的建议框,并在训练期间的每个epoch中保持它们不变。表3b中的性能下降表明了不平衡采样的负面影响。
不同的检测器。 如表3d所示,我们的框架在其它检测器上表现出了有竞争力的性能。
5 Conclusion
在本文中,我们深入分析了OTSP-based的PSOD框架中存在的不足,并进一步提出了一种新的不需要OTSP的网络P2BNet来获得目标间平衡且高质量的建议包。由粗到精的策略将伪框的预测分为CBP和PBR阶段。在CBP阶段,围绕标注的点进行固定采样,通过实例级MIL预测粗糙伪框。PBR阶段在估计框周围进行自适应采样,以级联的方式微调预测框。如上所述,P2BNet充分利用点信息来生成高质量的建议包,更有利于优化检测器(FR)。值得注意的是,概念上简单的P2BNet-FR框架在单个点标注上取得了SOTA的性能。
相关文章:

弱监督论文阅读:P2BNet算法笔记
标题:Point-to-Box Network for Accurate Object Detection via Single Point Supervision 会议:ECCV2022 论文地址:https://link.springer.com/10.1007/978-3-031-20077-9_4 官方代码:http://www.github.com/ucas-vg/P2BNet 作者…...

使用Java编写Hive的UDF实现身份证号码校验及15位升级18位
使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中,有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息。古人是用Oracle做数仓,理所当然是用SQL写UDF【虽然SQL写UDF给SQL用就像用鸡肉饲养肉…...

前端:分享JS中7个高频的工具函数
目录 ◆1、将数字转换为货币 ◆2、将 HTML 字符串转换为 DOM 对象 ◆3、防抖 ◆4、日期验证 ◆5、将 FormData(表单数据)转换为 JSON ◆6、衡量一个函数的性能 ◆7、从数组中删除重复项 JavaScript 实用函数是有用的、可重复使用的片段࿰…...

docker基础用法及镜像和容器的常用命令大全
1.docker 体系架构 Docker 采用了 C / S 架构,包括客户端和服务端。Docker 守护进程作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或…...

Spring(Bean生命周期)
目录 1. 生命周期简图2. 扩展接口介绍 2.1 Aware接口2.2 BeanPostProcessor接口2.3 InitializingBean2.4 DisposableBean2.5 BeanFactoryPostProcessor接口3. spring的简化配置 3.1 项目搭建3.2 Bean的配置和值注入3.3 AOP的示例 1. 生命周期简图 2. 扩展接口介绍 2.1 Aware接…...

什么是分布式锁?几种分布式锁分别是怎么实现的?
一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&am…...

【一天一门编程语言】R 语言程序设计极简教程
R 语言程序设计极简教程 文章目录 R 语言程序设计极简教程R语言简介1.1 介绍1.2 R 语言的基础知识1.2.1 语法1.2.2 数据类型1.2.3 基本操作1.3 R 语言的高级知识1.3.1 函数1.3.2 包1.3.3 面向对象编程1.4 使用 R 语言的实践1.4.1 数据处理1.4.2 数据可视化1.4.3 数据建模1.4.3.…...

记一次顿悟的经历
2023.02.20 一次顿悟的经历 体验一次顿悟 需求: 为避免接收数据时一直阻塞,先调用 select 在一定时间内判断是否有数据可读 如果超时,就报错没读到数据,即使返回 如果仍然在 set 里,就调用 recv 函数接收数据 问…...

19_FreeRTOS软件定时器
目录 软件定时器介绍 FreeRTOS软件定时器特点 软件定时器的命令队列 软件定时器的相关配置 单次定时器和周期定时器 软件定时器结构体成员 FreeRTOS软件定时器相关API函数 实验源码 软件定时器介绍 定时器描述:从指定的时刻开始,经过一个指定时间,然后触发一个超时事件…...

值得推荐!安利5款良心又好用的小众软件
电脑上的各类软件有很多,除了那些常见的大众化软件,还有很多不为人知的小众软件,专注于实用功能,简洁干净、功能强悍。今天分享5个实用的软件,简单实用,效果拉满,堪称工作生活必备! …...

Enhanced ShockBurst (ESB)原文翻译
自我学习为主,同时也为所需要的提供一份资料 官方地址 增强型ShockBurst(ESB)是一种支持双向数据包通信的基本协议,包括数据包缓冲、数据包确认和丢失数据包的自动重传。ESB以低功耗提供无线通信,并且实现的代码量小且…...

软件测试之兼容性测试
对于基于计算机平台的软件,在测试过程中必须考虑软、硬件的兼容性,在设计测试用例的过程中必须考虑数据转换或转移的问题,应该尽力发现其可能带来的错误。不仅是基于计算机平台的软件,对于嵌入式软件也一样,在软件升级…...

笔记(一)——容器
容器分类:序列式容器:每个元素都有固定位置,取决于插入的时机和地点,和元素无关,如vector、deque、list、stack、queue。关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,如…...

C++入门:命名空间
假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C 应用程序中。例…...

操作系统(复试准备)
操作系统(复试准备) 第一章知识点 操作系统概述 操作系统的概念 负责协调软硬件等计算机资源的工作 为上层用户,应用程序提供简单易用的接口 是一种系统软件 操作系统的功能与目标 资源的管理者 处理机管理,存储器管理&#x…...

2023年CDGA考试模拟题库(501-600)
2023年CDGA考试模拟题库(501-600) 501.希望从数据中获取价值的组织认识到,高质量数据比低质量数据更有价值。使用劣质数据充满风险,会损害组织的声誉,导致罚款、收入损失、客户流失和负面的媒体曝光等组织基于各种业务驱动因素而着手进行数据质量管理活动,下列哪项不属于上述驱…...

NCNN+Int8+yolov5部署和量化
【GiantPandaCV引言】 还记得我在两个月前写的文章吗,关于yolov4-tiny+ncnn+int8量化的详细教程:NCNN+INT8+YOLOV4量化模型和实时推理 后来准备写yolov5+ncnn+int8量化的教程,却在yolov5的量化上遇到了麻烦,一方面是量化后速度更慢了,另一方面是精度下降严重,出现满屏都…...

springboot+vue.js协同过滤算法之智能旅游推荐系统java
目 录 第一章 绪论 3 1.1课题背景 3 1.2课题研究的目的和意义 3 1.3 研究现状 4 1.4论文所做的主要工作 4 第二章 技术介绍 5 2.1B/S结构 5 2.2MySQL 介绍 5 2.3MySQL环境配置 6 第三章 系统分析与设计 8 3.1系统说明 8 3.2系统可行性分析…...

Google Brain新提出的优化器“Lion”,效果要比Adam(W)更好
Google Brain新提出的优化器“Lion”,效果要比Adam(W)更好 论文地址:https://arxiv.org/abs/2302.06675代码地址:https://github.com/google/automl/blob/master/lion/lion_pytorch.py 1 简单、内存高效、运行速度更快 与 AdamW 和各种自适…...

慢雾:Discord 私信钓鱼手法分析
事件背景 5 月 16 日凌晨,当我在寻找家人的时候,从项目官网的邀请链接加入了官方的 Discord 服务器。在我加入服务器后立刻就有一个"机器人"(Captcha.bot)发来私信要我进行人机验证。这一切看起来相当的合理。我也点击了这个验证链接进行查看…...

2023-2-25 刷题情况
交换字符使得字符串相同 题目描述 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 “x” 和 “y”,你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。 …...

【数据结构】双向链表的接口实现(附图解和源码)
双向链表的接口实现(附图解和源码) 文章目录双向链表的接口实现(附图解和源码)前言一、定义结构体二、接口实现(附图解源码)1.初始化双向链表2.开辟新空间3.尾插数据4.尾删数据5.打印双向链表中数据6.头插数…...

数据结构与算法之[把数字翻译成字符串]动态规划
前言:最近在刷动态规划的算法题目,感觉这一类题目还是有一点难度的,但是不放弃也还是能学好的,今天给大家分享的是牛客网中的编程题目[把数字翻译成字符串],这是一道经典的面试题目,快手,字节跳…...

java 面向对象三大特性之多态 万字详解(超详细)
目录 前言 : 一、为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二、什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三、多态的使用 : 1.多态中成员方法的使用(重要…...

git push origin master 情况
📢📢📢📣📣📣哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝一位上进心十足的【Java ToB端大厂领…...

ElasticSearch查询优化routing
如果一个索引分片多达一百,再加上每个分片数据量大的情况下ES查询速度会慢,这种情况可以根据业务情况考虑使用_routing优化。 _routing 路由 当索引一个文档的时候,文档会被存储在一个主分片上。在存储时一般都会有多个主分片。Elasticsearch 如何知道一个文档应该放置在哪…...

【HashMap 1.7和1.8】
Java中的HashMap是一种常用的数据结构,用于存储键值对。在Java 1.7和1.8中,HashMap的实现有一些不同。 Java 1.7中的HashMap实现是基于“拉链法”的哈希表。每个哈希桶(bucket)是一个链表,存储了散列值相同的键值对。当键值对数量过多时&…...

【Zabbix实战之故障处理篇】Zabbix监控中文乱码问题解决方法
【Zabbix实战之故障处理篇】Zabbix监控中文乱码问题解决方法 一、问题展现1.查看Zabbix仪表盘2.问题分析二、检查Zabbix环境1.检查Zabbix监控主机2.检查Zabbix各组件状态三、在宿主机安装中文字体库1.安装中文字体2.查看字体文件四、安装中文字库1.查看Zabbix所有组件容器2.拷贝…...

学习(mianshi)必备-ClickHouse高性能查询/写入和常见注意事项(五)
目录 一、ClickHouse高性能查询原因-稀疏索引 二、ClickHouse高性能写入-LSM-Tree存储结构 什么是LSM-Tree 三、ClickHouse的常见注意事项和异常问题排查 一、ClickHouse高性能查询原因-稀疏索引 密集索引: 在密集索引中,数据库中的每个键值都有一个索引记录&…...

在Kotlin中探索 Activity Results API 极简的解决方案
Activity Results APIActivity Result API提供了用于注册结果、启动结果以及在系统分派结果后对其进行处理的组件。—Google官方文档https://developer.android.google.cn/training/basics/intents/result?hlzh-cn一句话解释:官方Jetpack组件用于代替startActivity…...