【目标检测出】评价指标

简介: 【目标检测出】评价指标

常见的评价指标有交并比(iou及改进),准确率,精度,召回率,FPR,F1-Score,PR曲线-AP值,ROC曲线-AUC值,mAP值和FPS

✨ 1 交并比

假设有两个矩形,分别为A和B:

f5eb68b1aff94ea9b60711bde2fb92a3.png

则交并比公式:

884d4ff48e9a4e9994deb771ee53a71c.png

即A交B比A并B。

代码实现:

主函数

  eps = torch.finfo(torch.float32).eps
    bboxes1_area = (bboxes1[..., 2] - bboxes1[..., 0]).clamp_(min=0) * (bboxes1[..., 3] - bboxes1[..., 1]).clamp_(min=0)
    bboxes2_area = (bboxes2[..., 2] - bboxes2[..., 0]).clamp_(min=0) * (bboxes2[..., 3] - bboxes2[..., 1]).clamp_(min=0)
    w_intersect = (torch.min(bboxes1[..., 2], bboxes2[..., 2]) - torch.max(bboxes1[..., 0], bboxes2[..., 0])).clamp_(min=0)
    h_intersect = (torch.min(bboxes1[..., 3], bboxes2[..., 3]) - torch.max(bboxes1[..., 1], bboxes2[..., 1])).clamp_(min=0)
    area_intersect = w_intersect * h_intersect
    area_union = bboxes2_area + bboxes1_area - area_intersect
    ious = area_intersect / area_union.clamp(min=eps)

655d2b75586b49ef9db46a2a1ff34084.png

bboxes1_area和bboxes2_area即bboxes1和bboxes2即面积。

