超越YOLO11!DEIM:先进的实时DETR目标检测
DEIM: DETR with Improved Matching for Fast Convergence
arXiv:
https://arxiv.org/abs/2412.04234
Project webpage:
https://www.shihuahuang.cn/DEIM/
GitHub:https://github.com/ShihuaHuang95/DEIM
1 背景:DETR目标检测框架
目标检测(Object Detection) 是计算机视觉中的核心任务,用于识别图像或视频中的所有目标,并为每个目标提供其类别和位置。简单来说,目标检测结合了分类和定位的能力,既要知道目标是什么,也要知道它们在哪儿。
目前主流的目标检测方法可以分为三类:
-
• 基于区域候选(Region Proposal)的方法:例如 R-CNN 系列(如 Faster R-CNN [1])。
-
• 基于锚点(Pixel Anchor)的方法:例如 YOLO 系列(You Only Look Once [2])。
-
• 基于可学习查询(Learnable Queries)的方法:例如 DETR 系列(Detection with Transformer [3])。
实时目标检测(Real-time Object Detection) 要求模型不仅要精准,还要以极低的延迟(Latency)运行,通常需要达到或超过 30FPS,以满足实时应用需求。YOLO 系列因其优秀的性能和速度平衡,长期是实时检测领域的主流框架。它采用密集锚点(Dense Anchors)和“一对多”(One-to-Many, O2M)匹配策略,即在训练节点单个GT框会有多个匹配框优化bbox regression损失。这样的好处是,在训练过程中,对匹配的容错性比较高。为去除冗余框,YOLO 会使用非极大抑制(Non-Maximum Suppression, NMS)等后处理方法。
Detection with Transformer(DETR [3]) 是近年来备受关注的一种基于 Transformer 架构的目标检测方法。DETR 使用稀疏的可学习查询(Sparse Learnable Queries)和“一对一”(One-to-One, O2O)匹配机制,在训练阶段限制每个目标仅匹配一个正样本(Positive Sample)。这种设计使 DETR 摒弃了复杂的后处理步骤(如 NMS),实现了真正的端到端(End-to-End)目标检测。随着 DETR 框架的不断优化,RT-DETR [4] 已经实现了低延迟目标检测(Low-Latency Object Detection),逐渐在实时检测场景中超越 YOLO,成为实时目标检测的热门选择。关于DETR的代码细节可以参考 Meta的DETR (ECCV 2020) 以及 隐藏在代码的细节
DETR的收敛速度较慢。 对比Faster R-CNN [1] 在COCO上仅用十几个epochs取得的效果,DETR [3] 需要数倍epochs,例如最开始的版本中需要500epochs。导致这个问题的原因有两个:
-
稀疏的监督信息——O2O匹配机制在训练过程中仅分配一个正样本给每个目标,对比O2M匹配机制则是分配数倍的正样本给每个目标,随着正样本减少,这样的监督信息大大地减少;
-
低质量的匹配(IoU很低)——不同于pixel-anchor based的YOLO检测器,在训练过程中会有10k左右的候选框,非常密集,甚至每个像素点都有好几个不同尺寸的候选框,使得最后目标附近有非常高质量的预测框。而DETR中的queries数一般是100或者300,这样少数量的queries在空间上也呈现稀疏性,会使得有一些匹配的框和目标空间交集很小,这样的低质量匹配会影响优化。
2 DEIM加快训练收敛
DEIM 提出了两项改进加速收敛:
-
Dense O2O:通过增加正样本数量,提升监督信号密度。
-
MAL(Matchability-Aware Loss):优化匹配质量的损失函数。
2.1 Dense O2O:提升匹配数量
O2O (如上图 b) 匹配策略每目标仅分配一个正样本,而 O2M(One-to-Many, 如上图a)策略分配多个正样本。为了弥补 O2O 的不足,DEIM 使用简单而高效的 Dense O2O (如上图c) 方法:通过数据增强(如 Mosaic 和 MixUp),将单目标图片拼接成多目标图片,显著增加匹配数量。这样可以避免引入复杂辅助解码器或副作用(如增加重叠框)。
在基于 RT-DETRv2-R50 [4] 模型的 COCO 数据集训练中,我们统计了每个样本在一个 epoch 内使用 O2M(One-to-Many,SimOTA)和 O2O(One-to-One,Hungarian Matching)分配正样本数量的差异。结果如下图所示:
-
正样本数量:在 O2O 策略下,大多数训练数据的正样本数量少于 10。
-
比例对比:相同图片下,O2M 生成的正样本数量是 O2O 的多倍,大部分样本的比例达到 6 倍以上,部分甚至超过 10 倍。
研究重点:如何有效增加正样本数量,从而提供更密集的监督信息,成为优化模型的重要方向。
为了增加正样本数量,一些方法在维持 O2O 框架的基础上进行了改进,典型方法包括:
-
Group DETR [5]:使用多组 queries,每组单独执行 O2O,使每个目标拥有多个正样本。
-
Co-DETR [6]:引入常见的 O2M 匹配算法(如 Faster R-CNN [1] 和 FCOS [2])作为辅助训练。
然而,这些方法存在一些问题:
-
需要多个辅助解码器(Decoder),增加训练资源消耗。
-
需要平衡主解码器与辅助解码器的损失,避免影响主框架性能。
-
辅助训练可能引入高质量重叠框,最终需要使用 NMS 后处理。
DEIM提出了一种 Dense O2O 方法,通过有效增加图片中的目标数量,提升监督信息密度。如下图,简单地将单目标图片复制 4 次并拼接在一起,生成包含 4 个目标的图片,进而获得 4 个正样本。这种方法接近 O2M 策略,但避免了 O2M 的问题,且几乎零成本,仅需简单的数据增强(Mosaic 和 Mixup)即可实现。
2.2 MAL:提升匹配质量
VFL [7](Varifocal Loss)是目前常用的目标检测损失函数,尤其在实时 DETR 框架中被广泛应用。VFL 主要针对 O2M 和基于锚点(Pixel Anchor)的检测器设计,不存在正样本少或匹配质量差的问题。
然而,在 DETR 框架中,VFL 存在两个明显问题:
-
对于 IoU 较低的匹配,损失不会随着置信度增加而增加。
-
IoU=0 时被视为负样本,进一步减少了正样本数量。
为解决这些问题,我们基于 Focal Loss 提出了 MAL(Matching-Aware Loss)。MAL 更加简洁,仅有一个超参数 gamma,同时有效解决了 VFL 的缺陷,提高了 DETR 框架的性能。
通过对比 VFL 和 MAL 在低质量匹配(IoU=0.05)和高质量匹配(IoU=0.95)下的表现,可以发现:
低质量匹配(IoU=0.05):MAL 会随着置信度增加而加大惩罚,而 VFL 惩罚不明显。
高质量匹配(IoU=0.95):MAL 和 VFL 表现相同。
3 实验:DEIM的效果
3.1 整体性能
DEIM 显著加速了基于 DETR 的实时目标检测模型的收敛速度。相比目前的SOTA D-FINE-L [8],仅需一半的训练批次即可达到更高性能。DEIM 优化了 D-FINE 系列模型,在性能与时延的平衡上成为当前最优检测器,超越了最新的 YOLOv11 [9]。
3.2 实时目标检测性能
和现有的各种大小的实时目标检测模型进行了对比(包括X,L,M和S)结果显示DEIM可以加速和提升最好的检测器D-FINE [8],成为了目前最强的实时目标检测器。其中提升最明显的是小目标(APs)和高准确的预测(AP75)。例如在D-FINE-X [8]中,DEIM在整体AP仅提升0.7下,却提升了1.3 AP75和1.5 APs。说明了DEIM能有效地提升预测框的准确度。
3.3 基于ResNet框架对比经典DETR算法
主流 DETR 模型多基于 ResNet [10],DEIM 应用于 RT-DETRv2 [4]也能显著提升结果。结果显示,DEIM 能显著提升 RT-DETRv2 [4] 的性能,整体提升约 1 个点,其中 APs 和 AP75 提升最为明显,均超过 1.2 个点。与 DINO [11] 模型对比,在相同训练周期(36 epochs)下,DEIM-RT-DETRv2-R50 的 AP 提升接近 3 个点。这证明了 DEIM 的算法泛化性,并表现出更快更优的性能。
3.4 CrowdHuman数据集上的泛化实验
在更具挑战性的 CrowdHuman [12] 数据集上,DEIM 相比 D-FINE-L [8] 提升了 1.5 AP,其中 APs 和 AP75 提升最明显,均达 3 个点。实验证明了 DEIM 在不同数据集上的强泛化性。
3.5 Ablation Study: 验证 DEIM 的有效性
从以下三个方面验证了 DEIM 的有效性:
实现 Dense O2O 的方法。Dense O2O 利用 Mosaic 和 MixUp 两种技术有效增加目标数量。实验结果表明,这两种方法显著加速了训练收敛,并且具有互补性。因此,我们的方法结合了 Mosaic 和 MixUp,最终同时使用两者以达到最佳效果。
MAL 中的超参数 gamma。针对 MAL 的 gamma 值进行实验发现,当 gamma = 1.5 时性能最佳。这为 MAL 的使用提供了一个有效的默认配置,同时进一步优化探索可能会带来更好的表现。
Dense O2O 和 MAL 的组合性能。Dense O2O 和 MAL 的组合具有明显的协同效果。实验表明,二者互补,共同使用能够进一步提升检测器的性能,验证了其在目标检测任务中的有效性和实用性。
总结
DEIM 通过 Dense O2O 和 MAL 两项改进,解决了 DETR 在监督信号和匹配质量上的不足,不仅显著加速了收敛速度,还在多个数据集上提升了性能,成为当前最优的实时目标检测方案。
参考文献
-
[1] Faster R-CNN; Ren et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." TPAMI, 2016.
-
[2] YOLO; Redmon el al. "You only look once: Unified, real-time object detection." CVPR. 2016.
-
[3] DETR; Carion et al. "End-to-end object detection with transformers." ECCV, 2020
-
[4] RT_DETR; Zhao et al. "Detrs beat yolos on real-time object detection." CVPR, 2024
-
[5] Group-DETR; Chen, et al. "Group detr: Fast detr training with group-wise one-to-many assignment." ICCV. 2023.
-
[6] Co-DETR; Zong et al. "Detrs with collaborative hybrid assignments training." ICCV. 2023.
-
[7] VFL; Zhang et al. "Varifocalnet: An iou-aware dense object detector." CVPR. 2021.
-
[8] D-FINE; Peng et al. "D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement." arXiv. 2024
-
[9] YoloV11; Khanam and Muhammad. "YOLOv11: An overview of the key architectural enhancements." arXiv. 2024.
-
[10] ResNet; He, et al. "Deep residual learning for image recognition." CVPR, 2016.
-
[11] DINO; Zhang et al. "Dino: Detr with improved denoising anchor boxes for end-to-end object detection." ICLR. 2022.
-
[12] CrowdHuman; Shao, et al. "Crowdhuman: A benchmark for detecting human in a crowd." arXiv. 2018.
相关文章:
超越YOLO11!DEIM:先进的实时DETR目标检测
DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage:https://www.shihuahuang.cn/DEIM/ GitHub:https://github.com/ShihuaHuang95/DEIM 1 背景:DETR目标检测框架 目标检…...
django vue3实现大文件分段续传(断点续传)
前端环境准备及目录结构: npm create vue 并取名为big-file-upload-fontend 通过 npm i 安装以下内容"dependencies": {"axios": "^1.7.9","element-plus": "^2.9.1","js-sha256": "^0.11.0&quo…...
用户注册模块(芒果头条项目进度4)
1 创建⽤户模块⼦应⽤ 1.1 在项⽬包⽬录下 创建apps的python包。 1.2 在apps包下 创建应⽤userapp $ cd 项⽬包⽬录/apps $ python ../../manage.py startapp userapp 1.3 配置导包路径 默认情况下导包路径指向项⽬根⽬录 # 通过下⾯语句可以打印当前导包路径 print(sys.pa…...
Java Map集合、集合的嵌套
一. 概述 1. Map集合称为双列集合,格式:{key1value1, key2value2,.....},一次需要存一对数据作为一个元素。 2. Map集合的每个元素"keyvalue"称为一个键值对/键值对对象/一个Entry对象,Map集合也被称为"键值对集合"。 3.…...
C#中使用系统默认应用程序打开文件
有时您可能希望程序使用默认应用程序打开文件。 例如,您可能希望显示 PDF 文件、网页或互联网上的 URL。 System.Diagnostics.Process类的Start方法启动系统与文件关联的应用程序。 例如,如果文件扩展名为.txt,则系统会在 NotePad、WordPa…...
论文泛读《LPFHE: Low-Complexity Polynomial CNNs for Secure Inference over FHE》
文章目录 1、摘要2、介绍3、文章结构4、总结 1、摘要 Machine learning as a service (MLaaS) 在客户中越来越受欢迎。为了解决 MLaaS 中的隐私问题,引入了 FHE 来保护客户端的数据。 然而,FHE 不能直接评估 卷积神经网络 (CNNs) 中的非算数激活函数。…...
基于Spring Boot的IT技术交流和分享平台的设计与实现源码
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的IT技术交流和分享平台的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于S…...
力扣hot100——二分查找
35. 搜索插入位置 class Solution { public:int searchInsert(vector<int>& a, int x) {if (a[0] > x) return 0;int l 0, r a.size() - 1;while (l < r) {int mid (l r 1) / 2;if (a[mid] < x) l mid;else r mid - 1;}if (a[l] x) return l;else …...
1月第一讲:WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理
1、功能描述和界面 前端(wxPython GUI): 提供文件选择、显示文件列表的界面。支持上传、删除和下载附件。展示上传状态和附件信息(如文件名、大小、上传时间)。后端(REST API 服务):…...
uniapp:跳转第三方地图
1.跳转第三方高德地图 //跳转地图 toMap(item){uni.navigateTo({url: (window.location.href https://uri.amap.com/navigation?to${item.lng},${item.lat},${item.shopName}&modecar&policy1&srchttps://gawl.gazhcs.com/wap/index.html&callnative0)}) },…...
源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats
官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释: When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…...
QML Text详解
1. 概述 Text 是 QML 中用来显示文本的基本组件。它可以用于创建静态的标签、标题、说明文字等,支持多种文本格式、样式、颜色、对齐方式等配置。Text 组件也支持动态文本内容的显示,可以通过绑定数据源来实时更新文本内容。 Text 组件非常灵活&#x…...
详细讲一下Prettier对我们日常开发的作用,以及详细用法
1.什么是 Prettier? // Prettier 是代码格式化工具,它可以自动调整代码格式 // 比如把这样的代码: function foo ( a, b ){ return ab; }// 自动格式化成这样: function foo(a, b) {return a b; } 2.基础配置详解 {// 控制…...
多模态论文笔记——Coca
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型Coca,在DALLE 3中使用其作为captioner基准模型的原因和优势。 文章目录 ALBEF论文模型结构组成训练目标 CoCa论文模型结构CoCa…...
24年无人机行业资讯 | 12.23-12.29
24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司,助力低空经济规范发展2、商务部支持无人机民用国际贸易,强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…...
我们公司只有3个人,一个前端,一个后端
在当今这个数字化时代,各行各业都离不开互联网技术的支撑,而在这股技术浪潮中,小而美的创业公司如同雨后春笋般涌现,它们凭借着灵活高效、创新不断的特点,在市场中占有一席之地。 今天,就让我带你走进这样一…...
golang后台框架总结
gin [golang]gin框架接收websocket通信 - 花酒锄作田 - 博客园 golang Gin实现websocket_golang gin websocket-CSDN博客 ws测试: Websocket测试-Websocket在线测试-Websocket模拟请求工具 vmware下载: VMware16安装包详细安装教程_vmware16下载-CSDN博客...
Elasticsearch分片数量是什么意思?
Elasticsearch中的分片(Shard)数量是一个重要概念,以下为你详细介绍它的含义及相关要点: ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说,Elasticsearch会把一个索引的数据分割成多个较小的部分…...
BerOS 文件系统路径归一化问题及其 Python 实现
题目背景 本文将讨论一道与操作系统路径归一化有关的问题,该问题来自 BerOS 文件系统 的设计。BerOS 是一个新型操作系统,其文件路径系统允许路径中的分隔符 / 重复出现。例如,以下路径被视为等价的: /usr//local//nginx/sbin//…...
【微服务】1、引入;注册中心;OpenFeign
微服务技术学习引入 - 微服务自2016年起搜索指数持续增长,已成为企业开发大型项目的必备技术,中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念:微服务是一种软件架构风格,以专注于单一职责的多个响应项目为基…...
SQL Server 数据库 忘记密码
1、先用windows 身份验证 连接 2、安全性--登录名 3、设置 身份验证 4、重启电脑 5、登录 登陆成功!!! ------------------------------------------------------------------ --1、查询登录账号信息 ------------------------------------------------------------------ -- …...
Tableau数据可视化与仪表盘搭建-安装教程
下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录,去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装,会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…...
UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
UGUI中相同材质相同Shader相同贴图的UI元素可以合并DrawCall。 1.使用图集 Unity性能优化---使用SpriteAtlas创建图集进行批次优化_unity2021.3.33 spriteatlas优化-CSDN博客 2.Canvas的子物体在场景树中的索引位置和不同图集不影响UI合批且UI网格没有重叠,如下图…...
DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
最近,DeepSeek v3(一个MoE模型,拥有671B参数,其中37B参数被激活)模型全球爆火。 作为一款能与Claude 3.5 Sonnet,GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源,还放出一份扎实的技术…...
网络编程原理:回显服务器与客户端通信交互功能
文章目录 路由器及网络概念网络通信基础TCP/IP 五层协议封装和分用封装分用 网络编程(网络协议)UDP类 API使用实现回显通信程序回显服务器(UDP代码)回显客户端(UDP代码) TCP API使用回显服务器(TCP代码)回显客户端(TCP代码) 路由器及网络概念 网络发展是…...
#渗透测试#漏洞挖掘#WAF分类及绕过思路
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
西安电子科技大学初/复试笔试、面试、机试成绩占比
西安电子科技大学初/复试笔试、面试、机试成绩占比 01通信工程学院 02电子工程学院 03计算机科学与技术学院 04机电工程学院 06经济与管理学院 07数学与统计学院 08人文学院 09外国语学院 12生命科学与技术学院 13空间科学与技术学院 14先进材料与纳米科技学院 15网络与信息安…...
【Python学习(六)——While、for、循环控制、指数爆炸】
Python学习(六)——While、for、循环控制、指数爆炸 本文介绍了While、for、循环控制、指数爆炸,仅作为本人学习时记录,感兴趣的初学者可以一起看看,欢迎评论区讨论,一起加油鸭~~~ 心中默念:Py…...
中间件自动化测试框架cmdlinker
背景 作为一个中间件的测试工程师,如何对于中间件提供的命令进行自动化的回归,这一直是一个难题,市面上好像缺乏了对于命令进行自动化回归的合理解决方案。 常见方式有下面两种: 直接写字符串的命令,然后使用各种编程…...
写一个类模板三个模板参数K,V,M,参数是函数(函数参数、lambda传参、函数指针)
cal是类的成员函数。cal的3个入参是func1(K),func2(K,V),func3(K,V,M),请写出cal,并在main函数中调用cal 在您给出的要求中,cal成员函数并不直接…...
STM32-笔记35-DMA(直接存储器访问)
一、什么叫DMA? DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于…...
数势科技:解锁数据分析 Agent 的智能密码(14/30)
一、数势科技引领数据分析变革 在当今数字化浪潮中,数据已然成为企业的核心资产,而数据分析则是挖掘这一资产价值的关键钥匙。数势科技,作为数据智能领域的领军者,以其前沿的技术与创新的产品,为企业开启了高效数据分析…...
ES6中定义私有属性详解
在ES6中,定义私有属性的方式相对传统的JavaScript有所不同。ES6并没有提供直接的语法来定义私有属性,但可以通过几种方法间接实现私有属性。 1. 使用Symbol来模拟私有属性 Symbol是一种新的数据类型,可以作为对象的键,并且它的值…...
@Cacheable 注解爆红(不兼容的类型。实际为 java. lang. String‘,需要 ‘boolean‘)
文章目录 1、org.springframework.cache.annotation.Cacheable2、javax.persistence.Cacheable Cacheable(value "findPAUserById", key "#id")public Optional<PAUser> findById(Integer id) {return paUserRepository.findById(id);}我真的要笑死…...
离散数学 期末笔记
命题符号化 使用等值演算法证明 求公式范式 在自然推理体系中构造下列推理的证明 在一阶逻辑中将下列命题符号化 设A、B、C、D是 Z 的子集 证明下列集合恒等式 二元关系 性质 没有空的 没有漏的 没有重复 函数...
物联网控制期末复习
第3章 物联网控制系统的过程通道设计 3.1 模拟量输出通道 3.1.1单模拟量输出通道的构成 计算机控制系统的模拟量输出通道将计算机产生的数字控制信号转换为模拟信号(电压或电流)作用于执行机构,以实现对被控对象的控制。 多D/A结构&#…...
Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架
1、什么是Hypium Hypium是华为官方为鸿蒙操作系统开发的一款以python为语言的自动化测试框架。 引用华为官网介绍如下: DevEco Testing Hypium(以下简称Hypium)是HarmonyOS平台的UI自动化测试框架,支持开发者使用python语言为应用编写UI自动化测试脚本…...
李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning
笔记是在语雀上面做的,粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型,可以将机器学习进行分类 regression 回归任务:函数输出时一个数值classification 分类任务:人类设定好选项…...
探索Docker Compose:轻松管理多容器应用
探索Docker Compose:轻松管理多容器应用 在现代软件开发中,容器化已经成为构建、部署和扩展应用的主流方式。而Docker Compose作为Docker生态系统的重要组成部分,可以简化多容器应用的管理。本文将深入探讨Docker Compose的核心功能及应用场…...
java中static和const和final的区别
static 关键字 static 关键字用于声明类的成员(方法或变量)为静态成员。静态成员属于类本身,而不是类的实例。换句话说,静态成员可以通过类名直接访问,而不需要实例化对象。 静态变量:属于类的所有对象共…...
[Win32/ATL]_[初级]_[处理WM_PAINT消息注意事项]
场景 在开发Win32/WTL程序时,遇到了使用CFolderDialog(atldlgs.h)打不开目录选择对话框的情况。具体表现是执行了窗口的DoModal,却没有窗口弹出来。 可以确定执行操作是在主线程,并不是工作线程。调试时暂停看堆栈,知道到DoModal方法里的SHB…...
【DevOps】Jenkins项目发布
Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...
Lua迭代器如何使用?
在Lua中,迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法,对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式,它提供了一种访问集合元素的方法,而不需要…...
cesium小知识:3D tiles 概述、特点、示例
Cesium 的 3D Tiles 是一种高效的、流式传输的三维地理空间数据格式,专为在Web浏览器中快速渲染大规模三维场景而设计。3D Tiles 支持多种几何类型,包括点云、多边形、模型等,并且可以包含丰富的属性信息和层次细节(LOD, Level of Detail)结构,以确保不同设备和网络条件下…...
PTA DS 基础实验3-2.1 一元多项式求导
基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 注意:…...
【玩转全栈】----用户管理案例
目录 案例需求: 成果显示: 源码展示: 部分源码解释及注意 1、info_list.html文件 2、info_add.html文件 3、models.py文件 4、views.py文件 经过前面的学习,相信您对Django、MySQL,以及他们之间的连接已经非常熟悉了&a…...
文件上传漏洞利用与绕过姿势总结
文章目录 攻击与绕过方式一、条件竞争二、二次渲染结合文件包含绕过1、gif2、png3、jpg 三、.htaccess解析绕过四、文件后缀名绕过1、文件特殊后缀名大小写绕过2、::$DATA绕过3、双后缀名绕过4、点绕过5、空格绕过 五、文件头绕过六、短标签绕过七、MIME(Content-Type)绕过八、…...
Java十六
2-9-1Request和Response介绍 Request继承体系 ServletRequest————Java提供的请求对象根接口 Http ServletRequest————Java提供的对Http协议封装的请求对象接口 RequestFacade————Tomcat定义的实现类 1.Tomcat需要解析请求数据,封装为request对象,并且创建requ…...
人工智能在事件管理中的应用
随着科技的不断发展,人工智能(AI)正在深入到各行各业,运维领域也不例外。在事件管理中,AI通过其强大的数据分析和自动化能力,帮助团队更高效地处理系统事件,提升业务的稳定性和用户体验。 什么是事件管理? 事件管理是IT运维的重要组成部分,其核心目标是快速响应和处…...
Launcher3版本确定
Launcher3有几个不同的版本,引入的代码和资源文件有所不同,我们需要确认当前设备中使用的是哪个 查看bp脚本可以看到会生成四个app /packages/apps/Launcher3$ grep -nr -E "android\_app\ \{" -A 1 ./Android.bp 184:android_app { 185- …...