我是靠谱客的博主 沉静哈密瓜,最近开发中收集的这篇文章主要介绍HPatches 数据集和评价指标,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据详情

构建方法

利用三维重建的方法获得特征点位置和匹配关系。

数据内容

后面更新

评价准则

定义 y = ( y 1 , … , y n ) ∈ { − 1 , 0 , + 1 } n mathbf { y } = left( y _ { 1 } , ldots , y _ { n } right) in { - 1,0 , + 1 } ^ { n } y=(y1,,yn){1,0,+1}n 是对查询 patch 和 测试集合的每个 patches 按照它们描述符之间 score 降序或者 dis 升序排序的 label 集合,label 分别表示 negative,ignore 和 positive,即查询 patch 和测试集中某个 patch 是非匹配关系,忽略关系,还是匹配关系(真值)。

这样基于上面的 y mathbf { y } y 定义排序前 i i i 个为算法匹配上的结果,这样 precision 和 recall 指标分布为:

P i ( y ) = ∑ k = 1 i [ y k ] + / ∑ k = 1 i ∣ y k ∣ R i ( y ) = ∑ k = 1 i [ y k ] + / ∑ k = 1 N [ y k ] + P _ { i } ( mathbf { y } ) = sum _ { k = 1 } ^ { i } left[ y _ { k } right] _ { + } / sum _ { k = 1 } ^ { i } left| y _ { k } right| \ R _ { i } ( mathbf { y } ) = sum _ { k = 1 } ^ { i } left[ y _ { k } right] _ { + } / sum _ { k = 1 } ^ { N } left[ y _ { k } right] _ { + } Pi(y)=k=1i[yk]+/k=1iykRi(y)=k=1i[yk]+/k=1N[yk]+

其中 [ z ] + = max ⁡ { 0 , z } [ z ] _ { + } = max { 0 , z } [z]+=max{0,z},正样本返回 1,其他返回 0。

这个和之前的定义一直,至少方式的不同:
P r e c i s i o n = T P T P + F P R e c a l l = T P T P + F N Precision = frac{TP}{TP + FP} \ Recall = frac{TP}{TP + FN} Precision=TP+FPTPRecall=TP+FNTP
然后 average precision (AP) 的定义如下:
A P ( y ) = ∑ k : y k = + 1 P k ( y ) / ∑ k = 1 N [ y k ] + A P ( mathbf { y } ) = sum _ { k : y _ { k } = + 1 } P _ { k } ( mathbf { y } ) / sum _ { k = 1 } ^ { N } left[ y _ { k } right] _ { + } AP(y)=k:yk=+1Pk(y)/k=1N[yk]+
其中 k : y k = + 1 k : y _ { k } = + 1 k:yk=+1 表示 k k k 取值范围为上面排序集合中每个正样本的 index(负样本 index 无意义,只是降低 precision 大小)。

对每个正样本 index 求对应的 precision,然后平均。

但在 image matching 任务和 patch retrieval 任务中会用到忽略关系 y i = 0 y _ { i } = 0 yi=0 patch pairs 的数目。预先定义正样本的数目为(许多正样本的 patch pairs 在评估中不需要,比如 image matching 任务中查询 patch 只会在目标图像找到最优的 patch,并求取 score 用于后面的评估,而该查询 patch 与目标图像上其他的 patch 不会计算 score 和参与评估):
K ≥ ∑ k = 1 N [ y k ] + K geq sum _ { k = 1 } ^ { N } left[ y _ { k } right] _ { + } Kk=1N[yk]+
然后其他指标分别为:
R i ( y ; K ) = ∑ k = 1 i [ y k ] + / K A P ( y ; K ) = ∑ k : y k = + 1 P k / K R _ { i } ( mathbf { y } ; K ) = sum _ { k = 1 } ^ { i } left[ y _ { k } right] _ { + } / K \ A P ( mathbf { y } ; K ) = sum _ { k : y _ { k } = + 1 } P _ { k } / K Ri(y;K)=k=1i[yk]+/KAP(y;K)=k:yk=+1Pk/K
本文定义了三个评价指标,每个指标都是计算的 AP 值。

patch verification

指标

给定数据集定义:

P = ( ( x i , x i ′ , y i ) , i = 1 , … , N ) mathcal { P } = left( left( mathbf { x } _ { i } , mathbf { x } _ { i } ^ { prime } , y _ { i } right) , quad i = 1 , ldots , N ) right. P=((xi,xi,yi),i=1,,N)

其中 x i , x i ′ ∈ R 65 × 65 × 1 mathbf { x } _ { i } , mathbf { x } _ { i } ^ { prime } in mathbb { R } ^ { 65 times 65 times 1 } xi,xiR65×65×1 是匹配或者非匹配的 patch pairs, y i = ± 1 y _ { i } = pm 1 yi=±1 是 label。

这样在评估匹配算法 A mathcal { A } A 时,对输入的两个 patches x i , x i ′ mathbf { x } _ { i } , mathbf { x } _ { i } ^ { prime } xi,xi,输入这两个 patches 匹配的置信度 score s i ∈ R s _ { i } in mathbb { R } siR(其实实际一般是 Euclidean 距离,score 可以用距离的倒数表示)。

这样按照 score 降维排序 s π 1 ≥ s π 2 ≥ ⋯ ≥ s π N s _ { pi _ { 1 } } geq s _ { pi _ { 2 } } geq cdots geq s _ { pi _ { N } } sπ1sπ2sπN,按照上一节的方法求每个 patch 集合的 A P ( y π 1 , … , y π N ) A P left( y _ { pi _ { 1 } } , ldots , y _ { pi _ { N } } right) AP(yπ1,,yπN),用该值评估算法 A mathcal { A } A 的性能。

