5.10.3 使用 Transformer 进行端到端对象检测(DETR)

框架的主要成分称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,它通过二分匹配强制进行独特的预测,以及 Transformer 编码器-解码器架构。

DETR 会推理对象与全局图像上下文的关系,以直接并行输出最终的预测集。

1. 介绍

对象检测的目标是预测每个感兴趣对象的一组边界框和类别标签。

在计算机图形学和图像处理中,锚点(Anchor Point)是一个特定的位置,通常用于描述图像中的特征点或区域。它可以是单个像素点,也可以是一个更复杂的区域如矩形或椭圆。锚点的主要作用是为图像处理和计算机视觉任务提供一个参考点,以便更准确地描述和定位图像中的特征。在目标检测任务中,锚点用于预测目标物体的位置和大小;在图像匹配任务中,它帮助找到图像中的相似区域。

DETR 通过将通用 CNN 与 Transformer 架构相结合来直接(并行)预测最终的检测集。

二分匹配:模型的预测结果(包括坐标和类别概率)与真实框之间会进行最优的一一配对,即每个预测结果都会与一个真实框(或背景类,如果没有真实框与之匹配)进行匹配。 

通过将对象检测视为直接集合预测问题来简化训练流程。我们采用基于 Transformer 的编码器-解码器架构,这是一种流行的序列预测架构。 Transformer 的自注意力机制明确地模拟了序列中元素之间的所有成对交互,使这些架构特别适合集合预测的特定约束,例如删除重复的预测。

DEtection TRansformer(DETR)会同时预测所有对象,并使用一组损失函数进行端到端训练,该函数在预测对象和真实对象之间执行二分匹配。DETR 通过删除多个手工设计的编码先验知识的组件(例如空间锚点或非极大值抑制)来简化检测流程。

DETR 的主要特征是二分匹配损失和Transformer与(非自回归)并行解码的结合。

2. 相关工作

我们的工作建立在多个领域的先前工作的基础上:集合预测的二分匹配损失、基于Transformer的编码器-解码器架构、并行解码和对象检测方法。

2.1 集合预测

基本的集合预测任务是多标签分类,这些任务中的第一个困难是避免近似重复。当前大多数检测器使用非极大值抑制等后处理来解决此问题,但直接集预测无需后处理。他们需要全局推理方案来对所有预测元素之间的交互进行建模,以避免冗余。

后处理主要用于对目标检测算法的输出进行调整和优化,以提高检测结果的准确性和稳定性

损失函数应该通过预测的排列而保持不变。通常的解决方案是基于匈牙利算法设计损失,以找到真实值和预测之间的二分匹配。

匈牙利算法icon-default.png?t=N7T8https://blog.csdn.net/qq_52302919/article/details/132170356

2.2 Transformer和并行解码

Transformer,作为机器翻译的新的基于注意力的构建块。注意力机制 是聚合来自整个输入序列的信息的神经网络层。 Transformer 引入了自注意力层,与非局部神经网络类似,它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的记忆,这使得它们比 RNN 更适合长序列。

RNN循环神经网络icon-default.png?t=N7T8https://blog.csdn.net/zyf918/article/details/136172798

Transformer 最初用于自回归模型,遵循早期的序列到序列模型 ,一一生成输出标记。结合了变压器和并行解码,以在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。

Transformer模型中,并行解码(Parallel Decoding)指的是解码器(Decoder)部分能够同时处理多个输出位置,而不是像传统的递归神经网络(RNN)那样逐个位置地顺序生成输出。

2.3 对象检测

大多数现代物体检测方法都会根据一些初始猜测进行预测。在我们的模型中,通过使用绝对框预测直接预测检测集来简化检测过程。输入图像而不是锚点。

基于集合的损失

一些物体检测器使用了二分匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅使用卷积层或全连接层进行建模。最近的检测器使用地面实况和预测之间的非唯一分配规则以及 NMS(非极大值抑制)

NMS的主要目的是解决目标检测算法输出目标框时的重叠问题。在目标检测任务中,算法通常会生成多个候选框来表示可能包含目标的区域。这些候选框往往会有一定的重叠,NMS的作用就是对这些重叠的候选框进行筛选,以保留最优的检测结果。

可学习的 NMS 方法和关系网络通过注意力显式地建模不同预测之间的关系。使用直接设置损失。然而,这些方法采用额外的手工制作的上下文特征  来有效地建模检测之间的关系,同时我们寻找减少模型中编码的先验知识的解决方案。

循环检测器

最接近的方法的是对象检测和实例分割的端到端集合预测。

使用基于 CNN 激活的编码器-解码器架构的二分匹配损失来直接生成一组边界框。

