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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
Python之读取TXT文件的方法小结
Apr 27 Python
python print 按逗号或空格分隔的方法
May 02 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
通过实例解析Python调用json模块
Dec 11 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
python实现简单猜单词游戏
Dec 24 Python
python中@contextmanager实例用法
Feb 07 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
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python读写配置文件操作示例
2019/07/03 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
业绩考核岗位职责
2014/02/01 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
建筑安全责任书范本
2014/07/24 职场文书
党员转正大会主持词
2015/07/02 职场文书
生日宴会祝酒词
2015/08/10 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL