人工智能|大白话DETR 模型

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 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


目录
相关文章
|
1月前
|
人工智能 自然语言处理 计算机视觉
人工智能|大白话Meshed-Memory Transformer
M2Transformer是一种图像描述生成模型,由三部分构成:骨干编码器(Faster R-CNN)提取区域特征;记忆增强编码器(Transformer)对特征进行语义细化;网格解码器(Transformer)将增强特征转化为自然语言描述。结构清晰、层次分明,兼顾准确性与可解释性。(239字)
189 4
|
1月前
|
人工智能 自然语言处理 数据挖掘
用ChatGPT和Codex搭建个人AI工作流:从一人部门到开源实践
本文探讨AI时代“一人部门”工作法:用ChatGPT拆解任务、构建知识库,用Codex将流程工具化,结合复盘与沉淀,打造可持续的个人AI工作系统(OPC)。非替代团队,而是以工具+流程+知识,提升单人可复用、可迭代的系统性产出能力。
697 7
|
1月前
|
弹性计算 监控 Java
Maven 并行构建配置:-T 4C 提速 4 倍实战
本文深入讲解了 Maven 并行构建的核心原理和实战技巧,包含 -T 参数详解、模块并行化改造、性能监控与分析等企业级最佳实践。通过真实案例展示了如何将多模块项目的构建时间从 45 分钟缩短到 11 分钟(提升 4.1 倍),提供完整的性能测试脚本和优化检查清单。掌握这些技能,你将能够充分利用多核 CPU 加速 Maven 构建。适合 Java 开发者、架构师、DevOps 工程师阅读。
|
1月前
|
机器学习/深度学习 自动驾驶 PyTorch
PyTorch深度学习实战 |SegNet
CamVid_11是面向自动驾驶的语义分割数据集,含700+张精准标注图像,划分为训练/验证/测试集。涵盖道路、车辆、行人等11类场景目标(含背景共12类),支持SegNet等模型训练与评估。
182 3
|
1月前
|
人工智能 机器人 芯片
人工智能|YOLOv8实战
本内容为安全帽检测实战项目,基于YOLOv8模型,涵盖Kaggle数据获取、自定义yaml配置、模型训练(yolo_train.py)与测试(yolo_test.py),并提供服务器(FastAPI+Docker)、边缘(Jetson+TensorRT)及国产嵌入式(RK3588+RKNN)三类部署方案,支持工业场景实时智能识别。(239字)
339 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
374 16
|
1月前
|
机器学习/深度学习 人工智能 网络架构
深度解析:Transformer 的“灵魂”——QKV 变换的物理直觉
本文用图书馆检索等生活隐喻,从物理意义与认知科学角度解析Transformer中QKV设计的精妙本质:解耦查询(q)、键(k)、值(v)三重角色,实现语义分离、避免自注意力“自恋”,模拟人类动态信息路由的认知过程。(239字)
413 13
|
1月前
|
存储 人工智能 自然语言处理
拒绝“大模型幻觉”:一文彻底搞懂 RAG(检索增强生成)技术全流程
本文深入解析RAG(检索增强生成)技术,直击大模型落地私有知识场景的核心痛点——如何让LLM精准、低成本、高时效地基于企业文档作答。从文本分片、向量化索引,到召回重排、增强生成,系统拆解五大关键步骤,揭示RAG作为“AI外挂”的底层逻辑与工程实践精髓。
拒绝“大模型幻觉”:一文彻底搞懂 RAG(检索增强生成)技术全流程
|
1月前
|
弹性计算 前端开发 Ubuntu
阿里云服务器ECS的租用教程和简单的前端页面部署
本文详解阿里云学生福利领取(含300元卡券)及ECS轻量服务器选购与部署全流程:涵盖学生机免费申领、配置选型建议(Ubuntu/CentOS/Windows)、安全组设置、Nginx安装、网页部署及Xshell远程连接等实操步骤,新手友好。
320 8
|
1月前
|
人工智能 数据可视化 测试技术
【教程】阿里云轻量云服务器一键配置OpenClaw
如果你还没有部署自己的 OpenClaw,还可以通过购买腾讯的轻量云服务器,一键秒级部署指南一键秒级部署指南,一键即可在几秒内完成部署。
390 9

热门文章

最新文章