Swin Transformer

  1. paper: https://arxiv.org/abs/2103.14030 (ICCV 2021)
  2. code:https://github.com/microsoft/Swin-Transformer/blob/2622619f70760b60a42b996f5fcbe7c9d2e7ca57/models/swin_transformer.py#L458
  3. 学习链接:

  • Patch Partition

​ 对图片进行分块,相邻的4x4的像素为一个Patch,然后在每个Patch中,把每个像素在通道方向展平,堆叠到一起。特征图形状从[H, W, 3]变成了[H/4, W/4, 48]。

  • Linear Embedding

​ 对每个像素的通道数据进行线性变换。特征图形状从[H/4, W/4, 48]变成了 [H/4, W/4, C]。

  • Swin Transformer Block

    • Windows Multi-head Self-Attention(W-MSA)

      为了减少计算量,对特征图按照MXM大小划分成一个个window,单独对每个windo内部进行self-attention。

    • Shifted Windows Multi-Head Self-Attention(SW-MSA)

      W-MSA无法在window与window之间进行信息传递,为了解决这个问题,SW-MSA对偏移的windows内部在进行self-attention。这里用到了masked MSA来防止不同windows中的信息乱窜。

  • Patch Merging

​ 对特征图进行下采样,H和W都缩小2倍,C增加2倍。Patch Merging会将每个2x2的相邻像素划分为一个patch,然后将每个patch中相同位置的像素给拼在一起就得到了4个feature map。接着将这四个feature map在深度方向进行concat拼接,然后在通过一个LayerNorm层。最后通过一个全连接层在feature map的深度方向做线性变化,将feature map的深度由C变成C/2。

  • Relative Position Bias
\[\text{Self-Attention}(X) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}} + B \right) V
\]

​ 公式中的B就是就是Relative Position Bias,论文中的消融实验验证了其能带来明显的提升。

MSwin

  1. paper:https://arxiv.org/abs/2203.10638 (ECCV 2022)
  2. code:https://github.com/DerrickXuNu/v2x-vit/blob/main/v2xvit/models/sub_modules/mswin.py

  • MSwin把Swin的串行结构改成了并行,最后用了一个Split-Attention融合了所有分支的特征
  • MSwin论文中指出不需要用SW-MSA,可达到更大的空间交互(猜测是因为并行的设计?)

Deformable Attention

  1. paper:https://openaccess.thecvf.com/content/CVPR2022/html/Xia_Vision_Transformer_With_Deformable_Attention_CVPR_2022_paper.html (CVPR 2022)

  2. code:https://github.com/LeapLabTHU/DAT

​ DAT和普通的attention的区别就是,DAT可以汇聚一个自适应的可变感受野信息,一方面可以提高效率,防止无关信息的干扰(相比ViT),另一方面可以使得注意模块更加灵活,有效应对多尺度物体的情况(相比Swin)。

  1. 输入特征图(假设shape = 1, 256, 48, 176)经过一个卷积层生成查询矩阵q。

  2. q通过一个offset network生成偏移量offset(shape = 1, 2, 46, 174),重新排列维度(shape = 1, 46, 174, 2)。

  3. 生成reference points(shape = 1, 46, 174, 2)。

  4. 将reference points和offset相加,得到最终的偏移量pos。

  5. 通过bilinear interpolation,输入pos,输出x_sampled(shape = 1, 256, 46, 174)。

  6. 由x_sampled生成矩阵k和v。

    input = torch.rand(1, 256, 48, 176)
dtype, device = input.dtype, input.device q = self.proj_q(x) # b c h w # 生成偏移量
offset = conv_offset(q) # torch.Size([1, 2, 46, 174])
offset_range = torch.tensor([1.0 / (46 - 1.0), 1.0 / (174 - 1.0)]).reshape(1, 2, 1, 1)
# 用 tanh 预定义缩放因子防止偏移量变得太大
offset = offset.tanh().mul(offset_range).mul(2) # torch.Size([1, 2, 46, 174])
offset = einops.rearrange(offset, 'b p h w -> b h w p') # torch.Size([1, 46, 174, 2]) # 生成参考点,最后归一化到[-1,+1]的范围
reference = _get_ref_points(46, 174, 1, dtype, device) # torch.Size([1, 46, 174, 2]) pos = offset + reference # torch.Size([1, 256, 46, 174])
x_sampled = F.grid_sample(
input=input,
grid=pos[..., (1, 0)], # y, x -> x, y
mode='bilinear', align_corners=True) # B, C, Hg, Wg