w_intersect和h_intersect是bboxes1和bboxes2相交部分的宽和高,比如(torch.min(bboxes1[…, 2], bboxes2[…,2])即在x1_max和x2_max中找到较小的,即相交部分的右下角x轴坐标,其余同理。

area_intersect即计算相交面积。

area_union计算A并B的面积。 clamp函数规定下限。

👻 1.2 giou

原论文地址

ba00a7f86ae94973858333e13f30e2aa.png

✨ 2 precision(精度)和recall(召回率)

在论文里面经常会遇到precision(精度)和recall(召回率),下面进行介绍。

首先,我们要了解一下混淆矩阵,其中包含四个元素:

TP(True Positive):真正例,即实际为正样本且被预测为正样本的数量。

FN(FalseNegative):假反例,即实际为正样本但被预测为负样本的数量。

TN(TrueNegative):真反例,即实际为负样本且被预测为负样本的数量。

FP(FalsePositive):假正例,即实际为负样本但被预测为正样本的数量。

c1c7ac9a22a143978e2b573d6e110a89.png

利用该混淆矩阵,可以==计算precision和recall==。 ****

precision表示模型预测为正类的样本中,实际上真正属于正类的比例,公式为:

69b8fd6dc6e64eef8db7221c5370c30b.png

精确率越高:说明模型在预测正类样本时的准确性越高,即预测为正类的样本中,真正属于正类的比例越大。这意味着模型在区分正类和负类方面表现得更好,误报率较低。但精确率忽略了实际为正类的样本中,被模型漏报(即预测为负类)的情况。

recall表示实际为正类的样本中,被模型正确预测为正类的比例,公式为:

4197885c61024ccf91fef31b1cd2c164.png

召回率越高:说明模型在识别正类样本方面的效果越好,即实际为正类的样本中,被正确预测为正类的比例越大。这意味着模型在捕捉正类样本方面表现得更好,漏报率较低。但召回率忽略了模型预测为正类的样本中,实际上属于负类(即误报)的情况。

精确度和召回率之间的关系:

当精确度升高,即模型更加严格地预测正类时,可能将更多的正样本预测为负样本,那么实际为正样本中预测正确的就变少了,则召回率降低。

反之同理。

(这也体现了,两个各自忽略的即对方关注的)

✨ 3 AP和mAP

25a66843a8d542eb93b80b68ab700ff3.png

从第二节我们知道了精准度和召回率之间的关系,如上图PR曲线所示。

两个部分都有关注与忽略的地方,那么如何将两者结合平衡呢?

PR曲线下方的面积即是一种方案,称为AP值

mAP就是对所有类AP值取平均值。

👻 3.1 具体计算

  1. 剔除类别置信度低的预测框(每个包含目标预测框都有一个包含目标类别的分数预测),一般为0.5。
  2. 计算预测框与GT的IOU。IOU>0.5设置为TP,IOU<=0.5设置为FP,没有检测到的GT的数量设置为FN
  3. 计算recall和precision
  4. 计算PR曲线面积,下面是一个计算示例(某点函数值代替某段函数值)
  5. ccc7320db72046beb86be899beda26da.png

相关文章
|
7月前
|
缓存 监控 Ubuntu
Ubuntu操作系统下清除系统缓存与无用文件的方法
通过上述步骤断行综合性地对Ubuntu进行优化与整洁可显著改善其性能表现及响应速度。然而,请注意在执行某些操作前确保充分了解其潜在影响;例如,在移除旧内核之前确认新内核稳定运行无问题;而对于关键配置更改则需确保备份好相关设置以便恢复原状态。
1619 0
|
前端开发 PHP 数据格式
​超简单实现联系表单Contact Form自动发送邮件
构建网站联系表单以自动发送邮件的简单方法包括创建HTML表单和PHP处理脚本。HTML表单收集姓名、邮箱、主题和消息,提交至`send_mail.php`。PHP脚本接收数据,使用`mail()`函数发送邮件到指定地址。要确保服务器支持PHP邮件功能,并可能需调整SMTP设置以避免垃圾邮件过滤。可优化点包括使用SMTP服务器、增加表单验证和采用HTML邮件模板。
|
机器学习/深度学习 并行计算 异构计算
WINDOWS安装eiseg遇到的问题和解决方法
通过本文的详细步骤和问题解决方法,希望能帮助你顺利在 Windows 系统上安装和运行 EISeg。
765 2
|
Web App开发 Rust 前端开发
常见浏览器内核
常见浏览器内核包括:Blink(用于 Chrome、Edge 等),注重性能与现代网页支持;WebKit(用于 Safari 和早期 Chrome),强调高效能;Gecko(用于 Firefox),支持强大扩展;Trident(用于 IE,已被 Edge 替代);EdgeHTML(用于早期 Edge,现已转为 Blink);Servo(实验性,基于 Rust)。这些内核负责渲染网页内容、处理 CSS 和 JavaScript,直接影响用户体验,并随技术发展持续演进。
|
Linux Shell API
深入探索 `dbus-run-session`:Linux下的D-Bus会话管理工具
`dbus-run-session`是Linux下管理D-Bus会话的工具,它确保桌面环境和应用间的通信。当登录图形桌面时,D-Bus会话自动创建,支持应用和服务间的消息传递。通常不需要直接使用,但在特定情况下,可以通过`dbus-run-session bash`启动shell会话运行D-Bus相关命令。注意避免重复启动会话,勿以root运行,确保环境变量正确,可使用`--verbose`选项进行调试。了解其工作原理有助于解决D-Bus相关问题。
|
Kubernetes 容器
Kubernetes(K8S) 拉取镜像 ImagePullBackOff pull access denied
Kubernetes(K8S) 拉取镜像 ImagePullBackOff pull access denied
696 0
|
存储 算法 异构计算
GGML 非官方中文文档(5)
GGML 非官方中文文档
459 1
|
存储 缓存 C++
GGML 非官方中文文档(1)
GGML 非官方中文文档
712 1
|
Ubuntu Linux Shell
Linux - 记录问题:Ubuntu查看文件夹大小
Linux - 记录问题:Ubuntu查看文件夹大小
1768 0
|
存储 算法 图计算
GGML 非官方中文文档(4)
GGML 非官方中文文档
661 0

热门文章

最新文章