IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Deformable DETR:Deformable Transformers for End-to-end object detection笔记 -> 正文阅读

[人工智能]Deformable DETR:Deformable Transformers for End-to-end object detection笔记

(一) 本文需要解决的问题

DETR具有slow convergence以及limited feature spatial resolution

原始的DETR模型存在的问题:

  • 训练时间长,需要500个epoch才能够收敛
  • 对小目标检测能力相对较弱
  • 在初始化时,Attention modules接近是均匀分布,需要长时间的训练才能将其转变为sparse meaningful locations
  • attention weight这边的权重计算是二次复杂度的,对于高分辨率图来说是高计算和高内存消耗的。

Deformable DETR真的是一篇神作,给后面太多的改进方法带来了思路。

(二) 本文是怎么解决这些问题的

本文的主要工作有两个,首先第一个就是将deformable attention module替换Attention模块,从而实现sparse attention。接着第二个就是multi-scale deformable attention module来实现不同尺度特征的建模。

首先是Deformable Attention Module

给定一个输入feature map x ∈ R C × H × W x \in \mathbb{R}^{C \times H \times W} xRC×H×W,接着令 q q q表示带有content feature z q z_q zq?,以及一个2d的reference point p q p_q pq?的一个query,接着deformable attention feature能够通过一下的方式计算:
DeformAttn ? ( z q , p q , x ) = ∑ m = 1 M W m [ ∑ k = 1 K A m q k ? W m ′ x ( p q + Δ p m q k ) ] \operatorname{DeformAttn}\left(\boldsymbol{z}_{q}, \boldsymbol{p}_{q}, \boldsymbol{x}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{k=1}^{K} A_{m q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right)\right] DeformAttn(zq?,pq?,x)=m=1M?Wm?[k=1K?Amqk??Wm?x(pq?+Δpmqk?)]
其中, m m m是表示multi-head的index,k表示采样的key, K K K是总的key的数量 ( K ? H W ) (K \ll H W) (K?HW),此外 Δ p m q k \Delta p_{m q k} Δpmqk?以及 A m q k A_{m q k} Amqk?分别表示采样的offset以及在第 m m m个head上的第 k k k个采样点的attention weights, ∑ k = 1 K A m q k = 1 \sum_{k=1}^{K} A_{m q k}=1 k=1K?Amqk?=1, Δ p m q k ∈ R 2 \Delta \boldsymbol{p}_{m q k} \in \mathbb{R}^{2} Δpmqk?R2,由于特征点 p q \boldsymbol{p}_{q} pq?经过小数位移 Δ p m q k \Delta \boldsymbol{p}_{m q k} Δpmqk?之后,需要在特征图上进行插值得到对应特征,即 x ( p q + Δ p m q k ) \boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right) x(pq?+Δpmqk?),这里的 Δ p m q k \Delta \boldsymbol{p}_{m q k} Δpmqk?是通过query特征计算 z q z_q zq??得到线性projection得到的。

这里Deformable Attention Module可以用到Encoder的self-attention以及Decoder的cross-attention中,在计算复杂度上有了改进,这个地方有时间可以仔细看看

接着是Multi-scale Deformable Attention Module

假定多尺度特征为: { x l } l = 1 L \left\{x^{l}\right\}_{l=1}^{L} {xl}l=1L?,对应的特征图size为$ x^{l} \in \mathbb{R}^{C \times H_{l} \times W_{l}} , 此 外 , ,此外, ,,\hat{\boldsymbol{p}}_{q} \in[0,1]^{2} 表 示 对 于 每 一 个 q u e r y 元 素 表示对于每一个query元素 queryq$?的reference point的归一化坐标。接着多尺度的deformable attention模块可以表示为
MSDeformAttn ? ( z q , p ^ q , { x l } l = 1 L ) = ∑ m = 1 M W m [ ∑ l = 1 L ∑ k = 1 K A m l q k ? W m ′ x l ( ? l ( p ^ q ) + Δ p m l q k ) ] \operatorname{MSDeformAttn}\left(\boldsymbol{z}_{q}, \hat{\boldsymbol{p}}_{q},\left\{\boldsymbol{x}^{l}\right\}_{l=1}^{L}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}^{l}\left(\phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right)+\Delta p_{m l q k}\right)\right] MSDeformAttn(zq?,p^?q?,{xl}l=1L?)=m=1M?Wm?[l=1L?k=1K?Amlqk??Wm?xl(?l?(p^?q?)+Δpmlqk?)]
其中 m m m表示attention head 的index, l l l表示输入特征图的index, k k k表示key的index,然后 Δ p m l q k ?and? A m l q k \Delta \boldsymbol{p}_{m l q k} \text { and } A_{m l q k} Δpmlqk??and?Amlqk?分别表示第 m m m个attention head,第 l l l个feature map以及第 k k k个采样点的attention weights,并且有 ∑ l = 1 L ∑ k = 1 K A m l q k = 1 \sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k}=1 l=1L?k=1K?Amlqk?=1, p ^ q ∈ [ 0 , 1 ] 2 \hat{\boldsymbol{p}}_{q} \in[0,1]^{2} p^?q?[0,1]2表示归一化的坐标, ? l ( p ^ q ) \phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right) ?l?(p^?q?)表示将reference point rescale到对应的特征图上,这里已经归一化的坐标了,为什么还要rescale呢,这里实际上增加了采样点的选取区间,从多个尺度的特征图上选取采样点。

