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下的twisted框架入门指引
Apr 15 Python
python脚本替换指定行实现步骤
Jul 11 Python
Python中整数的缓存机制讲解
Feb 16 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
Python如何执行精确的浮点数运算
Jul 31 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
Python 中的Sympy详细使用
Aug 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实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
大型车展策划方案
2014/02/01 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
意向书范本
2014/07/29 职场文书
检讨书格式范文
2015/05/07 职场文书
婚庆主持词大全
2015/06/30 职场文书
感恩老师主题班会
2015/08/12 职场文书
分享python函数常见关键字
2022/04/26 Python