基于transformer的目标检测算法学习记录

彭祥. 彭祥.     2023-03-10     145

关键词:

前言

本文主要通过阅读相关论文了解当前Transformer在目标检测领域的应用与发展。
谷歌在 ICLR2020 上提出的 ViT(Vision Transformer)是将 Transformer 应用在视觉领域的先驱。从此,打开了Transformer进入CV领域的桥梁,NLP与CV几有大一统之趋势。

俗语云:万事开头难,尽管Transformer在CV领域的研究仍处于开始阶段,但伴随着研究者们夜以继日,前仆后继的不断深入,Transformer在CV领域的研究已经颇有成效,尤其是目标检测领域,随着2020 年 Carion 等人提出了一种新型的 Transformer 目 标检测框架DETR(Detection Transformer),为 Transformer 在目标检测任务中的应用奠定了重要的基础,后续出现了大量基于 DETR 的改进算法。

今天我们便围绕着Transformer在目标检测领域的研究工作展开学习。

Transformer 与 CNN 相结合

CNN 是基于临近像素具有较大相似性这一假设而形成的归纳偏置,局部性是它的典型特征,而Transformer 则对特征进行全局交互,因此,二者特征学习的方式和特征编码的内容有较大的差异。换言之,CNN侧重于局部特征的获取,而Transformer则在全局特征表达桑颇具心得。
因此,将 Transformer 和 CNN 相结合是提高模型特征提取能力的有效手段,下面从结构融合、特征融合和机理融合三个层面介绍 Transformer 和 CNN 结合的方法。

结构融合

旨在通过对多个模块进行有效的组合形成新的网络结构。

MobileViT将 Transformer 视为一个模块,集成到卷积神经网络中,使模型同时具备局部性和全局性。

MPViT采用多路并行的 Encoder 和卷积实现全局特征和局部特征的共享,达到了 SOTA 性能。

特征融合

该方式从特征层面入手,一般采用并行分支结构,融合 CNN 和 Transformer 提取到的特
征来增强特征表达能力。
Peng 等人(2021)提出的Conformer模型设计了并行的 CNN 和 Transformer分支,采用桥接模块实现特征融合。将 Conformer 作为 Backbone,在 COCO 上的 mAP 达到了 44.9%。

DeiT 结合知识蒸馏的思想,通过将 CNN 学习到的特征引入到 Transformer的训练过程中,实现两种特征的融合。

机理融合

结构融合与特征融合通过串行或并行的方式实现 Transformer 与 CNN 的结合,但注意力
机制和卷积仍然是不同的两个部分,没有充分的利用它们之间的相关性,而机理融合通过深入挖掘二者之间的内在联系,合理的集成注意力和卷积。

ACmix深入分析了自注意力与卷积特征提取机理的相似性,通过共享特征映射参数实现自注意力和卷积的机理融合,ACmix 同时具有局部性和全局性,在迁移至目标检测任务中时,在 COCO 上的 mAP 达到了 51.1%。

小结

Transformer 骨干网络通过自注意力编码图像全局特征,为检测器提供了高质量中间特征,其全局建模能力是 CNN 所不具备的。

但其仍存在许多问题:

  1. Transformer骨干的研究尚处于起步阶段,仍然存在计算量大、丢失细节信息等问题,目前,针对这些问题的改进主要围绕注意力机制展开,如:通过限制注意力作用范围以及下采样输入序列来降低计算量;通过解耦注意力机制来避免因合并操作丢失细节信息。此外,对Transformer 多尺度特征的设计和利用也是解决信息丢失的重要方法。
  2. 虽然 Transformer骨干提高了各种检测器的性能,但 CNN 的局部信息提取能力同样是 Transformer所欠缺的,并且在小样本训练时 CNN 更具优势,因此,Transformer 和 CNN相结合是研究的趋势,除了结构融合和特征融合这种较为直观的结合方式,进一步探究注意力和卷积的特征提取机制,挖掘其中的相似性,在机理层面实现二者的融合也取得了很好的效果。