L = 1 , K = 1 , ?and? W m ′ ∈ R C v × C ′ L=1, K=1, \text { and } \boldsymbol{W}_{m}^{\prime} \in \mathbb{R}^{C_{v} \times C^{\prime}} L=1,K=1,?and?Wm?RCv?×C时,注意力模块会退化成可变形卷积,相比于可变形卷积,仅仅关注single-level的特征,这里的multi-scale deformable attention 关注多尺度,并且相比于Transformer更加高效,可以同Transformer的attention等效。

最后就是Tranformer Encoder和Decorder的设计了

  • Encorder的设计

    Encoder中使用multi-scale deformable attention module替换掉了DETR中的attention module,encoder的输入和输出都是具有相同分辨率的多尺度的特征图,将ResNet的 C 3 ? C 6 C_3-C_6 C3??C6?用过来,每一个多尺度特征都是256维度的,没有使用FPN。both query和key元素都是来自多尺度特征图上的pixels,对于每一个pixel,参考点是他自己。同时增加了一个scale-level embedding,记作 e l e_l el???来区分特征level

  • Decoder的设计

    cross-attention 以及 self-attention 都有,在cross-attention中,key elements 是从encoder中输出的特征。在self-attention中,这里的key elements是从object query中来的,本文提出的deformable attention module是被用来将convolutional feature map看成keys来处理的,因此仅仅替换了decorder的cross-attention部分,decorder中的2维的reference point p ^ q \hat{\boldsymbol{p}}_{q} p^?q??,是通过object querylinera projection之后再接一个sigmoid得到的。由于multi-scale deformable attention module提取的是参考点附近的feature,可以基于reference point预测一个offsets来进一步加快收敛,reference point可以看成是边界框中心点的一个预测。

一些其他的改进内容:

  • Iterative bounding box refinement,构建了一个simple并且effective iterative bounding box refinement机制来改善detection性能,利用之前的预测来调整和改善当前的预测。这块需要好好看看代码,确认是否需要针对旋转框做特殊处理

  • Two-Stage Deformable DETR,本文探索了DETR的变体,以产生region proposal作为第一阶段,生成的region proposal作为对象query输入到decorder进行进一步的refinement,形成一个两阶段的Deformable DETR。这里在第一阶段时,对应每一个特征点位置希望预测一个边界框,然而decorder承受不了这么大的计算量,这里去掉了decorder,构建了一个encorder-only的Deformable DETR用来进行Region Proposal generation,此时每一个pixel 被assigned 一个object query直接用来预测bounding box,得分最高的边界框作为候选区域,并将候选区域用于second stage。

(三) 实验结果

请添加图片描述
请添加图片描述

(四) 知识点Notes

关于解决Transformer Attention模块的时间和内存复杂性的方法:

  • use pre-defined sparse attention patterns on keys,最直接的方式就是将注意力模式集中在固定的局部窗口,但是这样失去了global information。
  • learn data-dependent sparse attention,基于locality sensitive hashing(LSH)将查询和key散列到不同的容器中
  • 探索self-attention的low-rank 特性,通过减少key的数量来实现。

目前解决难训练问题的方法主要为:

  • 使Attention变得稀疏
  • 多尺度特征
  • two stage,将region proposal提供到Transformer中,detection 任务应该更多地关注local的信息,
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:02:52  更:2021-12-05 12:05:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:32:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码