MMdetection3.0 训练DETR问题分析

MMdetection3.0 训练DETR问题分析

针对在MMdetection3.0框架下训练DETR模型,验证集AP值一直为0.000的原因作出如下分析并得出结论。

条件:
1、NWPU-VHR-10数据集:共650张,训练:验证=611:39;
2、MMdetection3.0框架实验分析;
3、DETR原论文提供源代码实验分析;
4、已在代码中完成了数据类别定义(num_classes)等相关配置的修改。

分析:
1、在MMdetection3.0框架下,只是加载backbone的预训练权重,val上AP始终为0.0000.如下图所示:=》loss收敛较慢,val始终为0.0000.
在这里插入图片描述
在这里插入图片描述
2、在MMdetection3.0框架下,直接加载detr的完整预训练权重。如下图所示:=》存在警告(size mismatch for bbox_head.fc_cls.weight: copying a param with shape torch.Size([81, 256]) from checkpoint, the shape in current model is torch.Size([11, 256]).
size mismatch for bbox_head.fc_cls.bias: copying a param with shape torch.Size([81]) from checkpoint, the shape in current model is torch.Size([11]).
),但训练测试指标还算正常。

=》警告原因:自定义数据集的类别是10+1,而MMdetection3.0提供的是coco数据集与训练权重80+1.
=》因此,需要修改预训练模型的全连接层输出(见下述第4点)。

在这里插入图片描述
在这里插入图片描述3、在MMdetection3.0框架下,直接加载修改后的detr的完整预训练权重训练测试结果见下图所示:=》警告消除,一切正常,并且修改证据权重类别后loss下降变快,val指标更好(不能说更好,只能说更正常)
在这里插入图片描述
在这里插入图片描述4、修改模型权重参数脚本
=》代码中的METAINFO不想修改 不修改也行。
=》主要是pretrained_weights[‘state_dict’][‘bbox_head.fc_cls.weight’].resize_(11, 256)
pretrained_weights[‘state_dict’][‘bbox_head.fc_cls.bias’].resize_(11)

import torch
METAINFO = dict(CLASSES=('airplane','ship','storage tank','baseball diamond','tennis court','basketball court','ground track field','harbor','bridge','vehicle',),PALETTE=[(120,120,120,),(180,120,120,),(6,230,230,),(80,50,50,),(4,200,3,),(120,120,80,),(140,140,140,),(204,5,255,),(230,230,230,),(4,250,7,),])pretrained_weights = torch.load('/home/admin1/pywork/data/weigh/resnet50-0676ba61.pth')
# 11 是指 数据类别 + 1
pretrained_weights['state_dict']['bbox_head.fc_cls.weight'].resize_(11, 256)
pretrained_weights['state_dict']['bbox_head.fc_cls.bias'].resize_(11)
pretrained_weights['meta']['experiment_name'] = 'detr_r50_8xb2-150e_coco_11'
pretrained_weights['meta']['dataset_meta'] = METAINFO
torch.save(pretrained_weights, "detr_r50_8xb2-150e_coco_%d.pth" % num_classes)

5、DETR原论文提供的源代码训练情况跟MMdetection3.0框架下的情况类似,都必须加载预训练模型,否则就是一直0.000000000000000.

总结分析:
1、NWPU-VHR-10数据量太小导致的问题(90%),等待进一步测试。
2、Transformer模型提出来的时候就已经说明很吃数据,所以没有足够的数据直接使用transformer训练往往效果不好,所以数据量不足的情况下,还是加载预训练权重吧。
3、backbone的权重在模型的比例其实很小,主要还是后面的编码、解码器,所以只加载backbone的权重也没什么用。

总之,数据、数据、数据要足够哇

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

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

相关文章

K8S学习指南(11)-k8s中配置pod的服务质量(QOS)

文章目录 前言什么是服务质量(QoS)?如何配置服务质量?CPU资源配置示例 内存资源配置示例 服务质量等级的判断服务质量的最佳实践结论 前言 Kubernetes(简称K8s)是一种开源的容器编排平台,用于简…

Linux vmstat命令:监控系统资源

vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。此命令的基本格式有如下 2 种: [rootlocalhost ~]# vmstat [-a…

FFmpeg-基础组件-AVFrame

本章主要介绍FFmpeg基础组件AVFrame. 文章目录 1.结构体成员2.成员函数AVFrame Host内存的获取 av_frame_get_bufferAVFrame device内存获取av_hwframe_get_buffer() 1.结构体成员 我们把所有的代码先粘贴上来,在后边一个一个解释。 typede…

SpringBoot中实现跨域的几种常用方式

在SpringBoot中实现跨域请求可以通过以下几种方式: 1. 使用CrossOrigin注解,可以直接在Controller层的方法上使用,用来指定允许跨域请求的来源、方法和头信息。例如: CrossOrigin(origins "http://localhost:8080") …

[MySQL]SQL优化之sql语句优化

🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 回顾: 📕索引分类: 📕索引失效: 📕设计原则: 📕SQL性能分析 二、SQL优化 语句优化 &#x1f4d…

