计算AP值的两种方式

第一种,query结果的第一个不包括在内

MAP = [];
for i =1:query_frame
    old_recall = 0;
    old_precision = 1.0;
    ap = 0;
    intersect_size = 0;
    j = 0;    

    ngood = length(gnd{i});
    good_now = 0;
    ngood = ngood - 1;

    for n = 2:return_num
        if ~isempty(find(gnd{i} == query_result(i,n)))
            flag = 1; % good image
            good_now = good_now+1;
        else
            flag = 0; % bad image
        end

        if flag == 1%good
            intersect_size = intersect_size + 1;
        end
        recall = intersect_size/ngood;
        precision = intersect_size/(j + 1);
        ap = ap + (recall - old_recall)*((old_precision+precision)/2);
        old_recall = recall;
        old_precision = precision;
        j = j+1;
        if good_now == ngood
            break;
        end
    end
    MAP = [MAP,ap];

end
final_MAP = mean(MAP);

fprintf('CNN final_MAP %6.4f \n',final_MAP);

第二种,query结果的第一个计算在内,这样计算出来的AP值要比第一种高

 MAP = [];
 for i = 1:query_frame
     double map;
     map = 0;
     up = 0;
     gnd_num = length(gnd{i}); 
     for j =1:return_num
         if( find(gnd{i}==query_result(i,j)))
            up = up+1;
            map = map + up/j;
         end
         if up == gnd_num
             break;
         end
     end
     map = map / gnd_num;
     MAP(i) = map;
 end
 final_MAP = mean(MAP);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值