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改变日志(logging)存放位置的示例
Mar 27 Python
python正则表达式之作业计算器
Mar 18 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
简单谈谈python中的多进程
Nov 06 Python
python Flask实现restful api service
Dec 04 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
Python中bisect的用法及示例详解
Jul 20 Python
python 爬虫如何实现百度翻译
Nov 16 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 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删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
基于python中theano库的线性回归
2018/08/31 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
python 实现目录复制的三种小结
2019/12/04 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
餐厅考勤管理制度
2014/01/28 职场文书
档案信息化建设方案
2014/05/16 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
学习心理学的体会
2014/11/07 职场文书
2014公司年终工作总结
2014/12/19 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
总账会计岗位职责
2015/04/02 职场文书
在职证明书模板
2015/06/15 职场文书
卫生主题班会
2015/08/14 职场文书