3. DETR模型

对于检测中的直接集合预测来说,有两个要素至关重要:

(1) 集合预测损失,强制预测框和真实框之间进行唯一匹配;

(2) 一种能够(在一次传递中)预测一组对象并对其关系进行建模的架构。

3.1 对象检测集预测损失

DETR 在通过解码器的单次传递中推断出一组固定大小的 N 个预测,其中 N 设置为明显大于图像中对象的典型数量。训练的主要困难之一是根据真实情况对预测对象(类别、位置、大小)进行评分。我们的损失在预测对象和真实对象之间产生最佳二分匹配,然后优化特定于对象(边界框)的损失。

y 表示对象的真实集合,并且\hat{y}=\{\hat{y}_{i}\}_{i=1}^{N} 表示 N 个预测的集合。假设 N 大于图像中的对象数量,我们也将 y 视为大小为 N 的集合,并用 \phi 填充。为了找到这两个集合之间的二分匹配,我们以最低成本搜索 N 个元素 \sigma\in\mathfrak{S}_{N} 的排列:\hat{\sigma}=\arg\min_{\sigma\in\mathfrak{S}_N}\sum_i^N\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})

其中\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})是真实值y_i和索引为\sigma (i)的预测之间的成对匹配成本。

匹配成本考虑了类别预测以及预测框和地面实况框的相似性。

真实集的每个元素 i 都可以视为 y_i = (c_i , b_i),其中 c_i 是目标类标签(可能是\O\phi),b_i\in[0,1]^4是一个向量,定义真实框中心坐标及其相对于图像大小的高度和宽度。

对于索引为 \sigma (i) 的预测,我们将类 c_i 的概率定义为 \hat{p}_{\sigma(i)}(c_i) ,将预测框定义为 \hat{b}_{\sigma(i)} 。利用这些符号,我们将\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})定义为 -1_{\{c_i\neq\varnothing\}}\hat{p}_{\sigma(i)}(c_i)+1_{\{c_i\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\sigma(i)})。需要找到一对一的匹配来进行直接集预测,而无需重复。

