BEV感知系列
文章平均质量分 82
介绍transfomer/detr/bev等相关网络,知识点和源码实现
Attention is all you
关于博客任何问题尽管询问,交流也可以。技术就是在碰撞中不断累计的。
展开
-
从零理解轻量化隐式bev transformer网络WidthFormer原理和源码1-极坐标的3D位置编码
WidthFormer是一种轻量级且易于部署的BEV变换方法,它使用单层transformer解码器来计算BEV表示。除此之外,还提出了参考位置编码(RefPE),这是一种新的用于3D对象检测的位置编码机制,以辅助WidthFormer的视图转换,重点来啦!它还可以用于以即插即用的方式提高稀疏3D检测器的性能。原创 2024-07-17 10:37:46 · 451 阅读 · 0 评论 -
transfomer中attention为什么要除以根号d_k
得到矩阵 Q, K, V之后就可以计算出 Self-Attention 的输出了,计算的公式如下:Attention(Q,K,V)=Softmax(QKTdk)VAttention(Q,K,V)=Softmax(\frac{QK^T}{\sqrt{d_k}})VAttention(Q,K,V)=Softmax(dkQKT)V除以维度的开方,可以将数据向0方向集中,使得经过softmax后的梯度更大.从数学上分析,可以使得QK的分布和Q/K保持一致,对于两个独立的正态分布而言,两者的加法的期望和原创 2024-06-01 16:37:47 · 1372 阅读 · 0 评论 -
DETR类型检测网络实验2---优化测试
Anchor-DETR提出用预定义的参考点生成query_pos;原创 2024-05-05 10:30:00 · 355 阅读 · 0 评论 -
DETR类型检测网络---思考和Tricks测试
中,query_pos(query_embed):预设的shape为(n,embed_dim),query:预设的shape为(n,embed_dim),reference_point:利用query_pos线性映射为shape(n,3)中是预设的query_pos shape为(n,embed_dim), 而query=zeros.shape为(n,embed_dim)query_pos(query_embed):利用reference_point线性映射为shape(n,embed_dim)原创 2024-05-04 16:56:41 · 812 阅读 · 0 评论 -
DN-DETR的原理和源码解读
known_query如果跨组提取了对应的box信息也等于给了gt的先验,不利于噪声学习.因次设置att_mask,防止以上两种干扰.2.decoder的自注意力,ori_query如果提取到known_query信息等于给了gt的先验,不利于模型学习.3:每一张图的gt数量不一致,那么cat(query,known_query)数量不一致,无法batch训练.最后的query_pos=[b,lmax+l_ori,dim],为什么不搞个mask标记补充的000。解决方法:老一套,少的图补零.原创 2024-04-30 22:25:08 · 266 阅读 · 0 评论 -
Conditional-DETR的原理和源码解读
在cross_att时候,内容信息和位置信息解偶qcontentqpos∗kcontentkposT改成catqcqp∗catkckpT首先,把特征侧和目标侧分为内容信息(content)和位置(content)把query分为q_content和q_pos,更好理解query.对应于我之前说的query和query_pos.qc∗kcTqp∗kpT。原创 2024-04-08 12:16:00 · 1086 阅读 · 1 评论 -
目标检测中的mAP计算原理和源码实现
在目标检测任务中,mAP(mean Average Precision,平均精度均值)是一个非常重要的评价指标,用于衡量模型在多个类别上的平均性能。它综合考虑了模型在不同召回率下的精确率,能够全面反映模型在检测任务中的表现。综合性评估:mAP能够综合考虑模型在不同召回率下的精确率,避免了单一指标(如准确率或召回率)可能带来的片面性。多类别比较:对于多类别的目标检测任务,mAP可以计算每个类别的AP,然后取平均值得到全局的mAP,从而方便比较模型在不同类别上的性能。原创 2024-03-24 18:58:19 · 1070 阅读 · 0 评论 -
DeformableAttention的原理解读和源码实现
多尺度特征图尺寸记录:spatial_shapes:([[180, 180],[ 90, 90],[ 45, 45],[ 23, 23]])sampling_locations原本为采样点位置,范围为[0,1),为了适应F.grid_sample采样函数的用法,调整为[-1,1)分布,意思是,900个query在特征图(32,level_h,level_w)中各采样4个点,采样结果为900个对应的4个通道为32的像素特征.reshape为正常图像torch.Size([b*8,32,180,180]原创 2024-03-17 15:06:50 · 2912 阅读 · 1 评论 -
DETR3d原理和源码解读
不同于LSS、BEVDepth的bottom-up式,先进行深度估计,设计2D转3D的模块。DETR3D是一种3D转2D的top-down思路。先预设一系列预测框的查询向量object querys,利用它们生成3D reference point,将这些3D reference point 利用相机参数转换矩阵,投影回2D图像坐标,并根据他们在图像的位置去找到对应的图像特征,用图像特征和object querys做cross-attention,不断refine object querys。原创 2024-03-04 10:36:25 · 2029 阅读 · 2 评论 -
Vision Transfomer系列第二节---Tricks测试
这种重叠可以提高图像块之间的信息交互,可能会影响模型的性能和效果。实验可知,适当的head_num可以提高模型的拟合能力,但是不是越多越好,需要根据任务的复杂情况和embeding维度去调整.本处实验其实效果不明显,可能是任务过于简单的原因.卷积核大小是20,stride取16,padding取2,输入为224x224时,输出也为14x14,但是相邻图像块之间有2圈像素的交集.block作为transfomer类模型的核心组件,block的重复次数是一个超参数,直接影响到模型的深度和表达能力.原创 2024-02-20 14:19:00 · 1184 阅读 · 1 评论 -
Vision Transfomer系列第二节---复现过程的Bugs记录
1.transfomer模型的训练收敛速度确实很慢,一个分类就需要训练好很多个epoch (花分类45epochs左右)2.所以说看懂原理和代码还是远远不够的,复现起来还是有很多细节需要注意的,确实是纸上学来终觉浅,绝知此事要躬行。原创 2024-02-06 00:09:57 · 898 阅读 · 0 评论 -
Vision Transfomer系列第一节---从0到1的源码实现
vit是视觉transfomer最经典的模型,复现一次代码十分有必要,中间会产生很多思考和问题.后面章节将会更有价值,我将会:1.利用本次的代码进行很多思考和trick的验证2.总结本次代码的BUG们,及其产生的原理和解决方法如需获取全套代码请参考。原创 2024-02-04 20:51:56 · 1003 阅读 · 0 评论 -
iou的cpu和gpu源码实现
IoU(Intersection over Union)是一种测量在特定数据集中检测相应物体准确度的一个标准,通常用于目标检测中预测框(bounding box)之间准确度的一个度量(预测框和实际目标框)。IoU计算的是“预测的边框”和“真实的边框”的交叠率,即它们的交集和并集的比值。最理想情况是完全重叠,即比值为1。IoU的计算方法如下:计算两个框的交集面积,即两个框的左、上、右、下四个点的交集。计算两个框的并集面积,即两个框的左、上、右、下四个点的并集。原创 2024-01-23 23:44:14 · 595 阅读 · 0 评论 -
transfomer中正余弦位置编码的源码实现
Transformer模型抛弃了RNN、CNN作为序列学习的基本模型。循环神经网络本身就是一种顺序结构,天生就包含了词在序列中的位置信息。当抛弃循环神经网络结构,完全采用Attention取而代之,这些词序信息就会丢失,模型就没有办法知道每个词在句子中的相对和绝对的位置信息。因此,有必要把词序信号加到词向量上帮助模型学习这些信息,位置编码(Positional Encoding)就是用来解决这种问题的方法。关于位置编码更多介绍参考的。原创 2024-01-17 10:00:00 · 565 阅读 · 0 评论 -
Note-transfomer的位置编码
在transformer的encoder和decoder的输入层中,使用了Positional Encoding,使得最终的输入满足:这里,input_embedding的shape为[n,b,embed_dim],positional_encoding和input_embedding形状一致.原创 2024-01-16 23:57:30 · 1075 阅读 · 0 评论 -
transfomer中Decoder和Encoder的base_layer的源码实现
Encoder和Decoder共同组成transfomer,分别对应图中左右浅绿色框内的部分.Encoder:目的:将输入的特征图转换为一系列自注意力的输出。工作原理:首先,通过卷积神经网络(CNN)提取输入图像的特征。然后,这些特征通过一系列自注意力的变换层进行处理,每个变换层都会将特征映射进行编码并产生一个新的特征映射。这个过程旨在捕捉图像中的空间和通道依赖关系。作用:通过处理输入特征,提取图像特征并进行自注意力操作,为后续的目标检测任务提供必要的特征信息。原创 2024-01-16 00:30:04 · 1222 阅读 · 1 评论 -
transfomer中Multi-Head Attention的源码实现
Multi-Head Attention是一种注意力机制,是transfomer的核心机制.Multi-Head Attention的原理是通过将模型分为多个头,形成多个子空间,让模型关注不同方面的信息。每个头独立进行注意力运算,得到一个注意力权重矩阵。输出的结果再通过线性变换和拼接操作组合在一起。这样可以提高模型的表示能力和泛化性能。在Multi-Head Attention中,每个头的权重矩阵是随机初始化生成的,并在训练过程中通过梯度下降等优化算法进行更新。原创 2024-01-14 11:34:14 · 712 阅读 · 1 评论