REID重识别的一些思考-MAP指标的计算详细(三)

前言:网上搜索reid map的计算,会出现很多版本的计算方式,有很多中计算方式,但是这么多哪一个是正确的,看了这么多版本该信谁的?所以还是去Google找资料,看paper,下面是我的个人理解,希望能帮到你

MAP的计算在目标检测中和图像检索中稍有不同

REID的评价标准

 首先说一下 REID的评价标准,常见的有 top-1 top-5 top-10 CMC MAP评价指标,那么为什么要有这么多的评价指标,都是干嘛的,简单来说top-n的指标大家都知道是干嘛的,但是这个指标不能很好的评价模型的好坏,所以这里就提出了另外的计算方式CMC,这个指标是在top-n的指标上生成的,那他是干嘛的,比如我有3个query:
下述中的0 1 不代表ID,只代表是不是和query对应的ID,1代表是一样的ID
第一个query的结果为 1,0,0,0,1所以对应的top-1:100% top-5:100%
第二个query的结果为 0,0,0,0,0所以对应的top-1:0% top-5:0%
第三个query的结果为 0,0,0,0,1所以对应的top-1:0% top-5:100%
所以最终的CMC就是三者平均的结果(而不是具体针对某一个qurey的结果):top-1:33.3% top-5:50%,表示该模型top-1的整体识别准确率为 33.3%,对应的我们可以画出不同top-n下的CMC曲线,一次命中率越高,说明我们的模型性能越好
 那么为什么又有AP了,假如我们现在只计算top-1的CMC,现有这样的一个查询结果,CMC都是1,但是明显可以看到b的效果好于c的,所以在multi-query的背景下,CMC指标不再是一个很有效的指标,所以这里就要AP这个指标来评判了,所以才计算MAP

note: 这张图来自market-1501提出的paper : Scalable Person Re-identification: A Benchmark
在这里插入图片描述

REID MAP的计算

 图像检索中的MAP的计算又分为 single-shot和 multi-shot,不同的shot方式对应不同的map计算方式

1、single-shot

 该种方式说的是在gallery中最多只有一个匹配,这个可以参考我的这篇博客中的解释,比如我想做一个行人的查询,在训练集中可能每个人都有很多张的照片,但是在构建 gallery 的时候,这里每个人也就是每个ID只有一个向量,这个向量可以是随机挑选这个人(相同的ID)其中一张照片生成的,也可以是这个人/ID的所有图像向量的均值,所以当我们拿一个query做查询的时候,在gallery中最多只会得到一个正确的结果。所以这里的AP就特别好计算,由于最终的recall的值要么为1,要么为0,所以这里就可以直接忽略recall的值,可以参照我下面博客链接中的方式进行实现。

MAP在目标检测和图像检索中的计算(详细)

2、multi-shot

 这种方式计算的就很有意思了,目前网络上查询会出现很多的版本,每种版本的计算方式都略有不同

方式一

 目前最常见的方式和single-shot的计算方式相似,只是计算AP的值,具体的计算方式见这个 图像检索:信息检索评价指标

方式二

 这里就是根据MAP的定义进行计算,即求P-R曲线下面的面积,关于precision 和 recall的计算方式和上述相同,然后根据目标检测的方式进行AP的计算。

 但是这种方式还存在一个问题就是:预测的时候我们取前多少个作为prediction输出,验证集中ID对应gallery中相同ID的数量不同,有的多有的少怎么办,比如取前100个prediction输出的概率,那么如果一部分ID对应的相同ID的图像数量只有10张,另一部分有100张怎么办,是数据倾斜的问题还是MAP会将这样的输出进行抵消?论文中的MAP计算方式都是map@5、map@100还是 计算所有的gallery,进行排序?
(看了几个GitHub的实现链接1Market1501Evaluat
这几个中都是对于market1501数据集的evaluation的评判标准,这里面的计算有几个关键的点:其中的predctions是全部的gallery的计算结果,其中计算recall的分母为gallery中所有和query相同的ID图像的总数量(如果考虑 cross-view的话(也就是跨境识别),就要除去同一camera下的 junk图像),所以这里面不涉及到取预测值的前多少个,所以也就不涉及到上述中提到的问题了。

 还有一种方式是比如取前5个prections,然后recall的计算分母就是5(默认输出的就应该是正确的,这个是之前一直想错的地方),计算方式和上面的相同,也是计算P-R曲线下面的面积,但是这里具体实现方式和之前做的不太一样,这里的计算方式为计算梯形的面积,具体的计算过程会感觉没有Recall的参与吗,但是实际上参与了,只是没有显示的参与。具体的解释见这篇博客(看过最清晰的解释)ReID任务中的CMC和mAP

 note: 这里的计算方式和上述market-1501 paper 图中的计算结果是不相符的,但是目前很多的计算方式都是基于上述连接中的计算方式,paper中没有进行具体的描述,所以这里就暂时认为那张图只是进行说明,具体的计算还是以这个链接为准ReID任务中的CMC和mAP

方式三

 这里的方式是谷歌地标识别大赛的一种评价方式,这方式实现的方法和上述链接ReID任务中的CMC和mAP中的方式挺像的,也用到了 Recall ,只是将其放到了分母中。

 其中 nq 的值为 prection的个数,和设定的100取最小值,一般的预测输出的个数就是gallery的大小,也就是说一般都是大于100的
mq为在gallery中和query相同ID的图像个数,取其和100的最小值,也就在另外一个角度解释了当有的图像在gallery中相同ID的图像数量多,有的少的计算方式不同,比如有的query图像在gallery中有10张相同ID的图像,那么我们预测输出的100个预测值中最多有10个正确的,有的query图像在gallery中有100张相同ID的图像,那么我们预测输出的100个预测值中可能就全部正确,这样对于那些图像数量少的就有点不公平了,所以这里就做了一个min的操作。
对应的代码链接:Google Landmark Retrieval 2020 中的MAP计算
在这里插入图片描述

最新:

 目前确定的计算方式为方式二中的计算方式,因为很多GitHub上的实现方式为该种,计算所有的gallery中的数据(本人的项目中不用考虑cross-view的情况)

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值