人工智能|大白话DETR 模型

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: DETR(检测变换器)是首个端到端目标检测模型,摒弃锚框与NMS后处理。它以CNN提取特征,经Transformer编码器-解码器处理,配合100个可学习目标查询(OQ),通过二分图匹配实现预测框与真实框的一对一最优分配,直接输出类别与坐标。(239字)

 简单的介绍

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

  • DET = Detection(目标检测)
  • R = Transformer(变换器,就是大名鼎鼎的那个 Transformer)

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

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

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

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

后处理步骤。

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

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

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

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

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

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

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

进行比对。

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

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

越精准。

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

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

image.gif


二分图匹配损失

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

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

为最优调度的计算依据。

image.gif

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

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

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

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

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

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

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

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

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

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

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

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

参与损耗计算。

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

回归损失又分为两项:

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

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

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

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

image.gif


模型架构

首先说骨干网络部分:我们先让一张图片经过卷积神经网络(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处理了。

image.gif

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

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

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

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

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

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

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

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

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

次。

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

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

一层被逐步精细化。

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

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

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

image.gif


目录
相关文章
|
8天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
3691 16
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
16天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3605 13
|
10天前
|
人工智能 自然语言处理 供应链
|
12天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2997 7
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
19天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3729 25
|
10天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1471 3
|
3天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
502 0
|
17天前
|
存储 Linux iOS开发
【2026最新】MarkText中文版Markdown编辑器使用图解(附安装包)
MarkText是一款免费开源、跨平台的Markdown编辑器,主打所见即所得实时预览,支持Windows/macOS/Linux。内置数学公式、流程图、代码高亮、多主题及PDF/HTML导出,是Typora的轻量免费替代首选。(239字)