DN-DETR调试记录

先前的DN-DETR模型都是在服务器上运行的,后来在本地运行时出现了一些小问题,这篇博文则主要介绍DN-DETR模型在本地运行时所需要做的配置。

运行环境

首先DN-DETR的运行环境与DINO一致,这里就不再赘述了。
博主使用的本地配置是I7-13700H+4060(8G)

调试过程

在github上下载源码后,在idea中打开,事实上我们应该安装readme的过程来进行调试,但由于博主先前已经都调试过了,这里就默认环境已经都配置好了。
我们直接运行main.py即可,这里需要设定几个参数:
首先是确定我们要运行哪个模型,DN-DETR是在DETR基础上设计的,其融合了前人的研究成果,在DAB-DETRDeformable-DETR等模型基础上进行改进,这里这个modelname则是告诉我们选择哪个。

parser.add_argument('--modelname', '-m', type=str, default="dn_dab_detr", choices=['dn_dab_detr', 'dn_dab_deformable_detr',                                                              'dn_dab_deformable_detr_deformable_encoder_only', 'dn_dab_dino_deformable_detr'])

随后是数据集地址,这里博主使用的是先前自己构造的KITTI数据集

 parser.add_argument('--coco_path', default="D:\graduate\datasets\detection\kitti/",type=str, )

随后是num_classes参数的设定,在对应的model的文件中,如这里博主选择的是DN-DAB-DETR,那么我们就去对应的模型文件中找即可。
这里全部改为对应的类别数+1即可,博主的数据集中有3个类别,再加一个背景类则为4个,如下图所示:

在这里插入图片描述
此时可以运行试一下,发现报页面空间不足的问题,这时只需要修改num_workers值即可,博主改为4。

随后运行再次报错:

targets, scalar, label_noise_scale, box_noise_scale, num_patterns = dn_args
TypeError: cannot unpack non-iterable NoneType object

这个报错似乎是迭代对象为空,事实上是因为main.py文件中的use_dn参数的设定导致的,我们将其设置为True即可

 parser.add_argument('--use_dn', default="True",help="use denoising training.")

再次运行就OK了。
博主的batch-size为2,此时模型的显存占用情况如下:

在这里插入图片描述

此外,DN-DAB-DETR在开始训练时的值是很低的,接近0,所以不要以为是错误,让子弹飞一会。

更新

哈哈哈,没想到中午刚说完,下午就被啪啪打脸,中午在运行了DN-DAB-DETR后,起初认为开始的mAP值很低,等训练一会就就可以接近了,但没想到下午到那一看,已经运行到第9个epoch了,但mAP值却依旧是0,这属实让博主有些无语。
先前也曾经遇到过这种情况,但那是在刚刚开始时,当时是由于数据集制作时将类别弄错导致的,而此时这个数据集已经在DINOMMDetection框架的Faster-RCNN等模型中使用过,结果都符合预期,而在DN-DAB-DETR模型上却碰壁了,由于博主曾经在其他数据集上跑过DN-DAB-DETR,因此可以确信这个模型是没有问题的,数据集也没有问题,好好好,这还有什么好说的呢?家人们谁懂啊就无语。。。。

仔细分析以下模型的日志文件,发现其在训练时的loss是正常下降的,也就是说模型事实上是在不断拟合的,所以模型大概率不会有问题,难道是数据集出差错了?可数据集也已经经过其他模型实验过了呀。

只好切换了DN-DETR的其他模型,使用DN-DAB-Deformable-DETR试一下,第一个epoch的结果,发现是正常的。搞什么呀,难道DN-DAB-DETR的模型就这死样?我印象中可不是这样的呀。

在这里插入图片描述

没法子,既然DN-DAB-Deformable-DETR可以的话,这就说明数据集确实没有问题了,那么大概就是DN-DAB-DETR的问题了

此时batch-size只能设置为1,此时的显存占用情况如下:

