python:目标检测模型预测准确度计算方式(基于IoU)


Posted in Python onJanuary 18, 2020

训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Union)来计算。

希望能提供一些思路,如果觉得有用欢迎赞我表扬我~

IoU的值可以理解为系统预测出来的框与原来图片中标记的框的重合程度。系统预测出来的框是利用目标检测模型对测试数据集进行识别得到的。

计算方法即检测结果DetectionResult与GroundTruth的交集比上它们的并集,如下图:

蓝色的框是:GroundTruth

黄色的框是:DetectionResult

绿色的框是:DetectionResult ⋂GroundTruth

红色的框是:DetectionResult ⋃GroundTruth

python:目标检测模型预测准确度计算方式(基于IoU)

python:目标检测模型预测准确度计算方式(基于IoU)

基本思路是先读取原来图中标记的框信息,对每一张图,把所需要的那一个类别的框拿出来,与测试集上识别出来的框进行比较,计算IoU,选择最大的值作为当前框的IoU值,然后通过设定的阈值(漏检0, 0.3, 0.5, 0.7)来进行比较统计,最后得到每个阈值下的所有的判定为正确检测(IoU值大于阈值)的框的数量,然后与原本的标记框的数量一起计算准确度。

其中计算IoU的时候是重新构建一个背景为0的图,设定框所在的位置为1,分别利用原本标注的框和测试识别的框来构建两个这样的图,两者相加就能够让重叠的部分变成2,于是就可以知道重叠部分的大小(交集),从而计算IoU。

构建代码如下:

#读取txt-标准txt为基准-分类别求阈值-阈值为0. 0.3 0.5 0.7的统计
import glob
import os
import numpy as np
 
#设定的阈值
threshold1=0.3
threshold2=0.5
threshold3=0.7
 
#阈值计数器
counter0=0
counter1=0
counter2=0
counter3=0
 
stdtxt=''#标注txt路径
testtxt=''#测试txt路径
 
txtlist=glob.glob(r'%s\*.txt' %stdtxt)#获取所有txt文件
for path in txtlist:#对每个txt操作
  
  txtname=os.path.basename(path)[:-4]#获取txt文件名
  label=1
  eachtxt=np.loadtxt(path) #读取文件
  for line in eachtxt:
    if line[0]==label:
      #构建背景为0框为1的图
      map1=np.zeros((960,1280))
      map1[line[2]:(line[2]+line[4]),line[1]:(line[1]+line[3])]=1
      
      testfile=np.loadtxt(testtxt + txtname + '.txt')
      c=0
      iou_list=[]#用来存储所有iou的集合
      for tline in testfile:#对测试txt的每行进行操作
        if tline[0]==label:
          c=c+1
          map2=np.zeros((960,1280))
          map2[tline[2]:(tline[2]+tline[4]),tline[1]:(tline[1]+tline[3])]=1
          map3=map1+map2
          a=0
          for i in map3:
            if i==2:
              a=a+1
          iou=a/(line[3]*line[4]+tline[3]*tline[4]-a)#计算iou
          iou_list.append(iou)#添加到集合尾部
          
      threshold=max(iou_list)#阈值取最大的
      #阈值统计
      if threshold>=threshold3:
        counter3=counter3+1
      elif threshold>=threshold2:
        counter2=counter2+1
      elif threshold>=threshold1:
        counter1=counter1+1
      elif threshold<threshold1:#漏检
        counter0=counter0+1

以上这篇python:目标检测模型预测准确度计算方式(基于IoU)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python超简单解决约瑟夫环问题
May 12 Python
python中的编码知识整理汇总
Jan 26 Python
python 爬取微信文章
Jan 30 Python
Python实现二叉搜索树
Feb 03 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Python上下文管理器全实例详解
Nov 12 Python
pandas-resample按时间聚合实例
Dec 27 Python
基于python实现文件加密功能
Jan 06 Python
python 实现学生信息管理系统的示例
Nov 28 Python
python 模拟登录B站的示例代码
Dec 15 Python
python实现大文本文件分割成多个小文件
Apr 20 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 #Python
python实现的Iou与Giou代码
Jan 18 #Python
Python 简单计算要求形状面积的实例
Jan 18 #Python
python实现用类读取文件数据并计算矩形面积
Jan 18 #Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 #Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 #Python
利用setuptools打包python程序的方法步骤
Jan 18 #Python
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
js实现秒表计时器
2019/12/16 Javascript
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
工程管理造价应届生求职信
2013/11/13 职场文书
先进个人事迹材料
2014/01/25 职场文书
函授本科自我鉴定
2014/02/04 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
python迷宫问题深度优先遍历实例
2021/06/20 Python
Nginx跨域问题解析与解决
2022/08/05 Servers