预处理层

预处理层的主要功能包括数据增强和特征预学习。其中,数据增强通过引入多种变换在原训练集的基础上生成更多虚假样本,丰富了样本的多样性,有助于提高模型的泛化能力和检测性能;特征预学习通过 CNN 对原始输入图片做初步的特征提取,在增强特征的同时降低了后续编码器模块的输入分辨率,减少了计算量。

序列化层

序列化层的主要功能为:将图像输入划分为词向量序列并进行位置编码。一般的序列划分方式在输入的全局范围内进行划分,序列中的全部词向量通过注意力机制进行直接的交互,而以 Swin Transformer 为代表的窗口机制则是一种局部方式,位于同一窗口或组别中的词向量可在后续层中进行局部的交互;由于Transformer 缺乏位置感知能力,所以通过位置编码为模型显式的添加位置信息,位置编码方式主要分为绝对位置编码和相对位置编码,绝对位置编码只考虑了词向量在序列中的位置信息,相对位置编码则考虑了序列中词向量对之间的相对位置关系。

编码器层

一般采用标准 Transformer 编码器结构,通过注意力机制对序列化特征进行交互。自注意力机制通过计算词向量之间的相关性得到注意力分布,基于注意力分布实现特征的加权聚合。该层是特征学习环节的重要组成部分。

采样层

采样层主要负责特征重构以及特征采样和合并。其中,如果后续检测层沿用了基于 CNN 的目标检测模型的检测网络,则需要将序列特征重构为空间特征图,再将其馈入到检测网络中。特征的采样和合并主要有两方面的功能:减少序列中的词向量个数,从而减少计算量以及处理 Transformer 层级特征,例如配合FPN等多尺度特征融合技术或 ResNet残差链接思想进一步的增强和利用层级特征。

检测层

检测层旨在根据多个尺度的特征对图像中目标的位置和类别信息进行处理和预测。检测层的实现方式主要有两类:第一类,传统的基于 CNN 的目标检测模型的检测网络。第二类,基于解码器结构的目标估计,如 DETR 中的目标查询机制,通过目标查询向量与图像特征进行交互,抽取潜在的目标位置信息和类别信息,然后采用全连接网络预测目标信息,形成检
测结果。

计算机视觉算法——基于transformer的目标检测(detr/deformabledetr/detr3d)(代码片段)

计算机视觉算法——基于Transformer的目标检测(DETR/DeformableDETR/DETR3D)计算机视觉算法——基于Transformer的目标检测(DETR/DeformableDETR/DETR3D)1.DETR1.1TransformerEncoder-Decoder1.2Set-to-SetLoss1.3PositionalEmbedding2.DeformableDETR2.1Defor... 查看详情

4.基于深度学习的目标检测算法的综述(转)

4.基于深度学习的目标检测算法的综述(转)原文链接:https://www.cnblogs.com/zyly/p/9250195.html目录一相关研究1、选择性搜索(SelectiveSearch)2、OverFeat二、基于区域提名的方法1、R-CNN 2、SPP-Net3、FastR-CNN4、FasterR-CNN5、R-FCN 三端对端的... 查看详情

基于深度学习的目标检测算法综述

基于深度学习的目标检测算法综述(一)基于深度学习的目标检测算法综述(二)基于深度学习的目标检测算法综述(三)本文内容原创,作者:美图云视觉技术部检测团队,转载请注明出处目... 查看详情

基于深度学习的目标检测

基于深度学习的目标检测普通的深度学习监督算法主要用来做分类,分类的目标是要识别出图中所示是一只猫。而在ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)竞赛以及实际的应用中,还包括目标定位和目标检测等任务。其中目... 查看详情

基于深度学习的目标检测

普通的深度学习监督算法主要是用来做分类,如图1(1)所示,分类的目标是要识别出图中所示是一只猫。而在ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)竞赛以及实际的应用中,还包括目标定位和目标检测等任务。其中目标定位是... 查看详情

