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

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第三方库


热门话题
具有泛型的对象的oop Java数组   爪哇丑陋的数字找到第1500名UVA在线评委   SpringJava。lang.IllegalStateException:自动连线批注至少需要一个参数   java为什么我的系统找不到我的属性文件?   java有没有办法让Maven同时构建1.5和1.6字节码JAR?   java通过Sailfin中的header进行操作   使用向量、距离和图形   如果提供的登录信息是错误的,为什么java控件不进入else部分和Toast?   java如何为电子商务安卓应用程序存储产品列表   java保存声音首选项Libgdx Android   java无法在测试单元中调用JpaRepository   java使用批处理更新Cassandra表中的选定列,而不将其他列值设为null   java如何在log4j2中的手动代码配置中向appender添加级别?   从ImageIO返回的java Null。读取(新的ByteArrayInputStream(bs));   java不确定如何防止此Arraylist处于可编辑状态   netbeans中的java更改清单(TrustedLibrary=true属性)   java无法使用RestTemplate和Spring数据REST发布具有关系的新实体