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写的服务监控程序实例
Jan 31 Python
Python日志模块logging简介
Apr 13 Python
八大排序算法的Python实现
Jan 28 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
python 生成图形验证码的方法示例
Nov 11 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python生成器推导式用法简单示例
Oct 08 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
opencv 图像轮廓的实现示例
Jul 08 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
vue实现拖拽效果
2019/12/23 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
JS实现小米轮播图
2020/09/21 Javascript
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python----数据预处理代码实例
2019/03/20 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
网络工程师专家职业发展路线
2014/02/14 职场文书
优秀广告词大全
2014/03/19 职场文书
中国梦团日活动总结
2014/07/07 职场文书
合作协议书范本
2014/10/25 职场文书
2015年采购部工作总结
2015/04/23 职场文书
高三教师工作总结2015
2015/07/21 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android