目标检测指标IOU和mAP

news2024/11/17 5:41:20

IOU(交并比)

交并比(loU)函数做的是计算两个边界框交集和并集之比。可以用来判断定位算法的好坏。

一般来说,IoU大于等于0.5,那么结果是可以接受的,就说检测正确。如果预测器和实际边界框完美重叠,loU就是1,因为交集就等于并集。一般约定,0.5是阈值(threshold),用来判断预测的边界框是否正确。loU越高,边界框越精确。 

import cv2
import numpy as np
def CountIOU(RecA, RecB):
    xA = max(RecA[0], RecB[0])
    yA = max(RecA[1], RecB[1])
    xB = min(RecA[2], RecB[2])
    yB = min(RecA[3], RecB[3])
    # 计算交集部分面积
    interArea = max(0, xB - xA + 1) * max(0, yB - yA + 1)
    # 计算预测值和真实值的面积
    RecA_Area = (RecA[2] - RecA[0] + 1) * (RecA[3] - RecA[1] + 1)
    RecB_Area = (RecB[2] - RecB[0] + 1) * (RecB[3] - RecB[1] + 1)
    # 计算IOU
    iou = interArea / float(RecA_Area + RecB_Area - interArea)
    
    return iou

img = np.zeros((512,512,3), np.uint8)   
img.fill(255)

RecA = [50,50,300,300]
RecB = [60,60,320,320]

cv2.rectangle(img, (RecA[0],RecA[1]), (RecA[2],RecA[3]), (0, 255, 0), 5)
cv2.rectangle(img, (RecB[0],RecB[1]), (RecB[2],RecB[3]), (255, 0, 0), 5)

IOU = CountIOU(RecA,RecB)
font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img,"IOU = %.2f"%IOU,(130, 190),font,0.8,(0,0,0),2)

cv2.imshow("image",img)
cv2.waitKey()
cv2.destroyAllWindows()

 mAP相关概念

什么是TP,FP,FN,TN

假设分类目标只有两类,分别为P(正例)和N(负例)

TP:预测为P,且实际也为P

FP:预测为P,实际为N(预测出错的)

FN:预测为N,实际为P(预测出错的)

TN:预测为N,实际也为N

从上面的这些符号可以总结,前面的T\F表示预测的准确性,后面的P/N表示预测的类别。

P(精确率)

precision = TP/(TP+FP)

首先看分母,表示的模型预测为正例的个数。精确率表示模型预测正例中正确的个数。举个例子,模型预测100个样本,98个样本预测对了,所以精确率表示了模型的预测能力,精确率越高,模型的性能就越好。精确率更侧重于衡量模型的正例样本预测是否可靠(不能错杀)。

R(召回率)

Recall = TP/(TP+FN) 

首先看分母,表示的是数据中正例的个数。召回率表示模型在这个数据集上的表现能力。举个例子,数据集中有100个正例样本,模型预测正例样本的个数为98个,还有2个样本模型预测不出来。召回率更侧重于衡量实际的正例样本是否被遗漏(不能漏杀)。

精确率和召回率:分子都是模型预测正例且正确的个数,分母不一样。精确率的分母表示的模型预测正例的个数,召回率的分母表示数据集实际的正例的个数。所以精确率可以表示模型的预测能力,精确率越高,表示模型的性能就越好。召回率表示的是模型在数据集上的实际情况,也可以认为是模型的泛化性能。

还可以这样认为:

 

精确率和召回率的分母只有上面的两个错误类型是不同的。 在实际应用中,两个样本出错的代价应该是不同的,假设FP的代价比较高(预测为苹果,实际上是西瓜,那么这种代价就比较高),所以我们可以提高模型的精确率。

ACC(准确率)

 ACC = (TP+TN)/(TP+FP+TN+FN)

准确率常被用于衡量一个机器学习模型的综合性能。但是在实际中,样本经常是不均衡的。

AP(平均精确度)

AP 表示的是PR曲线下的面积。

mAP(均值平均精度)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5中的FileReader对象

FileReader FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。 方法 readAsArrayBuffer(file):void : 异步按字节读取文件内容,结果用ArrayBuffer对象表示readAsBinaryString(file):void : 异步按字…

重磅!中国电信物联网用户超4亿

近日,中国电信物联网发展规模取得新突破,物联网用户超4亿,物联网用户数超过移动电话用户数,全面迈入“物超人”时代。 “物超人”,即代表“物”的移动物联网终端用户数超出代表“人”的移动电话用户数。工信部公布的数…

591页22万字城市智慧应急指挥中心信息化设计方案

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容: 目 录 第1章 项…

为有状态应用而生,云原生本地存储Carina正式进入CNCF沙箱

12月14日,云原生本地存储开源项目 Carina 通过了全球顶级开源基金会 CNCF 技术监督委员会(TOC)的评定,正式成为 CNCF 沙箱级项目(Sandbox Projects)。 Carina是由博云于2021年10月主导发起的云原生本地存储…

