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中global用法实例分析
Apr 30 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
TensorFlow实现Logistic回归
Sep 07 Python
python中map的基本用法示例
Sep 10 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python实现实时视频流播放代码实例
Jan 11 Python
Tensorflow分批量读取数据教程
Feb 07 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
python编写俄罗斯方块
Mar 13 Python
python属于跨平台语言码
Jun 09 Python
python实现简单聊天功能
Jul 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 文件上传功能实现代码
2009/06/24 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
php实现学生管理系统
2020/03/21 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
vue2 前端搜索实现示例
2018/02/26 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python 图像平移和旋转的实例
2019/01/10 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python @property原理解析和用法实例
2020/02/11 Python
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
大学生入党思想汇报
2014/01/14 职场文书
采购主管岗位职责
2014/02/01 职场文书
一月红领巾广播稿
2014/02/11 职场文书
导游词之山东孔庙
2019/11/04 职场文书