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用来获得图片exif信息的库实例分析
Mar 16 Python
在Python下尝试多线程编程
Apr 28 Python
Python从MP3文件获取id3的方法
Jun 15 Python
python 判断网络连通的实现方法
Apr 22 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
python tornado微信开发入门代码
Aug 24 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
django session完成状态保持的方法
Nov 27 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
利用python绘制数据曲线图的实现
Apr 09 Python
如何利用Python写个坦克大战
Nov 18 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
Webpack实战加载SVG的方法
2017/12/26 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
python动态监控日志内容的示例
2014/02/16 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
django项目搭建与Session使用详解
2018/10/10 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
财务会计专业毕业生自荐信
2013/10/19 职场文书
自考毕业自我鉴定范文
2013/10/27 职场文书
护理专业毕业生推荐信
2013/10/31 职场文书
活动邀请函范文
2014/01/19 职场文书
天猫活动策划方案
2014/08/21 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL