菜鸟AI - 让提示词生成更简单! 全站导航 全站导航
AI工具安装 新手教程 进阶教程 辅助资源 AI提示词 热点资讯 技术资讯 产业资讯 内容生成 模型技术 AI信息库

已有账号?

首页 > AI教程 > DETR模型大白话详解:目标检测新手入门必读
进阶教程

DETR模型大白话详解:目标检测新手入门必读

2026-05-31
阅读 0
热度 0
作者 菜鸟AI编辑部
摘要

摘要

DETR是一种基于Transformer的目标检测模型,无需预设计锚框和非极大值抑制后处理。它通过卷

核心原理与架构概览

DETR(Detection Transformer)全称为DEtection TRansformer,中文译作“检测变换器”,是Transformer架构在目标检测领域的直接应用。

解析其命名:DET代表目标检测(Detection),R即Transformer中关键的变换器结构。整体来看,这是一个专为端到端目标检测设计的Transformer模型,彻底摆脱了传统检测流程中大量人工设计的后处理环节。

传统YOLO等算法依赖手动预设锚框,推理后还需通过非极大值抑制(NMS)剔除重复预测框。DETR的提出正是为了消除这些繁琐步骤,用全局最优匹配替代人工干预,实现从输入图像到检测结果的直接映射。

下面逐步拆解DETR的完整工作流:

首先,图像经过卷积骨干网络提取深层特征。随后,特征图被展平并送入完整Transformer结构——该结构同时包含编码器和解码器。Transformer固定输出100组预测结果,对应100个目标“查询”(Object Query)。每组结果包含两部分:目标类别标签和边界框坐标。

由于一张图像通常不会恰好包含100个物体,未匹配到真实目标的预测框会被标记为“无目标”(背景类)。有效目标的预测框则映射回原图,与数据集中标注的真实框进行比对。训练阶段采用二分图匹配策略,对预测框和真实框进行一对一配对,计算专属匹配损失,并通过反向传播优化模型参数,逐步缩小坐标误差与分类误差。

推理阶段更加简洁:无需锚框,无需NMS等后处理,直接输出有效目标的边界框坐标与类别,实现完整的端到端检测。

二分图匹配损失详解

假设有3名司机和3名乘客,需要调度匹配以使总出行成本最低。此时可构建成本矩阵,清晰展示每位司机接送每位乘客的单独成本,作为最优调度的计算依据。

DETR中预测框与真实框的匹配逻辑与此完全一致。我们构建一个损失矩阵,其中每个值代表单个预测框与单个真实框之间的匹配损失。通过二分图匹配算法自动找出全局损失最小的最优配对,实现一对一分配。正是依靠这种全局优化机制,DETR彻底绕过了NMS筛选重复框的步骤,省去所有后处理。

DETR默认设置固定数量N=100,即固定生成100个预测框。模型假设单张图像中的目标物体数不超过100个,足以覆盖绝大多数检测场景。二分图匹配的核心作用在于确定:第i个真实目标应匹配哪个预测框。

整体损失函数由分类损失和回归损失两部分构成。分类损失方面:若真实物体为猫,模型需使猫类别的预测概率趋近于1;损失计算时对概率取负值,概率越高则损失越小。同时引入指示函数:仅当真实目标为有效物体(非背景)时计算分类损失,背景类不参与。

边界框回归损失用于约束预测框的位置和尺寸,分为两项:

  • 绝对值误差(L1损失),主要衡量预测框中心点偏移,修正位置偏差;
  • 交并比误差(IoU损失),约束两框的重合程度,确保预测框与真实框的面积和范围尽量贴合。

DETR通过二分图匹配完成框的一对一分配,再联合优化分类损失与回归损失,既保证类别预测准确,又使检测框位置、尺寸精准贴合真实目标。

模型架构拆解

骨干网络部分:图像经卷积神经网络(CNN)提取特征后,与位置编码相加,使模型感知各像素的空间位置关系,然后将融合结果送入Transformer模型。

位置编码有两种常见方式:第一种为正弦余弦编码,与原始Transformer一致——用正弦标记像素横坐标,余弦标记纵坐标,固定不变;第二种为可学习位置编码,初始化一个编码矩阵,模型训练时自适应优化。

Transformer分为编码器和解码器。编码器接收CNN提取的特征,核心作用是在特征之间进行自注意力计算,建立不同位置特征的关联。例如,图像中有一头牛,编码器可使“牛头”与“牛尾”的特征产生联系,从而识别为完整个体,而非离散部位。编码器处理后输出结果传给解码器。解码器的核心功能是利用编码器学到的特征相关性,识别图像中的物体并绘制预测框。

关键概念“目标查询”(Object Query,简称OQ)充当给解码器“提问”的角色——例如“图中是否有人形物体?”“右下角有无圆形物体?”OQ初始为全零张量,经解码器训练后,其输出传入前馈神经网络(检测头),每个检测头专门预测一个物体,最终将预测框绘制在原图上。

结合具体张量尺寸梳理流程(理解整体即可):假设输入图像为(3, 800, 1066)张量(通道数3,高800,宽1066)。经CNN处理后,高宽缩小至1/32,变为(2048, 25, 34)张量(通道数2048,高25,宽34)。随后通过2D卷积层将通道数压缩至256,变为(256, 25, 34),再与相同尺寸的位置编码相加,融合特征与位置信息。

融合后张量变形为(850, 256)输入编码器——850即25×34(高×宽),可视为“序列长度”,256为每个特征token的嵌入维度。编码器输出形状不变(850, 256),直接传递给解码器的交叉注意力层。解码器输入为(100, 256)张量,100对应100个预测框,256为嵌入维度。解码器输出仍为(100, 256),传入前馈神经网络(检测头)。

检测头输出两个分支:一是1×91类别预测(91类包括背景),二是1×4边界框坐标(位置与大小)。此处再次运用“司机-乘客调度”逻辑:构建矩阵,行对应100个预测框,列对应图中真实物体,每个值代表第i个预测框匹配第j个真实物体的总损失(分类+回归)。通过二分图匹配找到全局最小损失的一对一匹配,直接确定每个真实物体对应的最优预测框,从而无需NMS。

预测头实际包含两个并行子网络:一个负责类别预测,一个负责边界框回归,独立输出后合并为最终检测结果。目标查询(Object Query)是一组可学习张量,作为解码器输入而非编码器输出。可将其理解为解码器预先准备好的一批“问题”——例如“图中是否存在物体?位置在哪?类别是什么?”——解码器带着这些问题查询编码器提取的图像特征。OQ初始值为零,但附带可学习的位置编码以区分不同查询槽位。

位置编码应用细节:编码器每层自注意力计算中,位置编码同时加到K和Q上;解码器每层交叉注意力中,来自编码器输出的K也会加上位置编码,而OQ本身充当了解码器Q的位置编码角色。这种加法在编码器和解码器的每一层重复进行,各执行6次。

解码器各层并非从零开始:每层将上一层的预测结果(物体类别和位置)以残差连接形式传入下一层,相当于“携带上一轮结论继续优化”。这种设计使预测结果逐层精细化。举例:第一层解码器可能仅模糊感知“图中有人”;第二层结合上下文信息发现“此人位于画面右侧”;第三层进一步细化至“此人正举着双手”。每层在前一层基础上推进,最终得出精确检测结果。

来源:互联网

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

同类文章推荐

相关文章推荐

更多