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中的greenlet包实现并发编程的入门教程
Apr 16 Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
Python骚操作之动态定义函数
Mar 26 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
利用Python多线程实现图片下载器
Mar 25 Python
如何基于python实现单目三维重建详解
Jun 25 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
python 判断自定义对象类型
2009/03/21 Python
python构建深度神经网络(续)
2018/03/10 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
人力资源管理专业自荐书范文
2014/02/10 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
MySQL慢查询的坑
2021/04/28 MySQL