FISCO BCOS的PBFT共识算法流程详解

原文: https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/consensus/pbft.html PBFT模块主要包括PrepareReq、SignReq、CommitReq和ViewChangeReq四种共识消息: PrepareReqPacket: 包含区块的请求包,由leader产生并向所有Repl…

nacos mac

一.nacos的下载 进入官网:home 朝下翻 下载一点几版本的,2点几的已经停止更新了。 将下载好的文件放入一个没有中文名称的目录下 nacos目录: 二.nacos的启动与终止 打开终端,进入bin目录下 我的是: cd /Volumes/…

办公高效、生活便捷!海尔科创生态园启用

理想的工作环境应该是什么样子? 是高效的智慧办公,流畅的商务洽谈,快速的停车及通行…… 仅仅这些就够了吗?高效的数字化体验之外,还有浓浓的人性化关爱,健身设备齐全的员工服务中心、给哺乳妈妈们专设的…

LinkedList和ArrayList对比各有什么优势?

一、LinkedList的概述 1. LinkedList是双向链表实现的List 2. LinkedList是非线程安全的 3. LinkedList元素允许为null,允许重复元素 4. LinkedList是基于链表实现的,因此插入删除效率高,查找效率低(虽然有一个加速动作) 5. LinkedList是…

宜明昂科上市申请“失效”:融资数据“打架”,田文志持股约20%

12月29日,贝多财经从港交所披露易了解到,宜明昂科生物医药技术(上海)股份有限公司(下称“宜明昂科”)在港交所递交的上市申请材料已经“失效”,目前已正常无法查看或下载。 其中,招股…

C++图论 最小生成树和二分图问题总结

目录 一、最小生成树 (一)Prim朴素版 思路 练习题 代码 (二)kruskal算法 练习题 代码 二、二分图 (一)染色法判定二分图 练习题 代码 (二)匈牙利算法 练习题 代码 一、…

CSDN官方开发工具利器猿如意实测

目录前言一.ChatGPT二.效率工具三.开发工具四.教程文档五.一行代码六.总结前言 猿如意 是CSDN官方2022年推出的面向程序员效率工具集合,里面包含非常实用的小工具(如Linux命令查询、语音合成、Json格式化、Host切换、文字转图片、Postman、图片处理等&a…

Linux 快照 (snapshot) 原理与实践(一) 快照基本原理

文章目录0. 背景1. 如何理解快照(snapshot)?2. 快照 (snapshot) 的原理2.1 全量快照1. 克隆 (Clone)2. 镜像分离 (Split Mirror)2.2 增量快照1. 写时拷贝(Copy-On-Write)**写数据****读数据****优缺点**2. 写时重定向 (Redirect-On-Write)**写数据****读数据**优缺点3. Linux …

电脑免费录屏软件有哪些?5款视频录制软件免费版

在日常生活工作与学习中,都会经常遇到需要录制屏幕的情况,比如录制线上会议纪要记录、老师授课内容、游戏画面、线上直播等;在众多网络网友录屏软件分享下,有哪些电脑录屏软件是好用的?今天小编就给大家分享5款觉得还不…

最短编辑距离

最短编辑距离一、问题描述二、思路分析1、状态转移方程(1)状态表示(2)状态转移2、循环及初始化(1)循环设计(2)初始化处理三、代码实现一、问题描述 二、思路分析 这道题是一道DP的问…

oh my 毕设-人体姿态估计-简介应用场景

毕设题目为人体姿态估计,之前主要关注在目标检测上,这方面不太熟悉,于是想做一个系列专栏,从0到1学习姿态估计。 参考于大佬-同济子豪兄 姿态估计本质是关键点检测。 人体姿态的估计常常首先预测出人体各个关键点的位置坐标&am…

160.相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

开启 kerberos 后,HiveServer2 的 webui 没有内容的解决方案

开启 kerberos 后,HiveServer2 的 webui 没有内容。页面如下,可以打开,但是即便已经有会话,也有SQL执行,这里一直这样。 1. 原因分析 1.1 hiveserver2.jsp 以Active Sessions 的内容为例,./service/src…

electron起步基本和electron打包 无脑步骤(修改electron图标)

1.安装 yarn add electron --dev 和 yarn add nodemon --dev 2.在package.json 写main入口和启动脚本 "main":"main.js", "start": "nodemon --exec electron . --watch ./ --ext .js,.html,.css,.vue" "license": "…

oracle在本地创建数据库和导入DMP数据泵

第一步:创建本地数据库 databse Configuration Assistant,创建数据库。 下一步之后完成。 通常在创建数据库时会报错,如图,直接跳过,在net manager的Listener下添加一个新的地址,协议名填写警告日志中Prot…

关于mmpose

为什么是关于mmpose呢,因为我菜。本文仅做记录使用,也就是说,写的不一定对,欢迎大佬批评指正。 我只想知道这种关键点检测是如何标注的,数据集是如何搞的,全网居然都找不到,付费资源我不配&…