基于二轴云台目标跟踪系统设计

...跟踪控制 PID算法及改进串口通讯协议前言文本简述一个基于二轴云台的目标跟踪系统的设计思路,并在之后会实践记录 查看详情

目标检测算法是啥?

...向量机、神经网络、AdaptiveBoosting5、运动矢量场法,包含基于运动矢量场的方法参考技术A目标检测算法是计算机视觉领域的一种重要技术,它能够自动地从图像或视频中检测出特定的目标,并给出它们在图像中的位置和大小等信... 查看详情

基于区域的二阶段算法思想和理解综述

基于区域的二阶段算法思想和理解综述待办昨天待办decriptiondecription摘要:图像目标检测是图像处理领域的基础。自从2012年CNN的崛起,深度学习在Detection的持续发力,为这个领域带来了变革式的发展。深度学习出现之前,传统... 查看详情

带你读ai论文:基于transformer的直线段检测

摘要:本文提出了一种基于Transformer的端到端的线段检测模型。采用多尺度的Encoder/Decoder算法,可以得到比较准确的线端点坐标。作者直接用预测的线段端点和Groundtruth的端点的距离作为目标函数,可以更好的对线段... 查看详情

[ai开发]基于深度学习的视频多目标跟踪实现

据我目前了解掌握,多目标跟踪大概有两种方式:Option1基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪。这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出现了新的物体... 查看详情

从零开始学习目标检测:yolo算法详解(代码片段)

...详解1.🌟什么是目标检测?2.🌟传统的目标检测与基于深度学习的目标检测3.🌟目标检测算法的工作流程4.🌟目标检测可以干什么?5.🌟什么是YOLO在过去的十年中,深度学习技术的发展引起了极大的关... 查看详情

目标检测

传统算法:  1.基于boosting:LBP/HOG/...  2.基于SVM:HOG/SIFT+SVM,DPM基于深度学习的方法:  1.基于region:fasterrcnn  2.基于回归:YOLO/SSD  3.Maskrcnn 查看详情

计算机视觉框架openmmlab开源学习:目标检测基础

...;   单阶段目标检测算法     无锚框目标检测算法  Transformer方法:三、MMDetection介绍:    总结:本系列第四篇文章主要介绍目标检测知识,介绍单阶段与双阶段算法发展,并学习目标检测模型,了... 查看详情

目标检测tph-yolov5:基于transformer的改进yolov5的无人机目标检测(代码片段)

简介最近在使用VisDrone作为目标检测任务的数据集,看到了这个TPH-YOLOv5这个模型在VisDrone2021testset-challenge数据集上的检测效果排到了第五,mAP达到39.18%。于是开始阅读它的论文,并跑一跑的它的代码。论文地址:ht... 查看详情

《南溪的目标检测学习笔记》——模型预处理的学习笔记

1介绍在目标检测任务中,模型预处理分为两个步骤:图像预处理:基于图像处理算法数值预处理:基于机器学习理论关于图像预处理,请参考《南溪的目标检测学习笔记》——图像预处理的学习笔记 查看详情

自动驾驶中的深度学习模型量化部署加速实战

...案例、目标检测、语义分割、实例分割、车道线检测以及Transformer等。大家可以参考以下的链接进行学习和指正。#模型部署#1.ResNet50基于TensorRTFP16生成Engnie文件的C++工程ResNet50基于TensorRTFP16 查看详情

自动驾驶中的深度学习模型量化部署加速实战

...案例、目标检测、语义分割、实例分割、车道线检测以及Transformer等。大家可以参考以下的链接进行学习和指正。#模型部署#1.ResNet50基于TensorRTFP16生成Engnie文件的C++工程ResNet50基于TensorRTFP16 查看详情

深度学习算法数据-网络-算法总结

...构进行汇总,同时也包含轻量化CNNBackbone以及轻量化Transformer模型等高性能模型;3目标检测该部分主要是对Anchor-based、Anchor-free、One- 查看详情