在这里插入图片描述

值得一提的是先前博主设置了共享内存来防止显存溢出,此时在任务管理器中可以看到共享GPU内存占用达到了3G,但此时速度并没有受到太大影响,看来先前博主所提到的速度问题似乎是与模型有关。

在这里插入图片描述

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

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

相关文章

ARM串口通信编程实验

完成:从终端输入选项,完成点灯关灯,打开风扇关闭风扇等操作 #include "gpio.h" int main() {char a;//char buf[128];uart4_config();gpio_config();while(1){//接收一个字符数据a getchar();//发送接收的字符putchar(a);switch(…

部署谷歌的Gemini大模型

前言 本文将介绍如何使用Docker、Docker-Compose私有化部署谷歌的Gemini大模型,以及没有服务器的情况下如何使用Vercel来部署。 Demo: 使用新加坡云服务器部署:Gemini Pro Chat (snowice.eu.org) 使用Vercel部署:Gemini Pro Chat (snowice.eu…

1861_什么是H桥

Grey 全部学习内容汇总: GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1861_什么是H桥 H桥电路可以…

drf知识--05

两个视图基类 # APIView:之前一直在用---》drf提供的最顶层的父类---》以后所有视图类,都继承自它 # GenericAPIView:继承自APIView--》封装 继承APIView序列化类Response写接口 # urls.py--总路由 from django.contrib import admin from dj…

redis—String字符串

目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型,而且其他几种数据结构也都是在字符串类似基础.上构建的,例如列表…

《深入理解C++11:C++11新特性解析与应用》笔记三

第三章 通用为本 专用为末 3.1 继承构造函数 派生类如果要使用基类的构造函数,通常要在构造函数中显式声明: 如果基类中有很多版本的构造函数,派生类里想要拥有和基类那样多的构造函数,就必须一一透传各个接口,相当麻…

Json和Xml

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第21章《Json和Xml》 二、Xml的介绍 Xml的含义&#xff1a; 可标记性语言&#xff0c;它将数据以一种特别简单文本格式储存。让所有人和几乎所有的计算机都能理解。 XML文件示例&#xff1a; <?xml version"1.…

漏刻有时数据可视化Echarts组件开发(46)散点图颜色判断

series组件 series: [{name: Top 5,type: scatter,coordinateSystem: bmap,data: convertData(data.sort(function (a, b) {return b.value - a.value;}).slice(0, 6)),symbolSize: 20,encode: {value: 2},showEffectOn: render,rippleEffect: {brushType: stroke},label: {fo…

AG16KDDF256 User Manual

AGM AG16KDDF256 是由 AGM FPGA AG16K 与 DDR-SDRAM 叠封集成的芯片&#xff0c;具有 AG16K FPGA的可编程功能&#xff0c;提供更多可编程 IO&#xff0c;同时内部连接大容量 DDR-SDRAM。  FPGA 外部管脚 FBGA256 封装&#xff0c;管脚说明请见下表 Table-1&#xff1a; Tab…

一篇讲透:箭头函数、普通函数有什么区别

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 什么是箭头函数 箭头函数和普通函数的区别 更简洁的语法 箭头函数…

【JAVA面试题】static的作用是什么?详细介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 解释 静态变量&#xff08;类变量&#xff09;&#xff1a; 静态方法&#xff1a; 静态块&#xff1a; 静态内部类&#xff1a…

人工智能_机器学习074_SVM支持向量机_软间隔与优化目标函数构建_C参数由来_惩罚误差点的惩罚度---人工智能工作笔记0114

然后我们接着上一节再来看一下这里我们说有个 min_faces_per_person = 0 这个可以看到如果我们写上0,就意味着要加载所有的人脸图片,就会花费的时间久对吧 我们可以试试,这里我们 min_faces_per_person = 0 改成0然后 我们等一会加载完了以后,我们用 display(X.shape,faces.sh…