计算机视觉中的目标检测度量

detmetric的Python项目详细描述


徐静

简介

这个项目的动机是不同的工作和实现对目标检测问题的评估指标缺乏共识。虽然在线比赛使用他们自己的指标来评估目标检测的任务,但只有一些比赛提供参考代码片段来计算被检测对象的准确性。在

想要使用不同于竞争对手提供的数据集来评估他们的工作的研究人员,需要实现他们自己的标准版本。有时,错误或不同的实现可能会产生不同和有偏见的结果。理想情况下,为了在不同的方法之间进行可信的基准测试,必须有一个灵活的实现,每个人都可以使用这个实现,而不管使用的数据集是什么。在

此项目提供了易于使用的函数,实现了最流行的对象检测竞争对手使用的相同指标。我们的实现不需要将检测模型修改为复杂的输入格式,避免了转换为XML或JSON文件。我们简化了输入数据(地面真实边界框和检测边界框),并在单个项目中收集了学术界和挑战使用的主要指标。我们的实现与官方实现进行了仔细的比较,结果完全相同。在

在下面的主题中,您可以找到在不同竞赛和作品中使用的最流行的度量标准的概述,以及展示如何使用我们的代码的示例。在

此软件包支持:

  • PASCAL VOC挑战指标(P-R曲线,mAP)
  • COCO检测挑战(P-R曲线,AP)
  • 精密度
  • 召回
  • F分数
  • 置信区间与方差

更多细节可以在演示中找到。在

演示

#---------------------test detcivar module-----------------------
from detcivar import DetStatic

precision = [0.1, 0.2, 0.3, 0.4, 0.5]


# test mean
p_mean = DetStatic().mu(precision)
print(p_mean)

real_mean = sum(precision) / len(precision)
print(real_mean)


# test variance

p_var = DetStatic().variance(precision)
print(p_var)

real_var = float((0.1-real_mean)**2 + (0.2-real_mean)**2  + (0.3-real_mean)**2  + (0.4-real_mean)**2  + (0.5-real_mean)**2) / (len(precision)-1)
print(real_var)

# test confidence

ci = DetStatic().detcivar(precision,level=0.95)

import pprint
pprint.pprint(ci)


# real
# N(0,1) 0.025 quntile like equel -1.9599639845400545
import numpy as np
lower = 0.3 - np.sqrt(0.025) / np.sqrt(5) * 1.9599639845400545
upper = 0.3 + np.sqrt(0.025) / np.sqrt(5) * 1.9599639845400545

print(lower)
print(upper)


# test done!!!

# 0.3
# 0.3
# 0.025
# 0.025
# {'CI': [0.16141, 0.43859], 'Var': 0.025}
# 0.16140961756503217
# 0.43859038243496784
^{pr2}$

支持

在Python3.x上测试

托多

目标探测器的热图。像

https://github.com/argusswift/YOLOv4-pytorch/blob/master/data/heatmap.jpg?raw=true

参考文献

多亏了开源社区,我们参考了许多开源项目来实现我们的部分代码!

  1. https://github.com/rafaelpadilla/Object-Detection-Metrics
  2. https://github.com/WongKinYiu/PyTorch_YOLOv4
  3. https://github.com/argusswift/YOLOv4-pytorch

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信