数据集

之前构建数据集通过对匹配 pairs 添加不同的重投影噪声,生成 EASY,HARD 和 TOUGH 三类数据集,同时在同一个序列或者不同的图像序列旋转为上面选定的 patch 选择非匹配 pairs。这样就6 个 patch verification 评估的基准 patch 集合,每个集合包括 2 × 1 0 5 2 times 10 ^ { 5 } 2×105 正样本匹配 pairs 和 1 × 1 0 6 1 times 10 ^ { 6 } 1×106 负样本非匹配 pairs。

最终的评价指标是在这 6 个数据集上平均的 mAP。

image matching

定义

在 image matching 任务中,图像表示为多个 patches 的集合,如下:

L k = ( x i k , i = 1 , … , N ) L _ { k } = left( mathbf { x } _ { i k } , i = 1 , dots , N right) Lk=(xik,i=1,,N)

image pairs 表示为:

D = ( L 0 , L 1 ) mathcal { D } = left( L _ { 0 } , L _ { 1 } right) D=(L0,L1)

其中 L 0 L _ { 0 } L0 是参考(查询)图像, L 1 L _ { 1 } L1 是目标图像,其中 X i 0 mathbf { X } _ { i 0 } Xi0 是和 X i 1 mathbf { X } _ { i 1 } Xi1 是匹配关系。

利用 D mathcal { D } D 去评估算法 A mathcal { A } A 的,给定查询 patch x i 0 ∈ L 0 mathbf { x } _ { i 0 } in L _ { 0 } xi0L0,需要找到最优的匹配 patch x σ i 1 ∈ L 1 mathbf { x } _ { sigma _ { i } 1 } in L _ { 1 } xσi1L1 的 index σ i ∈ { 1 , … , N } sigma _ { i } in { 1 , dots , N } σi{1,,N},同时输出置信度 score s i ∈ R s _ { i } in mathbb { R } siR

这样上面会求的 N N N patch pairs 的 score,分别对应的 label 为:

y i = 2 [ σ i = ? i ] − 1 y _ { i } = 2 left[ sigma _ { i } stackrel { ? } { = } i right] - 1 yi=2[σi=?i]1

也就是 patch pairs 在图像上的 index 一直是匹配关系,不一致时非匹配关系。

同理按照 score 降维排序 s π 1 ≥ s π 2 ≥ ⋯ ≥ s π N s _ { pi _ { 1 } } geq s _ { pi _ { 2 } } geq cdots geq s _ { pi _ { N } } sπ1sπ2sπN,按照上一节的方法求每对 image pair 的 A P ( y π 1 , … , y π N ; N ) A P left( y _ { pi _ { 1 } } , ldots , y _ { pi _ { N } } ; N right) AP(yπ1,,yπN;N),用该值评估算法 A mathcal { A } A 的性能。

数据集

根据视角 viewpoint 或者光线illumination 的变化进行分组,同时每个组的 patches 生成 EASY,HARD 和 TOUGH 三类数据集。

最终的评价指标是在所有的 image pairs 以及上诉变化的数据集上平均的 mAP。

patch retrieval

定义

给定数据集定义:

P = ( x 0 , ( x i , y i ) , i = 1 , … , N ) mathcal { P } = left( mathbf { x } _ { 0 } , left( mathbf { x } _ { i } , y _ { i } right) , i = 1 , ldots , N right) P=(x0,(xi,yi),i=1,,N)

其中 x 0 mathbf { x } _ { 0 } x0 是来自查询图像 L 0 L _ { 0 } L0 的 patch,其他的 patch 来自相同图像序列的图像 L k , k = 1 , … , K L _ { k } , k = 1 , ldots , K Lk,k=1,,K

而且可知在相同图像序列的图像 L k L _ { k } Lk 上确定有一个查询 x 0 mathbf { x } _ { 0 } x0 匹配的 patch,所有总共有确定的 K K K 个正样本。

对于每个数据集 P mathcal { P } P 来说,算法 A mathcal { A } A 输出 x 0 mathbf { x } _ { 0 } x0 和 每个patch x i mathbf { x } _ { i } xi 的 score s i ∈ R s _ { i } in mathbb { R } siR

同理按照 score 降维排序 s π 1 ≥ s π 2 ≥ ⋯ ≥ s π N s _ { pi _ { 1 } } geq s _ { pi _ { 2 } } geq cdots geq s _ { pi _ { N } } sπ1sπ2sπN,按照上一节的方法求每个数据集 P mathcal { P } P A P ( y π 1 , … , y π N ; N ) A P left( y _ { pi _ { 1 } } , ldots , y _ { pi _ { N } } ; N right) AP(yπ1,,yπN;N),用该值评估算法 A mathcal { A } A 的性能。

数据集

基准数据集总共包括 1 × 1 0 4 1 times 10 ^ { 4 } 1×104 个测试数据集 P mathcal { P } P,其中 x 0 mathbf { x } _ { 0 } x0 包括 K = 5 K = 5 K=5 个匹配 patch,以及 2 × 1 0 4 2 times 10 ^ { 4 } 2×104 个干扰负样本。同时每个测试数据集 P mathcal { P } P的正样本 patches 生成 EASY,HARD 和 TOUGH 三类数据集。

最终的评价指标是在所有的测试集合 P mathcal { P } P以及上诉变化的数据集上平均的 mAP。

最后

以上就是沉静哈密瓜为你收集整理的HPatches 数据集和评价指标的全部内容,希望文章能够帮你解决HPatches 数据集和评价指标所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部