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的collections模块中namedtuple结构使用示例
Jul 07 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
Python Gitlab Api 使用方法
Aug 28 Python
django框架两个使用模板实例
Dec 11 Python
python3 配置logging日志类的操作
Apr 08 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
如何使用flask将模型部署为服务
May 13 Python
python四种出行路线规划的实现
Jun 23 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文件的实现方法
2007/03/19 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
js的表单操作 简单计算器
2011/12/29 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
浅谈angularjs中响应回车事件
2017/04/24 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
Vue.extend构造器的详解
2017/07/17 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
Python实现时间序列可视化的方法
2019/08/06 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
appium+python adb常用命令分享
2020/03/06 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
2014年机关植树节活动方案
2014/02/27 职场文书
财务部岗位职责
2015/02/03 职场文书
董事长岗位职责
2015/02/13 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
vue封装数字翻牌器
2022/04/20 Vue.js