3D Object Detection Essay Reading 2024.04.01
Swin Transformer
- paper: https://arxiv.org/abs/2103.14030 (ICCV 2021)
- code:https://github.com/microsoft/Swin-Transformer/blob/2622619f70760b60a42b996f5fcbe7c9d2e7ca57/models/swin_transformer.py#L458
- 学习链接:
- https://blog.csdn.net/qq_37541097/article/details/121119988
- https://zhuanlan.zhihu.com/p/626820422 (Multi-Head-Attention的作用到底是什么?)

- 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
\]
公式中的B就是就是Relative Position Bias,论文中的消融实验验证了其能带来明显的提升。
MSwin
- paper:https://arxiv.org/abs/2203.10638 (ECCV 2022)
- code:https://github.com/DerrickXuNu/v2x-vit/blob/main/v2xvit/models/sub_modules/mswin.py

- MSwin把Swin的串行结构改成了并行,最后用了一个Split-Attention融合了所有分支的特征
- MSwin论文中指出不需要用SW-MSA,可达到更大的空间交互(猜测是因为并行的设计?)
Deformable Attention
paper:https://openaccess.thecvf.com/content/CVPR2022/html/Xia_Vision_Transformer_With_Deformable_Attention_CVPR_2022_paper.html (CVPR 2022)


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

输入特征图(假设shape = 1, 256, 48, 176)经过一个卷积层生成查询矩阵q。
q通过一个offset network生成偏移量offset(shape = 1, 2, 46, 174),重新排列维度(shape = 1, 46, 174, 2)。
生成reference points(shape = 1, 46, 174, 2)。
将reference points和offset相加,得到最终的偏移量pos。
通过bilinear interpolation,输入pos,输出x_sampled(shape = 1, 256, 46, 174)。
由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的更多相关文章
- 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection
题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- 《Stereo R-CNN based 3D Object Detection for Autonomous Driving》论文解读
论文链接:https://arxiv.org/pdf/1902.09738v2.pdf 这两个月忙着做实验 博客都有些荒废了,写篇用于3D检测的论文解读吧,有理解错误的地方,烦请有心人指正). 博客原 ...
- 中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 摘要 最先进的目标检测网络依靠区域提出算法 ...
- (转)Awesome Object Detection
Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...
- 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 ...
- ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测 STD: Sparse-to-Dense 3D Object Detector for Point Cloud 论文链 ...
- 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现(一)[超详细教程] ubuntu16.04版本
谷歌宣布开源其内部使用的 TensorFlow Object Detection API 物体识别系统.本教程针对ubuntu16.04系统,快速搭建环境以及实现视频物体识别系统功能. 本节首先介绍安 ...
- Paper Reading: Relation Networks for Object Detection
Relation Networks for Object Detection笔记 写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...
- 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 ...
随机推荐
- QT - Day 5
1 event事件 用途:用于事件的分发 也可以做拦截操作,不建议 bool event( QEvent * e); 返回值 如果是true 代表用户处理这个事件,不向下分发了 e->ty ...
- ROS2 humble交叉编译环境配置
目录 配置 toolchain文件: 库文件 交叉编译指令: 问题点: 1.find_package找不到自定义依赖包的问题 2.libarmadillo.so.10: undefined refer ...
- render_to_string快捷函数,渲染模板字符串
# views.py from django.template.loader import render_to_string from django.http import HttpResponse ...
- 【LeetCode贪心#02】摆动序列,麻了
摆动序列 力扣题目链接(opens new window) 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动 ...
- 【LeetCode链表#12】链表相交
链表相交 同:160.链表相交 力扣题目链接(opens new window) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返 ...
- 【Azure Developer】使用 Azure PowerShell 执行 Azure 表存储操作时遇见的4个问题
要使用PowerShell操作Azure的表存储,需要经过以下步骤: 1:必须安装 Az 和 AzTable 模块.安装命令为: #安装 Az 模块 Install-Module -Name Az - ...
- Nebula Graph 源码解读系列 | Vol.02 详解 Validator
整体架构 Nebula Graph Query Engine 主要分为四个模块,分别是 Parser.Validator.Optimizer 和 Executor. Parser 完成对语句的词法语法 ...
- 为Oracle链接服务器使用分布式事务
1 现象 在SQL Server中创建指向Oracle的链接服务器,SQL语句在事务中向链接服务器插入数据.返回链接服务器无法启动分布式事务的报错. 2 解决 在Windows平台下,SQL Serv ...
- Mac上LLAMA2大语言模型安装到使用
LLAMA介绍 LLaMA是由Facebook的母公司Meta AI设计的一个新的大型语言模型.LLaMA拥有70亿到650亿个参数的模型集合,是目前最全面的语言模型之一. Llama是目前唯一一个可 ...
- K8s中Role(ClusterRole)资源类型rules字段详解
在Kubernetes(K8s)中,Role资源类型的rules字段用于定义哪些操作(verbs)可以在哪些资源(resources)上执行.Role是一种命名空间级别的资源,它允许你对命名空间内的资 ...