当前位置: 首页 > news >正文

人工智能|大白话DETR 模型

🌞欢迎来到人工智能的世界
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

📆首发时间:🌹2026年4月27日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

简单的介绍

二分图匹配损失

模型架构

简单的介绍

DETR = DEtection TRansformer,中文可以叫「检测变换器」

  • DET= Detection(目标检测)

  • R= Transformer(变换器,就是大名鼎鼎的那个 Transformer)

合起来就是:专门做目标检测的 Transformer 模型。

传统 YOLO 系列算法存在不少依赖人工设计的环节,最典型的就是需要手动预先设定锚框。同

时,模型推理后会产出大量冗余的预测框,必须依靠非极大值抑制(NMS) 算法筛选、剔除重复

框,才能保留最优检测框。而 DETR 模型的诞生,正是为了从根本上解决这些繁琐的人工操作与

后处理步骤。

接下来简单说明 DETR 的整体工作流程:

首先将整张图片送入卷积骨干网络,提取图片的深层特征信息。随后,DETR 会把提取到的特

征图展平处理,再送入完整的Transformer 模型,该模型同时包含编码器解码器结构

Transformer 最终会固定输出100 组预测结果,对应 100 个目标查询,每组结果都包含两部分

关键信息:目标类别、预测框坐标。

由于一张图片里不会刚好有 100 个物体,对于没有匹配到真实目标的预测框,DETR 会统一标记

为无目标(no object)类别;对于有效目标的预测框,则映射回原图,和数据集中的真实标注框

进行比对。

训练阶段,DETR 采用二分图匹配的方式,一对一匹配预测框与真实框,计算专属的匹配损失。通

过反向传播不断优化模型参数,持续缩小预测框与真实框的坐标误差、分类误差,让检测结果越来

越精准。

等到推理阶段就更加简洁,模型不需要锚框、不需要非极大值抑制等后处理,直接输出有效目标的

边界框坐标和对应类别,一步完成端到端目标检测。


二分图匹配损失

假设现在有 3 名司机、3 名乘客,需要完成合理的匹配调度。我们的优化目标是:实现整体出行总

成本最低。可以通过成本矩阵,直观展示每位司机分别接送每一位乘客所对应的单独成本,以此作

为最优调度的计算依据。

DETR 里预测框和真实框的匹配逻辑,和刚刚司机与乘客的调度匹配原理完全一样。

我们可以构建一个损失矩阵,矩阵里的每一个数值,都代表单个预测框与单个真实框之间的匹配损

失。通过二分图匹配算法,自动算出哪一个预测框和哪一个真实框契合度最高、整体损失最小,直

接完成一对一最优配对。正是依靠这种全局最优匹配的方式,DETR 不需要再做非极大值抑制

(NMS)筛选重复框,直接省去了这一步后处理操作。

DETR 默认设置固定数量:(N=100),也就是固定生成 100 个预测框。模型默认一张图片里的目标

物体数量,不会超过 100 个,足够覆盖绝大多数检测场景。

二分图匹配的核心作用,就是确定:第 i 个真实目标,应该对应匹配哪一个预测框。

整体损失函数主要由分类损失和回归损失两部分组成:

第一部分为分类损失:(C_i) 代表真实目标的类别。举个例子,如果真实物体是猫,模型就要让猫

类别的预测概率无限接近 1;损失计算时会对概率取负值,概率越高、预测越准,分类损失就越

小。同时加入指示函数,只有当真实目标不是背景、是有效物体时,才会计算分类损失,背景类不

参与损耗计算。

第二部分是边界框回归损失,用来约束预测框的位置和大小。

回归损失又分为两项:

一是绝对值误差,主要衡量预测框中心点的偏移距离,修正框的位置偏差;

二是交并比误差,用来约束两个框的重合程度,保证预测框和真实框的面积、范围尽量贴合。

DETR 依靠二分图匹配完成框的一对一分配,搭配分类损失 + 回归损失联合优化,既保证物体类

别预测准确,又能让检测框的位置、尺寸精准贴合真实目标。