MSwin + Deformable Attention

???

3D Object Detection Essay Reading 2024.04.01的更多相关文章

  1. 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection

    题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...

  2. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  3. 《Stereo R-CNN based 3D Object Detection for Autonomous Driving》论文解读

    论文链接:https://arxiv.org/pdf/1902.09738v2.pdf 这两个月忙着做实验 博客都有些荒废了,写篇用于3D检测的论文解读吧,有理解错误的地方,烦请有心人指正). 博客原 ...

  4. 中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 摘要 最先进的目标检测网络依靠区域提出算法 ...

  5. (转)Awesome Object Detection

    Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...

  6. Viola–Jones object detection framework--Rapid Object Detection using a Boosted Cascade of Simple Features中文翻译 及 matlab实现(见文末链接)

    ACCEPTED CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION 2001 Rapid Object Detection using a B ...

  7. ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测

    ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测 STD: Sparse-to-Dense 3D Object Detector for Point Cloud 论文链 ...

  8. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现(一)[超详细教程] ubuntu16.04版本

    谷歌宣布开源其内部使用的 TensorFlow Object Detection API 物体识别系统.本教程针对ubuntu16.04系统,快速搭建环境以及实现视频物体识别系统功能. 本节首先介绍安 ...

  9. Paper Reading: Relation Networks for Object Detection

    Relation Networks for Object Detection笔记  写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...

  10. Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection

    Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11  19:47:46   CVPR 20 ...

随机推荐

  1. win32 - WaitForMultipleObjects的使用

    创建5个线程,并无限期地打印某些内容 #include <Windows.h> #include <stdio.h> DWORD IDs[5]; DWORD WINAPI Th ...

  2. win32-LPCSTR->String

    #include <string> void makebox(LPCSTR name) { std::string res(name); res += " is X"; ...

  3. cookie和localStorage和sessionStorage的区别

    cookie和localStorage和sessionStorage的区别 下面从几个方向区分一下 cookie,localStorage,sessionStorage 的区别 生命周期: cooki ...

  4. Java JVM——6.本地方法接口

    本地方法接口 什么是本地方法? 简单地讲,一个 Native Method 就是一个Java调用非Java代码的接囗.一个 Native Method 是这样一个Java方法:该方法的实现由非Java ...

  5. JVM运行时参数

    JVM运行时参数 JVM运行时参数是用于配置和调整Java虚拟机的行为和性能的参数.这些参数可以在启动Java应用程序时通过命令行或配置文件进行设置,合理配置参数可以使JVM虚拟机的达到更好的性能,降 ...

  6. 数仓的等待视图中,为什么会有Hashjoin-nestloop

    本文分享自华为云社区<GaussDB(DWS)等待视图之Hashjoin-nestloop>,作者:Arrow0lf. 1. 业务场景 众所周知,GaussDB(DWS)中有3种常见的jo ...

  7. 矩池云 | GPU 分布式使用教程之 Pytorch

    GPU 分布式使用教程之 Pytorch Pytorch 官方推荐使用 DistributedDataParallel(DDP) 模块来实现单机多卡和多机多卡分布式计算.DDP 模块涉及了一些新概念, ...

  8. Program type already present: com.xxx

    该错误是由于工程中存在着相同的类导致(包名与类名都相同),有可能是不同的依赖中有着相同的类,全局搜索该类便可得知

  9. 【2024面试刷题】一、Spring Cloud 面试题

    1.什么是 Spring Cloud? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如 服务发现注册.配置中心.智能路 ...

  10. liunx 设置默认python版本方法,

    Linux 中把Python3设为默认Python版本的几种方法 由于工作中要用到到python3.6  而服务器是2.7 ,这个低版本的2.7很多系统都要依赖,还不能删,同事建议建一个虚拟环境,但是 ...