MMROTATE的混淆矩阵confusion matrix生成

news2024/11/15 18:02:17

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。

mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵,最好还是用mmrotate仓库里的confusion_matrix.py。

但是直接使用会有一些坑,我自己也是调试了一天,终于跑通,在这里记录一下。

首先mmrotate的仓库必须选择1.x的分支,默认拉取的分支是有调用bug的。

github clone -b 1.x https://github.com/open-mmlab/mmrotate.git

并且直接使用pip或者mim(mmrotate推荐的安装工具)来安装的话,mmcv/mmdet的版本是有问题的。经过测试,下图中版本不会存在冲突,可以正常运行。

解决完版本问题,我们在运行confusion_matrix.py依然会报错。

我报的错误是RuntimeError: shape '[5]' is invalid for input of size 0

这个问题我找了好久,最后发现是由于DOTA数据集中的标注文件为空导致的,即annfiles中的txt标注文件里面没有东西,这会导致上述错误。

但是标注为空说明这张图片上什么都没有,代码里的逻辑我推测是寻找跑出来的框在什么位置、是什么类别,当它找不到的时候,代码便发生错误。因为没有框就不能归类为识别为背景background,代码里可能没有考虑这个问题。

比较暴力的解法是在代码做循环的时候把空标签跳过即可。

在代码的85行,calculate_confusion_matrix这个函数中加上if的判断,如果标签为空就跳过。

    for idx, per_img_res in enumerate(results):
        res_bboxes = per_img_res['pred_instances']
        gts = dataset.get_data_info(idx)['instances']
        if len(gts) != 0:
            analyze_per_img_dets(confusion_matrix, gts, res_bboxes, score_thr,
                                tp_iou_thr, nms_iou_thr)
        prog_bar.update()

然后便可以顺利的跑出混淆矩阵的图了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1944308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么? Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口…

centos系统mysql数据库压缩备份与恢复

文章目录 压缩备份一、安装 xtrabackup二、数据库中创建一些数据三、进行压缩备份四、模拟数据丢失,删库五、解压缩六、数据恢复 压缩备份 一、安装 xtrabackup 确保已经安装了 xtrabackup 工具。可以从 Percona 的官方网站 获取并安装适合你系统的版本。 # 添加…

2024在线PHP加密网站源码

源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335

学习日志:JVM垃圾回收

文章目录 前言一、堆空间的基本结构二、内存分配和回收原则对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代主要进行 gc 的区域空间分配担保 三、死亡对象判断方法引用计数法可达性分析算法引用类型总结1.强引用(StrongReference…

Python+Flask+MySQL+日线指数与情感指数预测的股票信息查询系统【附源码,运行简单】

PythonFlaskMySQL日线指数与情感指数预测的股票信息查询系统【附源码,运行简单】 总览 1、《股票信息查询系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 登录2.2 程序主页面2.3 个人中心界面2.4 基金详情界面2.5 其他功能贴图 总览 自己做的项目&#…

【教程】在 VS Code 集成终端中解决 Node.js 环境变量识别问题

背景 外部命令,如 node 在外部的终端中可以识别到,但是在vscode的终端中不能识别到错误:node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称也就是环境变量其实是有 node 的,但是 vscode 的集成终端中就是…

【Django】在vscode中新建Django应用并新增路由

文章目录 打开一个终端输入新建app命令在app下的views.py内写一个视图app路由引入该视图项目路由引入app路由项目(settings.py)引入app(AntappConfig配置类)运行项目 打开一个终端 输入新建app命令 python manage.py startapp antapp在app下的views.py内…

let、var、const 的区别 --js面试题

作用域 ES5中的作用域有:全局作用域、函数作用域,ES6中新增了块级作用域。块作用域由 { } 包括,if 语句和 for 语句里面的 { } 也属于块作用域。 var 1.没有块级作用域的概念,但具有函数全局作用域、函数作用域的概念 {var a …

交易积累-MACD

MACD(Moving Average Convergence Divergence,即移动平均收敛发散指标)是由Gerald Appel于1970年代后期发明的一种趋势跟踪动量指标。MACD显示了两个不同周期(通常是较长和较短周期)的移动平均线之间的差异。这个指标旨…

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘

1,下载 RTL8125B driver 下载页: https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页: https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压: $ tar xj…

Android APP CameraX应用(02)预览流程

说明:camera子系统 系列文章针对Android12.0系统,主要针对 camerax API框架进行解读。 1 CameraX简介 1.1 CameraX 预览流程简要解读 CameraX 是 Android 上的一个 Jetpack 支持库,它提供了一套统一的 API 来处理相机功能,无论 …

Redis-10大数据类型理解与测试

Redis10大数据类型 我要打10个1.redis字符串(String)2.redis列表(List)3.redis哈希表(Hash)4.redis集合(Set)5.redis有序集合(ZSet)6.redis地理空间(GEO)7.redis基数统计(HyperLogLog)8.redis位图(bitmap)9.redis位域(bitfield)10.redis流(Stream) 官网地址Redis 键(key)常用案…

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术,特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…

NSSCTF-2021年SWPU联合新生赛

[SWPUCTF 2021 新生赛]finalrce 这道题目考察tee命令和转义符\ 这题主要是,遇到一种新的符号,"\"—转义符。我理解的作用就是在一些控制字符被过滤的时候,可以用转义符,让控制符失去原本的含义,变为字面量…

学习记录——day16 操作受限的线性表 链式栈

操作受限的线性表 1、在之前的内容,无论是顺序表还是链表,都是详细处理的线性表,既可以在端点处进行操作也 可以在中间位置操作 2、现实生活中,有很多并不需要在中间进行操作的序列,只在端点处进行操…

30岁自学编程从何处入手?

自学编程是一个很好的选择,尤其是在你有志于转行或提升技能的情况下。我收集制作一份plc学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向,包括了编程教学,数据处理,通信处理&#xff0c…

JVM中的栈、堆与方法区:深入理解JVM内存管理

JVM中的栈、堆与方法区:深入理解JVM内存管理 1、栈(Stack)2、堆(Heap)3、方法区(Method Area) 💖The Begin💖点点关注,收藏不迷路💖 在Java程序的…

SpringBoot+ Sharding Sphere 轻松实现数据库字段加解密

一、介绍 在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储&#xf…

Pytorch 6

罗切斯特回归模型 加了激活函数 加了激活函数之后类 class LogisticRegressionModel(torch.nn.Module):def __init__(self):super(LogisticRegressionModel, self).__init__()self.linear torch.nn.Linear(1,1)def forward(self, x):# y_pred F.sigmoid(self.linear(x))y_p…

colab进行keras入门随机数和标签的一点思考,例如shape和Dense等

keras官方中文文档 pip install kerasfrom keras import layers from keras import modelsmodel.add(layers.Dense(32,activationrelu,input_shape(100,)))# 添加多个Dense层 model.add(layers.Dense(10,activationsoftmax)) model.compile(optimizerrmsprop,losscategorical_…