模型架构

首先说骨干网络部分:我们先让一张图片经过卷积神经网络(CNN),目的就是提取图片的特

征。提取完特征之后,要和位置编码做一个加法,这样才能让模型知道图片里各个像素的位置关

系,再把加完之后的结果传给Transformer模型

这里的位置编码有两种方式,和大家熟悉的操作一致:第一种是正弦余弦编码,和原始

Transformer用的完全一样,简单说就是用正弦标记图片像素的横坐标位置,用余弦标记纵坐标位

置,固定不变;第二种是可学习的位置编码,不用复杂操作,只要初始化一个位置编码矩阵,模型

训练的时候自己就能慢慢优化调整。

接下来看Transformer模型,它分为编码器和解码器两部分。先看编码器:它用的就是刚才卷积神

经网络提取到的特征,核心作用就是在这些特征之间做注意力计算,让不同位置的特征建立起关

联。比如图片里有一头牛,编码器能让“牛头”和“牛尾”的特征产生联系,这样模型才能认出这是一

个完整的牛,而不是零散的部位。

编码器处理完之后,就把结果传给解码器了。解码器的核心作用,就是利用编码器学到的特征相关

性,把图片里的物体组合识别出来,还能画出对应的预测框。这里要提一下OQ(目标查询),它

就相当于一个给解码器“提问”的角色——比如问解码器“这张图片里有人形物体吗?”“图片右下角有

没有圆形物体?”。OQ一开始是一个全0的张量,等解码器训练完成后,它的输出会传给前馈神经

网络(也就是检测头),每个前馈神经网络专门负责预测一个物体,最后模型就会把预测出的边界

框画在原始图片上。

结合具体的张量尺寸,给大家一步步说清楚(不用记太复杂,理解流程就行):

假设我们输入的图像是一个(3,800,1066)大小的张量(3是图片通道数,800和1066是图片的

高和宽)。经过卷积神经网络处理后,图片的长和宽都会缩小到原来的32倍,变成(2048,25,

34)大小的张量(2048是特征通道数,25和34是缩小后的高和宽)。

然后这个张量会经过一个2D卷积层,把特征通道数从2048压缩到256,变成(256,25,34)的张

量;接着和同样是(256,25,34)大小的位置编码做加法,融合特征和位置信息。

之后会把这个融合后的张量变形,变成(850,256)大小的张量,传给Transformer编码器——这

里的850很简单,就是25×34(缩小后的高×宽),可以理解成“编码长度”,256就是每个特征token

的嵌入维度。编码器处理完之后,张量形状不变,还是(850,256),直接传给解码器的交叉注

意力层。

解码器的输入是一个(100,256)大小的张量,100就对应我们之前说的100个预测框(模型默认

一张图最多100个物体),256还是token的嵌入维度。解码器处理完之后,输出形状还是(100,

256),再传给前馈神经网络(检测头)。

最后检测头会输出两个结果:一个是1×91的类别预测值(91代表所有可能的物体类别,包括背

景),另一个是1×4的预测框坐标(对应预测框的位置和大小)。

这里补充下和之前“司机-乘客调度”一致的逻辑:我们可以构建一个,矩阵的行对应100个预测框,

列对应图片中的真实物体,矩阵里的每一个数值,就代表“第i个预测框匹配第j个真实物体”的总损

失(包含分类损失和回归损失)。通过二分图匹配算法,找到让整体损失最小的一对一匹配方式,

直接确定每个真实物体对应的最优预测框,这样就不用再做NMS处理了。

预测头这里其实有两个并行的小网络:一个负责预测物体的类别,另一个负责预测边界框的坐标,

两者独立输出,最后合并成最终的检测结果。

Object Query(oq)是一组可学习的张量,它是解码器的输入,而不是编码器的输出。 你可以把

它理解成解码器提前准备好的一批"问题"——比如"图里有没有物体?在哪?是什么?"——解码器

带着这些问题去查询编码器提炼出的图像特征。 oq 的初始值是零,但它附带一个可学习的位置编

码,用来区分不同的查询槽位。

