【RT-DETR有效改进】带你分析如何确定改进的基础模型,解决模型无法收敛精度很差的问题(ResNet官方一比一复现)

一、本文介绍

Hello,各位读者,距离第一天发RT-DETR的博客已经过去了接近两个月,这段时间里我深入的研究了一下RT-DETR在ultralytics仓库的使用,旨在为大家解决为什么用v8的仓库训练的时候模型不收敛,精度差的离谱的问题,我也是成功的找到了解决方案,对于ultralytics仓库进行多处改进从而让其还原RT-DETR官方的实验环境从而达到一比一的效果。

其次我也将RT-DER的官方版本ResNet18、ResNet34、ResNet50、ResNet101集成在ultralytics仓库(不同于现在仓库里更新的R50和R101我是根据RT-DETR官方的代码一比一移植过来的参数量基本保持一致,网上发的都是ResNet的本身,但这和RT-DETR官方实验的版本其实是有很大的出入的)所以从今天开始正式开始更新RT-DETR的改进了,下面来教大家选取自己的baseline也就是你改进的基础模型,后面会说到如何解决模型为何不收敛的问题,以及我用我复现模型训练的结果。 

本专栏旨在打造全网最好的RT-DETR专栏!

目录

一、本文介绍

二、RT-DETR发表论文的方向 

三、Baseline的选择 

四、模型无法收敛的问题 

五、专栏链接


二、RT-DETR发表论文的方向 

开始之前先来给大家聊一下RT-DETR发论文的方向,我们发论文的两个大方向一个就是轻量化另一个就是提高mAP精度,针对于RT-DETR这个模型我认为其无论选取这两个方向的任意一个都是非常好的选择,但总有一个更容易,我下面分别来讲一下。

选择轻量化的理由(十分推荐):RT-DETR的模型都是非常大的,其最小的版本RT-DETR-R18都有2kw的参数量GFLOPs达到了60,这是一个非常大的参数了,我们如果想在其基础上做一个轻量化的操作,我们拿市面上的任意一个主干基本上都可以减少其参数量,所以我认为如果大家想在RT-DETR领域发一遍论文轻量化是一个非常好的选择,尤其是在一些实时检测领域上。

提高mAP精度的理由(推荐):从RT-DETR的实验对比上来看,其精度其实是不如YOLO系列的,所以我们就有很多的借鉴模块来使用,来提高mAP,不过提高mAP肯定不如轻量化的方向毕竟其打的旗号就是在实时检测领域超越YOLO的存在。

其它方向就不介绍了,我觉得都不如这两个好发。


三、Baseline的选择 

下面来给大家说一下如何选取你的baseline

第一考虑的肯定是大家的算力,RT-DETR的模型非常大,我移植到ultralytics仓库的R18版本RT-DETR参数量基本和官方一致为2kw但GFLOps稍微有点差别为58.6和官方差了1.4(为YOLO版本自带的误差)。

( 此版本大家在网上任意一个地方都找不到为我本人按照官方的内容一比一移植过来的)

上面说到了算力,我自己的电脑是3070-8G的显卡跑R18只能跑到4batch_size,如果更高的版本我的batch_size就需要往下降低。

然后先讲解我们选择Baseline的两个大的方向一个是ResNet版本,另一个是PPHGNetV2版本的,这里我建议大家选择的是ResNet版本,我来说一下理由

ResNet好像是2015年提出的,其效果早已被如今的各种网络模型超越,所以其改进空间非常大,无论是从轻量化的角度还是提高精度的角度出发都更容易一些。

PP-HGNetV2是百度今年新提出来的网络模型,其无论是精度还是成熟度上都已经很完美了,如果大家选择这个可能就会陷入像YOLOv8一样提高精度和轻量化都不好做,所以我推荐的是ResNet系列的版本(个人见解)。

我们再来说一下ResNet的多个版本。

其中首先pass掉的就是R101了模型太大改进成本太高了。

其次是R18、R34、R50

一开始我想推荐R50了但是觉得其不如R18首先R18作为最基础版本的模型,其精度远不如哪几个,然后其参数量也是一个绝大多数人可以接受的范围内2kw和计算量60GFLOPs,所以我个人推荐的就是最基础的R18版本,其可以被绝大多数人接受的同时也更能容易改进,同时现在ultralytics仓库里面还没有集成ResNet18(这也是因素之一),如果大家和我学习改进的话就相当于快人一步了,下面给大家看一下完整网络结构的打印。


四、模型无法收敛的问题 