越南语翻译,人工翻译哪个值得信赖?

近年来,随着中越两国的交流日益频繁,为了促进双方的交流与理解,市场上对越南语翻译的需求也日益增加。那么,如何做好越南语翻译,人工翻译哪家公司值得信赖呢? 据了解,中文翻译越南语是一项颇具挑…

科技与艺术相结合,虚拟人裸眼3D动画亮相城市商圈

随着元宇宙概念的火爆,虚拟制作技术的快速发展,虚拟人可以将虚拟世界与现实世界相结合,为用户带来沉浸式体验。如虚拟人壬子希以裸眼3D动画的形式亮相城市商圈,助力文旅以科技与艺术相结合的形式,展现城市文化与科技成…

从运维角度去了解redis

一、介绍 1.简介 redis是一个开源的、使用C语言编写的、可基于内存也可持久化的Key-Value数据库,采用单线程基于epoll模型实现IO多路复用非阻塞的处理模式。 2.特点 1.丰富的数据结构 -----Redis支持五种数据类型:string(字符串&#xf…

【数据结构(九)】顺序存储二叉树(2)

文章目录 1. 相关概念2. 顺序存储二叉树的遍历 1. 相关概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。 转换原则:     1.上图的二叉树的结点&#xff…

项目包管理工具_poetry

1 介绍 Poetry 是一个用于 Python 项目的包管理工具,它相对于传统的 pip 和 requirements.txt 的优势在于:使得项目依赖管理更加方便,且结合了更多新工具,还提供命令行进一步配置。 当在同一系统或在同一个 docker 中&#xff0…

Java对List<Map>进行合并去重

对List进行合并去重,首先创建一个新的 List 用于存储合并去重后的结果,遍历原始的 List,将每个 Map 对象中的键值对放入一个 Set 中进行去重,最后将去重后的键值对重新组装成一个新的 Map 对象,并添加到新的 List 中。…

每日一练【长度最小的子数组】

一、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 二、题目解析 经…

DeepDrive双转子径向磁通电机

DeepDrive公司开发的是一种高效、高性能、低成本的双转子径向磁通电机系统(含控制器)。该系统具有较高的成本效益和资源效率,并拥有更高的能效,能显著提升电动车续航能力,同时亦能有效控制生产成本,减少自然…

3_流量预测综述阅读_Cellular traffic prediction with machine learning: A survey

为了方便学习英语书写,总结的一些话用英语书写 ♥目录♥ 0、文献来源and摘要1、introduction2、prediction problems and datasets2.1 prediction problems2.2 dataset(1)Telecom Italia 意大利电信 2015(2)City Cell…

C语言习题集(028)

//写一个函数&#xff0c;输入一行字符&#xff0c;将此字符串中最长的 //单词输出。 /* */ //解答&#xff1a; #include<stdio.h> void choose(char s[100]); int main() { char str[100]; printf("请输入一段字符&#xff1a;"); gets(str); printf(&q…

产品经理常有的几大误区,90%都会犯!

产品管理对项目来说非常重要&#xff0c;但在日常工作中&#xff0c;我们往往容易进入思维误区&#xff0c;如果我们没有及时发现错误并进行纠正&#xff0c;这会对产品需求工作以及项目进度产生较大影响。 因此我们需要重视产品工作中常见的思维误区并及时避免&#xff0c;需…

AI写文案工具大全介绍,免费的AI写文案工具

随着人工智能技术的不断发展&#xff0c;AI写文案成为一个备受关注的话题。本文将专注于AI写文案工具&#xff0c;深入探讨各类好用的AI写文案软件。 AI写文案工具介绍&#xff1a; OpenAIs GPT系列&#xff1a; GPT-3是由OpenAI开发的语言模型&#xff0c;能够生成高质量的文…

uniapp点击按钮,防止按钮多次点击多次触发事件【防抖操作】

图片、 一、在根目录下新建common文件并创建common.js文件&#xff0c;输入下面代码 // 防止处理多次点击function noMultipleClicks(methods, info) {// methods是需要点击后需要执行的函数&#xff0c; info是点击需要传的参数let that this;if (that.noClick) {// 第一次点…

C语言leetcode集训二:字符串(1):字符串遍历

今天集训的内容是字符串中的字符串遍历题&#xff0c;仍然是简单题&#xff0c;但也可以掌握一些字符串所必要的知识&#xff0c;加深对字符串的理解&#xff0c;关于字符数组和字符串&#xff0c;字符串的输入输出在这就不再做过多赘述&#xff0c;关于字符串的问题&#xff0…

编写一程序,输入月份,输出该月的英文名。例如,输入“3”,则输出March,要求用指针实现。(两种方法,指针和指针数组)

1.用两个指针&#xff0c;一个代表行&#xff0c;一个代表列 #include<stdio.h> #include<math.h> #include<string.h>int main(){int m;scanf("%d",&m);char *hang,lie 0;char s[12][50] {"January","February","…