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实现通过shelve修改对象实例
Sep 26 Python
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python Selenium 库的使用技巧
Oct 16 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python基础知识之变量的详解
Apr 14 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的正则处理函数总结分析
2008/06/20 PHP
php header示例代码(推荐)
2010/09/08 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Linux下python制作名片示例
2018/07/20 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Mac安装python3的方法步骤
2019/08/09 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
keras 多任务多loss实例
2020/06/22 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
心理健康教育主题班会
2015/08/13 职场文书
python 爬取华为应用市场评论
2021/05/29 Python