这里再给大家说一下大家训练模型不拟合的问题是因为有些参数没有按照官方版本的进行设置,因为 ultralytics首先是要为了YOLO系列服务的,而RT-DETR对于参数是非常的敏感的其有一些代码设置的也和YOLO系列相不符合,所以现在的ultralytics仓库的RT-DETR只能说有了RT-DETR的外壳内部确是不符的,所以这些问题导致大家训练模型不能够拟合,无论怎么换数据集效果都一样。

所以想要学习RT-DETR的您可以关注本专栏(我会教大家如何调参数,然后修改模型中的代码适配RT-DETR还原RT-DETR的环境),相信本专栏一定会让您有所收获,本专栏本次旨在打造全网最好的RT-DETR专栏,订阅专栏之后您也可以像我的YOLOv8用户一样获得官方的交流群和完整的项目文件(包含我所有的改进机制,均可完美运行),以及我的视频讲解教大家一些发论文过程种我本人的各种经验。

下面是按照我修改完以后RT-DETR模型的拟合图片,这还仅仅是R18的版本,所以想要和我学习RT-DETR发论文的读者可以关注一下本专栏的动态。

以下为训练完成的结果图。


下面介绍一下我以后的博客必备的内容就是实验对比图,该图会给大家放在最前侧展示改进机制的效果,可能是轻量化的也可能是提点的。


五、本文总结

从今天开始正式开始更新RT-DETR剑指论文专栏,本专栏的内容会迅速铺开,在短期呢大量更新,价格也会乘阶梯性上涨,所以想要和我一起学习RT-DETR改进,可以在前期直接关注,本文专栏旨在打造全网最好的RT-DETR专栏为想要发论文的家进行服务。

官方链接:RT-DETR剑指论文专栏

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

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

相关文章

Python - Bert-VITS2 语音推理服务部署

目录 一.引言 二.服务搭建 1.服务配置 2.服务代码 3.服务踩坑 三.服务使用 1.服务启动 2.服务调用 3.服务结果 四.总结 一.引言 上一篇文章我们介绍了如果使用 conda 搭建 Bert-VITS2 最新版本的环境并训练自定义语音,通过 1000 个 epoch 的训练&#xf…

【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》专…

一包多语言——使用FontForge合并字体

大家好,我是阿赵。   比较多游戏做了一个游戏包里面包含了多种语言,可以游戏内切换。这里分享一个合并多种语言字体的方法。 一、遇到的问题 假设我们游戏需要同时显示简体中文、泰文、老挝文三种语言。 解决方案有多种: 1、准备多种字体 …

Open CV 图像处理基础:(五)Java 使用 Open CV 的绘图函数

Java 使用 Open CV 的绘图函数 使用 Open CV 在 Java 中对图片使用绘图函数,分别绘制矩形、斜线、圆形、椭圆形以及添加文本 Java 使用 Open CV 的绘图函数 Java 使用 Open CV 的绘图函数函数绘制矩形绘制线绘制圆形绘制椭圆添加文本 代码示例Open CV 专栏导航 函…

Object.keys()

目录 1、Object.keys() 是什么? 2、Object.keys(obj) 用法: 2.1 如果对象是一个对象,会返回对象的属性名组成的数组; 2.2 如果对象是一个数组,则返回索引组成的数组: 2.3 如果是字符串,返回…

leetcode:滑动窗口

目录 1.定长滑动窗口 1.1 几乎唯一子数组的最大和(使用map来计数) 1.2 长度为k子数组中的最大和 2.不定长滑动窗口 2.1 最多k个重复元素的最长子数组 2.2 绝对差不超过限制的最长连续子数组(multiset) 2.3 将x减到0的最小操作数(正难则反 逆向思维) 2.4 统计…

Leetcode2982. 找出出现至少三次的最长特殊子字符串 II

Every day a Leetcode 题目来源:2982. 找出出现至少三次的最长特殊子字符串 II 解法1:字符串分割 分类讨论 按照相同字母分组,每组统计相同字母连续出现的长度。例如 aaaabbbabb 把 a 分成一组,组内有长度 4 和长度 1&#x…

Mac上使用phpstudy+vscode配置PHP开发环境

使用的工具: 1、系统版本 2、vs code code 3、phpstudy_pro 一、下载vs code code以及必要的插件 1、vs code下载 点击vs code官网下载 选择对应的版本,一般电脑会自动识别对应的版本,点击下载,然后傻瓜式安装! 2…

Go模板后端渲染时vue单页面冲突处理

