--NeoZng【neozng1@hnu.edu.cn】
如果觉得笔者写得还不错,点个赞加个关注吧!
Transformer是NLP领域的基础架构,也即是前述的自注意力机制加上Encoder-Decorder的结构,这相当于CV领域的CNN架构。这里我们不会从最原始的ViT开始,而是直接介绍FAIR退出的DERT模型和其改进版的可形变注意力版本,因为这是在公开数据集上基于transformer的模型第一次拥有了获得超过CNN-based的模型的表现。
不过由于自注意力模块的架构不同于CNN,这导致基本无法使用现有的硬件(如google的npu和nvidia的nn-core与部分cuda-core)和软件(例如针对3x3conv优化的winograd加速算法)对其性能进行优化。而且拥有相同精度的transformer模型的参数量和计算量往往远超CNN,因此目前对于我们而言,很难将其部署在边缘平台上,在RoboMaster中也没有太大的舞台,故这里对ViT只是进行尽量完整的介绍以便读者能够了解学术界的前沿。
请注意,学习ViT需要一些auto-encoder和自注意力模块的基本知识,这在之前介绍vision attention机制的时候已经提到这一点,有了前述基础,相信你理解ViT也并不会遇到太多的困难,我们可以将vision transformer看作将所有的CNN都替换为自注意力,卷积是一种特殊的自注意力操作(局部),而自注意力又可以看成广义的卷积(kernel和padding都等于图像大小的卷积,并且使用循环padding,即将图像复制并平铺在原图的四周)。
笔者的另一篇文章详细介绍了transformer模型(也就是增强的自注意力):占位符,还有一篇介绍auto Encoder-Decoder模型的总览性的文章:占位符
-
DETR(DEtection TRsformer)
DETR是facebook AI research lab(现在已经叫MetaAI了)发布的一个端到端的检测器,它将目标检测作为一个集合预测的问题,因为它限定了transformer的输出个数和Decoder的输入。端到端的设计使DETR也实现了真正的nms-free,它只会输出限定数量的预测框和其对应的类别。

DETR的检测pipeline DETR没有太过极端(同时也是为了减小运算量),它仍然采用CNN作为backbone提取特征,之后将其输出序列化并加上位置编码,投入标准的transformer encoder-decoder架构中,最后输出100个prediction box和class(固定100个输出,若途中没有那么多目标就输出no object,即空集)。在CNN之后的结构和最早的ViT并没有什么不同,关键是DETR优化了损失函数和正样本匹配方法,将正样本和预测框进行全局二分匹配以找到最优的标签分配,从而实现上述的端到端方法。
我们直接顺着pipeline,按照结构顺序来分析DETR:

本文概述了Transformer在NLP中的基础架构,重点介绍了DETR和DeformableDETR在目标检测领域的突破,包括DETR的端到端检测方法和Deformable注意力的引入,以降低计算成本。DETR利用自注意力机制进行全局匹配,而DeformableDETR通过学习可形变注意力减少计算复杂度,适合边缘部署。
最低0.47元/天 解锁文章
1244

被折叠的 条评论
为什么被折叠?



