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实现父类调用两种方法的不同
Jan 15 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
python做反被爬保护的方法
Jul 01 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
Python类型转换的魔术方法详解
Dec 23 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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中引用符号(&amp;)的使用详解
2013/11/13 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
three.js实现圆柱体
2018/12/30 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python列表使用实现名字管理系统
2019/01/30 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
类如何去实现接口
2013/12/19 面试题
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
党员转正大会主持词
2015/07/02 职场文书
python如何将mat文件转为png
2022/07/15 Python
Go gorilla/sessions库安装使用
2022/08/14 Golang