go后端模版语法是通过 {{}} ,vue也是通过双花括号来渲染的,如果使用go渲染vue的html页面的时候就会报错,因为分别不出来哪个是vue的,哪个是go的,既可以修改go的模板语法 template.New("output").Delims(&qu…

谷歌浏览器安装不在默认安装位置Selenium无法打开解决方法

Selenium之cannot find Chrome binary错误-CSDN博客 上面是我找的解决方案的链接 通过option.setBinary()的方法来指定谷歌浏览器的实际运行文件路径; 下面是结合我这边具体情况下写的代码 option.setBinary()中的路径是谷歌浏览器运行文件的路径;Sy…

python进行简单的app自动化测试(pywinauto)+ 截屏微信二维码

一、开始需要了解准备 1、安装 pip install pywinauto2、选择(后面会通过工具进行判断用哪个) 3、自动化控制进程的范围 示例 Application单进程 Desktop多进程 4、程序辅助检测工具 3中的下载连接 链接 点击放大镜拖到对应位置即可 二、简单的开始…

【C语言】ipoib驱动 - ipoib_cm_post_receive_srq_rss函数

一、ipoib_cm_post_receive_srq_rss函数定义 static int ipoib_cm_post_receive_srq_rss(struct net_device *dev,int index, int id) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_recv_ring *recv_ring priv->recv_ring index;struct ib_sge *sge;stru…

Redis(四)事务

文章目录 事务Redis事务 vs 数据库事务常用命令总结 事务 一个队列中、一次性、顺序性、排他性执行一系列命令 官网https://redis.io/docs/interact/transactions/ Redis事务 vs 数据库事务 概述详述1、单独的隔离操作Redis的事务仅仅是保证事务里的操作会被连续独占的执行&a…

原生微信小程序-两次设置支付密码校验,密码设置二次确认

效果 具体代码 1、wxml <view style"{{themeColor}}"><view classcontainer><view class"password_content"><view wx:if{{type 1}}><view class"title"><view class"main_title">设置支付密码…

WXUI 基于uni-app x开发的高性能混合UI库

uni-app x 是什么&#xff1f; uni-app x&#xff0c;是下一代 uni-app&#xff0c;是一个跨平台应用开发引擎。 uni-app x 没有使用js和webview&#xff0c;它基于 uts 语言。在App端&#xff0c;uts在iOS编译为swift、在Android编译为kotlin&#xff0c;完全达到了原生应用…

紫光展锐5G扬帆出海 | Blade系列勇当拉美5G先锋

5G对拉丁美洲&#xff08;简称“拉美”&#xff09;绝大多数消费者来说还是一个新鲜技术。GSMA报告显示&#xff0c;过去五年&#xff0c;拉美运营商在移动网络方面的资本开支大部分用于部署4G网络。但在5G网络方面拉美也在积极大力投入中&#xff0c;紧跟全球5G发展大潮&#…

Google I/O大会:Android 13

3个体验升级的方向 以智能手机为场景核心、 扩大智能终端的应用边界以及实现多设备间更好地协同。具体到系统体验层&#xff0c;安卓13将支持图标颜色随主题更换、为不同应用设定使用的语言、新的媒体中心界面等等&#xff0c;同时谷歌也推出了自家的钱包应用&#xff08;Goog…

Golang+Qt合作 : go-echarts + QWebEngineView

简介 无聊使用了一下go-echarts, 使用Qt在C/S模式下嵌入使用B/S框架的简单例子 材料 Qt 5.15.0 MSVC-2019-64bit Golang1.14.3 go-echarts 代码 Golang (Server端) 浏览器 localhost:8081 可以进行访问, 示例来自于 https://go-echarts.github.io/go-echarts/docs/kline …

mysql的gtid主从复制,从库误操作更新操作,

一&#xff1a;查看mysql的从库&#xff0c;发现sql进程状态 “no”.提示执行传输过来的binlog日志&#xff0c;执行失败&#xff0c; 二&#xff1a;查看主库对应的二进制日志的gtid地方。插入一些数据。 # mysqlbinlog --base64-outputdecode-rows -v mysql-bin.000001 |gre…

2019年认证杯SPSSPRO杯数学建模C题(第一阶段)保险业的数字化变革全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于 CART 决策树和 SVR 的客户续保概率预测 C题 保险业的数字化变革 原题再现&#xff1a; 车险&#xff0c;即机动车辆保险。保险自身是一种分散风险、消化损失的经济补偿制度&#xff0c;车险即为分散机动车辆在行驶过程中可能发作的未知风…