\mathcal{L}_{\mathrm{Hungarian}}(y,\hat{y})=\sum_{i=1}^{N}\left[-\log\hat{p}_{\hat{\sigma}(i)}(c_{i})+{1}_{\{c_{i}\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_{i},\hat{b}_{\hat{\sigma}}(i))\right]

边界框损失

我们的框损失是\mathcal{L}_{\mathrm{box}}(b_{i},\hat{b}_{\sigma(i)})定义为:\lambda_{\mathrm{iou}}\mathcal{L}_{\mathrm{iou}}(b_{i},\hat{b}_{\sigma(i)})+\lambda_{\mathrm{L}1}||b_{i}-\hat{b}_{\sigma(i)}||_{1}

3.2 DETR架构

一个用于提取紧凑特征表示的 CNN 主干、一个编码器-解码器 Transformer 以及一个简单的前馈网络 (FFN),该网络用于提取紧凑的特征表示。做出最终的检测预测。

主干

从初始图像x_{\mathrm{img}}\in\mathbb{R}^{3\times H_{0}\times W_{0}}开始,传统的 CNN 主干网生成较低分辨率的激活图

f\in\mathbb{R}^{C\times H\times W},使用的典型值为 C = 2048 和H,W=\frac{H_{0}}{32},\frac{W_{0}}{32}

Transformer编码器

首先,1x1 卷积将高级激活图 f 的通道维度从 C 减少到更小的维度 d。创建新的特征图

z_0\in R^{d\times H\times W}。编码器期望一个序列作为输入,因此我们将 z_0 的空间维度折叠为一维,从而产生 d×HW 的特征图。每个编码器层都有一个标准架构,由多头自注意力模块和前馈网络(FFN)组成。由于 Transformer 架构是排列不变的,我们用固定位置编码对其进行补充,并将其添加到每个注意层的输入中。

Transformer解码器

解码器遵循 Transformer 的标准架构,使用多头自注意力机制和编码器-解码器注意力机制来转换大小为 d 的 N 个嵌入。与原始 Transformer 的区别在于,我们的模型在每个解码器层并行解码 N 个对象,由于解码器也是排列不变的,因此 N 个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习的位置编码,我们将其称为对象查询。

N 个对象查询被解码器转换为输出嵌入。然后通过前馈网络将它们独立解码为框坐标和类标签,从而产生 N 个最终预测。利用对这些嵌入的自注意力和编码器-解码器注意力,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。

预测前馈网络(FFNs)

最终预测由具有 ReLU 激活函数和隐藏维度 d 的 3 层感知器以及线性投影层计算。FFN 预测框的标准化中心坐标、高度和宽度。输入图像,线性层使用 softmax 函数预测类标签。

辅助解码损失

在每个解码器层之后添加预测 FFN 和匈牙利损失。所有预测 FFN 共享其参数。

使用额外的共享层范数来规范化来自不同解码器层的预测 FFN 的输入。

  • 35
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
div+css有实例,易学易懂第1 章 Web 标准布局的本质 第8 页 1.1 为什么要建立Web 标准 1.1.1 建立Web 标准的目的 1.1.2 使用Web 标准的好处 1.2 什么是Web 标准 1.3 内容、结构和表现 1.4 两种思考方式 1.5 Web 标准的前景 第 2 章 XHTML 书写规范 第14 页 2.1 为什么要使用XHTML 2.2 什么是XHTML 2.3 XHTML 语法基础 2.3.1 XHTML 页面结构 2.3.2 元素的书写格式和属性 2.3.3 各种元素的属性 2.4 XHTML 代码规范 第 3 章 CSS 基础与书写规范 第29 页 3.1 CSS 的基础知识 3.1.1 什么是CSS 3.1.2 CSS 的语法 3.1.3 选择符 3.1.4 属性 3.1.5 伪类和伪元素 3.1.6 默认值 3.1.7 继承性 3.2 CSS 编码规范 3.2.1 CSS 基本书写规范 3.2.2 CSS 样式表书写顺序 3.3 怎样更好地应用CSS 3.3.1 块元素和内联元素 3.3.2 一些CSS 的实用技巧 3.3.3 怎样调试CSS 3.4 关于CSS 的学习 第4 章 网页头部元素的详细定义 第41 页 4.1 DOCTYPE 的选择 4.1.1 什么是DOCTYPE 4.1.2 选择什么样的DOCTYPE 4.2 名字空间 4.3 编码问题 4.4 meta 标签 4.5 CSS 的调用 4.5.1 调用样式表的几种方法 4.5.2 应用样式的优先级 4.6 网页头部实例 第 5 章 CSS 基本布局属性 第50 页 5.1 页面的制作流程和整体分析 5.2 元素定位基础知识 5.2.1 块元素的默认排列 5.2.2 内联元素的默认排列 5.2.3 块元素和内联元素的混合默认排列 5.2.4 使用浮动属性进行定位 5.3 定位属性详解 5.3.1 定位模式 5.3.2 边偏移 5.3.3 层叠定位属性 5.4 定位属性的应用 5.4.1 页面的制作流程和整体分析 5.4.2 相对定位 5.4.3 固定定位 5.4.4 层叠定位属性的使用 5.5 页面的背景设定 5.5.1 使用背景色定义背景 5.5.2 背景图片默认使用 5.5.3 背景图片的重复 5.5.4 背景图片的位置 5.5.5 背景图片的附件 5.6 背景的综合应用 5.6.1 背景的综合应用 5.6.2 背景颜色和背景图片的层叠 5.6.3 背景属性在内联元素中的使用 5.6.4 背景属性的缩写 5.6.5 页面文本的样式 5.6.6 链接的样式 5.7 布局的基础 5.7.1 布局页面的步骤 5.7.2 使用ID 还是Class 5.7.3 控制内容显示的display 属性 5.7.4 控制内容显示的visibility 属性 5.7.5 使用text-align 属性的水平居中 5.7.6 使用margin 属性的水平居中 5.8 浮动属性 5.8.1 浮动属性详解 5.8.2 相邻的浮动元素和固定元素 5.8.3 相邻的两个浮动元素 5.8.4 相邻的多个浮动元素 5.9 关于ul 和li 的样式详解 5.9.1 使用list-style-type 属 5.9.2 使用list-style-position 属性 5.9.3 使用list-style-image 属性 5.9.4 list-style 属性 5.10 菜单原理 5.10.1 菜单原理 5.10.2 制作菜单内容和结构部分 5.10.3 CSS 代码编写 5.11 一个横向导航菜单的制作 5.11.1 菜单原理 5.11.2 制作菜单内容和结构部分 5.11.3 CSS 代码编写 5.12 清除浮动 5.12.1 清除浮动属性详解 5.12.2 清除浮动属性的使用 第6 章 CSS 定义文本属性 第123 页 6.1 文本的缩进和对齐 6.1.1 段首缩进 6.1.2 段首字符下沉与大写 6.1.3 文本的对齐 6.1.4 图文混排 6.2 行高与间隔 6.2.1 行高属性详解 6.2.2 利用行高属性使文本垂直居中 6.2.3 间隔与空白 6.2.4 文本的转换 6.3 水平和垂直居中问题 6.3.1 已知容器和内容大小的水平和垂直居中问题 6.3.2 未知容器的大小而已知内容大小的水平和垂直居中问题 6.3.3 已知容器的大小而未知内容大小的水平和垂直居中问题 6.3.4 容器的大小和内容大小均未知的水平和垂直居中 6.3.5 修饰图片的水平和垂直居中 6.4 字体的综合属性 6.4.1 字体的选择 6.4.2 字体的大小 6.4.3 字体的加粗 6.4.4 字体的样式 6.4.5 字体的变形 6.4.6 字体属性的简写 6.5 文本的修饰和链接 6.5.1 文本的修饰 6.5.2 链接属性详解 6.5.3 使用链接的顺序 6.5.4 链接的继承性 6.5.5 cursor 属性 第7 章 CSS 容器属性 7.1 什么是盒模型 7.1.1 内容与盒模型 7.1.2 背景与盒模型 7.2 补白属性 7.2.1 补白属性详解 7.2.2 百分比值的使用 7.2.3 单侧的补白属性 7.2.4 补白属性的简写 7.3 边框属性 7.3.1 边框样式 7.3.2 边框宽度 7.3.3 边框颜色 7.3.4 边框的综合定义 7.3.5 单侧边框的综合定义 7.3.6 一个有用的表格边框属性 7.3.7 应用边框属性的实例 7.4 边界属性 7.4.1 边界属性 7.4.2 单侧的边界和简写 7.4.3 垂直方向的边界重叠 7.4.4 水平方向的边界 7.4.5 负的边界值 7.4.6 在内联元素中使用边界属性 第8 章 浏览器及兼容问题 8.1 浏览器介绍 8.2 要兼容哪些浏览器 8.3 解决兼容问题的原理 8.4 !important 的使用 8.5 水平居中的问题 8.5.1 IE6.0 中的水平居中 8.5.2 FIREFOX2.0 中的水平居中 8.5.3 解决方法 8.6 非浮动内容和容器的问题 8.6.1 IE6.0 中固定宽度和高度的容器和内容 8.6.2 FIREFOX2.0 中的容器与内容 8.6.3 可能出现的问题和解决方法 8.7 使用:after 伪类解决浮动的问题 8.7.1 IE6.0 中的浮动元素和容器 8.7.2 FIREFOX2.0 中的浮动元素和容器 8.7.3 并列浮动元素默认宽度的问题 8.8 嵌套元素宽度和高度叠中的问题 8.8.1 父元素和子元素均没有定义宽度和高度 8.8.2 定义子元素的宽度后的效果 8.8.3 定义父元素宽度后的效果 8.8.4 解决的方法 8.9 子元素负边界的问题 8.9.1 IE6.0 中子元素的负边界 8.9.2 FIREFOX2.0 中子元素的负边界 8.9.3 解决方法 8.10 列表的默认显示问题 8.10.1 列表的默认显示方式 8.10.2 默认属性的取消 8.11 IE6.0 中的问题 8.11.1 浮动元素的双边距和零边距问题 8.11.2 浮动列表的问题 8.11.3 图片的间隙问题 8.12 IE7.0 中的问题 8.12.1 内容和容器的显示方式不同 8.12.2 支持!important 的声明 8.12.3 嵌套的问题 8.12.4 浮动子元素的问题 8.12.5 和IE6.0 相同的问题 8.13 兼容问题实例 8.13.1 纵向导航菜单的兼容 8.13.2 横向导航菜单的兼容 8.13.3 自适应高度的兼容 8.13.4 实例制作中的兼容问题 第9 章 一个英文网站的制作 9.1 分析效果图 9.2 切图 9.2.1 制作首页的切图 9.2.2 二级页面的切图 9.3 制作站点首页头部 9.3.1 首页头部的信息和基础样式的制作 9.3.2 首页头部的分析 9.3.3 首页头部结构的制作 9.3.4 首页头部CSS 代码的编写 9.4 制作首页的主体部分 9.4.1 分析主体部分效果图 9.4.2 制作主体左侧部分的结构 9.4.3 制作主体左侧部分的样式 9.4.4 制作主体中间部分的结构 9.4.5 制作主体中间部分的样式 9.4.6 制作主体右侧部分的结构 9.4.7 制作主体右侧部分的样式 9.5 制作首页的底部 9.6 首页的兼容问题 9.7 二级页面的制作 9.7.1 分析二级页面的效果图 9.7.2 制作二级页面中间内容部分的结构 9.7.3 制作二级页面中间内容部分的样式 9.7.4 制作二级页面右侧部分的结构 9.7.5 制作二级页面右侧部分的样式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值