欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【object_detection】Top-N指标计算方法

程序员文章站 2022-03-15 15:01:01
一、图像分类性能评估指标(概念介绍)Top-1 & Top5: 这两个标准主要用于图像分类任务中Top-1 error rate: 对一张图片,若概率最大的是正确答案,则认为分类正确,否则错误;用 argmax 从网络输出取到的预测 index 与真实 index 的准确率。Top-5 error rate: 对一张图片,若概率前五的预测中包含正确答案,则认为分类正确,否则错误;二、问题分析1. 针对 Top-1 的准确率: 直接通过 argmax 就可以了import numpy as...

一、图像分类性能评估指标(概念介绍)

Top-1 & Top5: 这两个标准主要用于图像分类任务中

Top-1 error rate: 对一张图片,若概率最大的是正确答案,则认为分类正确,否则错误;用 argmax 从网络输出取到的预测 index 与真实 index 的准确率。

Top-5 error rate: 对一张图片,若概率前五的预测中包含正确答案,则认为分类正确,否则错误;

二、问题分析

1. 针对 Top-1 的准确率: 直接通过 argmax 就可以了

import numpy as np
lists = np.array([0.4,0.2,0.3,0.1])
index = np.argmax(lists)
score = lists[index]

2. 针对 Top-N(N>1) 的准确率: 无法使用 argmax 进行解决了,可以考虑利用 Numpy 中的 argsort

np.argmax 的功能就是对 list 从小到大进行排序,最后输出排序过后每个元素本来的下标。

import numpy as np
lists = np.array([0.4,0.2,0.3,0.1])
indexs = np.argsort(lists)
print(indexs)		# [3 1 2 0]

这个怎么应用到 Top-N 计算中呢?其实就很容易了,可以利用 argsort 取得排好序元素的下标,再通过下标找到对应的概率值即可:以 Top-3 指标举例

import numpy as np

lists = np.array([0.4,0.2,0.3,0.1])

def get_top_n(lists,n):
    sort_index = np.argsort(lists)
    n_index = sort_index[-n:]	# 因为是按照概率从大到小取 n 个
    indexs = []
    scores = []
    for index in reversed(n_index):	# 从大到小取,所以通过 reversed() 倒置一下
        indexs.append(index)
        scores.append(lists[index])
    return(indexs,socres)
 
indexs,scores = get_top_n(lists, 3)
print(indexs, scores)	# [0, 2, 1] [0.4, 0.3, 0.2]

本文地址:https://blog.csdn.net/libo1004/article/details/110876316

相关标签: Object_detection