位置编码方面,在编码器里,每一层的自注意力计算中,位置编码都会加到 K 和 Q 上;在解码器

里,每一层交叉注意力的 K(来自编码器的输出)也会加上对应的位置编码,而 oq 本身就扮演了

解码器 Q 的位置编码角色。 并且这个加法在编码器和解码器的每一层都会重复做,一共各做 6

次。

解码器的每一层并不是从零开始的,它会把上一层输出的预测结果(物体的类别和位置)以残差连

接的形式传入下一层,相当于"带着上一轮的结论继续优化"。 这样做的好处是,预测结果可以在每

一层被逐步精细化。

举个例子:第一层解码器可能只能模糊地感知到"图里有个人";到了第二层,结合了更多上下文信

息,发现"这个人站在画面右侧";到了第三层,进一步细化,识别出"这个人正在举着双手"。 每一

层都在前一层的基础上往前推进一步,最终得到更准确的检测结果。

http://www.jsqmd.com/news/712396/

相关文章:

  • PCB打板前必看!用Cadence 17.4检查Gerber叠层的5个关键步骤(丝印/阻焊别漏)
  • 2026Q2松紧带技术分享:印花织带、平纹织带、提花织带、箱包织带、纯棉松紧带、防滑织带、人字纹织带、包边松紧带选择指南 - 优质品牌商家
  • 数字孪生预测建模与工业4.0应用解析
  • Auto-Deep-Research:基于多智能体与深度思考循环的AI自主研究系统实践
  • 人工智能|大白话Meshed-Memory Transformer
  • 命令行输出桌面化:Clawtop工具的设计原理与实现
  • 2026南充消防维保公司名录:蓬安消防检测公司、西充消防检测公司电话、西充消防维保公司推荐、阆中消防维保公司、仪陇消防检测公司电话选择指南 - 优质品牌商家
  • 别再手动管理GPU了!用Determined AI搭建算力池,5分钟搞定PyTorch/TensorFlow分布式训练环境
  • L2MAC框架解析:基于动态规划的AI长文本生成原理与实践
  • CCC数字钥匙3.0标准详解:从BLE/UWB通信到安全芯片(SE),一次讲清技术实现与选型
  • 别再手动发邮件了!SAP ME23N采购订单自动发送PDF给供应商的保姆级配置(附ME9F监控)
  • 体制内10个证书盘点:2026年哪些值得考?
  • 基于ChatGPT与Python的自动化股票报告生成器实战
  • BRIDGE框架:单目深度估计的强化学习数据生成方案
  • 开放空间鹦鹉智能体的行为建模与实现
  • 告别‘configure失败’:手把手教你用arm-himix200v002交叉编译iperf 2.0.9
  • leecode 179. 最大数 medium
  • lvgl_v8之bar控件代码示例
  • ArcGIS Pro 3.0 里搞定天地图WMTS底图:从申请Key到拖拽显示的保姆级避坑指南
  • 你的AI模型到底是准还是不准?——一个混淆矩阵说透四个评估指标
  • CVPR 2021 Point Transformer 保姆级复现教程:从零到一搞定点云自注意力模型
  • 别再乱设H0和H1了!用Python实战案例帮你搞懂假设检验的底层逻辑
  • 2026年宜宾同城搬家服务机构排行及联系方式参考:四川学校搬迁/四川家具拆装/四川居民搬家/四川拉货搬运/四川搬厂搬货/选择指南 - 优质品牌商家
  • DiT360全景图像生成技术解析与应用实践
  • LinkSwift:解锁八大网盘直链下载的终极解决方案
  • PyTorch实战:手把手教你将ConvLSTM嵌入UNet,搞定车道线时序预测(附完整代码)
  • Portarium:轻量级可视化端口与容器管理工具部署与使用指南
  • BitNet b1.58-2B-4T-GGUF开发者案例:GitHub PR描述自动生成+代码变更摘要
  • 基于十二要素应用的智能体驱动架构:从单体到AI原生应用演进
  • 量子联邦学习在ADAS中的创新应用与实战解析