全新范式

2023-11-18

在本文中提出了一种简单的注意力机制Box-Attention。它支持网格特征之间的空间交互(从感兴趣的Box中采样),并提高了Transformer针对多个视觉任务的学习能力。

具体来说,介绍的BoxeR,即Box Transformer的缩写,它通过预测输入特征图上的参考窗口的转换来处理一组Box。BoxeR通过考虑它的网格结构来计算这些Box上的注意力权重。值得注意的是,BoxeR-2D在其注意力模块中自然地对Box信息进行推理,使其适合于端到端实例检测和分割任务。通过学习box-attention模块中的旋转不变性,BoxeR-3D能够从鸟瞰平面生成判别信息,用于三维端到端目标检测。
图片
实验表明,提出的BoxeR-2D在COCO检测上取得了更好的结果,在COCO实例分割上达到了与完善且高度优化的Mask R-CNN相当的性能。BoxeR-3D在没有任何特定类别的优化的情况下,已经在Waymo Open的车辆类别中获得不错的结果。

1简介

对于目标检测、实例分割、图像分类和许多其他当前的计算机视觉挑战,一个带有Multi-Head Self-Attention的Transformer可能是所有任务都需要的。Transformer在自然语言处理中取得成功后,学习远程特征依赖在计算机视觉中也被证明是一种有效的策略。

令人惊讶的是,现有的Vision Transformer中没有明确地考虑视觉形态的内在规律性。重要的是,图像特征的矢量化方式与语言Token完全相同,导致像素之间的局部连通性丧失。传统的Transformer一旦输入了足够的数据,可能可以弥补这种空间结构的损失;

在本文中,作者更倾向于通过设计使Transformer具备空间图像感知能力。最近的研究表明,归纳偏差在自然语言处理和计算机视觉中都是至关重要的,在图像识别和物体检测方面的领先工作都利用了“空间信息”。此外,强而有效的归纳偏置可以使模型更快地收敛和更好地推广。

一种解决方案是使用位置编码来丰富图像特征,在特征层显式地编码位置信息。当将Multi-Head Self-Attention应用于视觉任务时,这已经是常见的做法。Carion和Zhu将绝对2D位置转换,Ramachandran将相对2D位置编码为矢量,并将其求和为注意力计算中的图像特征。

然而,这种方法只能作为图像特征的数据增强。它要求网络在权值内隐式地推断空间信息,由于网络结构中缺乏空间意识,导致在训练时收敛速度较慢。众所周知,网络架构中的归纳偏向提供了强大的学习能力,这已经被著名的架构如卷积神经网络和长短期记忆所证明。

假设在Transformer的注意力模块中可以设计出一个更好的空间感应偏差,那么便可以更好地学习图像特征的表示。

基于这一观察,本文的主要贡献如下:

  1. 提出的使用Transformer进行端到端视觉表示学习的Box-Attention机制。它不使用感兴趣区域内的图像特征,而是将一组表示网格结构中相对位置的可学习嵌入作为注意力计算的Key向量;

  2. 提出了BoxeR-2D,是Box TransformeR的缩写,它能够在端到端物体检测和实例分割任务中更好地预测;

  3. 将BoxeR-2D和Box-Attention扩展到BoxeR-3D中,以解决端到端3D物体检测,而不需要3D-iou计算、Anchor point和对象中心的Heatmap(如图1所示)。

图片

2相关工作研究

2.1 Attention for Vision Backbones

随着注意机制的发展,在卷积网络中产生和使用注意力的方法有多种。最近在Vision Transformer研究显示,仅使用注意力的网络在图像识别方面也可以实现不错的性能,并且在更多数据和更长的训练时间的情况下优于卷积神经网络。

随着高分辨率图像使ViT在计算上变得更加昂贵,而仅产生单尺度特征地图,一些研究集中于加快Self-Attention计算和生成用于目标检测和分割的多尺度特征地图。在本文中转而关注预测模块,它将从视觉Backbone中提取的特征作为输入,并对多个视觉任务进行预测。

2.2 Attention for Object Detection

Two-Stage目标检测方法(如,Faster R-CNN)利用区域提议网络(RPN)和一个预测模块在预训练的Backbone上预测一组预定义的目标。在一些研究中引入注意力机制作为RPN和预测模块的补充,以进一步提高性能。

One-Stage目标检测方法删除了RPN,直接从卷积特征映射中预测目标。虽然检测性能得到了显著提高,但这些基于卷积的架构仍然依赖于许多手工设计的组件。

最近,Carion等人介绍了一个基于Transformer的预测模型,称为DETR,它以端到端的方式给出预测结果。Zhu等人指出图像特征的Self-Attention收敛速度慢,计算成本高,引入了Multi-Head Deformable Attention,将注意力计算中的点积替换为采样点的两个线性投影,计算它们的注意力权重。在提高收敛速度和精度的同时,参考点周围的采样位置策略使其无法有效地捕获目标的大小和位置等信息。由于图像特征映射上的采样点被分离,模块不知道参与区域的局部连通性。

BoxeR紧密遵循Carion等人所提出的端对端目标检测的总体框架,但在其核心上不同,它使用了空间先验和Multi-Head Attention。而Box-Attention是受到标准的Multi-Head Attention和卷积操作的启发,这两种操作都被证明可以学习鲁棒的图像表示。Box-Attention仅通过预测框的中心和大小来考虑框区域,这是更有效的,并允许模型可以提取预测区域内的结构化信息。

2.3 Attention for Instance Segmentation

需要一种处理实例分割的方法来定位对象并同时分割属于该对象的像素。受目标检测的启发,早期的研究在第一阶段预测了segment proposals;然后在第二阶段对segment proposals进行分类。

何凯明等人提出在多任务设置中同时训练目标检测和实例分割,以提高两个任务的性能。与从同一组特征(即ResNet特征)预测边界框和Mask的分割模型不同,DETR依赖于Transformer特征进行目标检测,并依赖于通过Transformer的注意力图增强的ResNet特征进行分割。这将导致特征信息的不匹配,因为这两个任务高度相关。

本文引入Box-Attention,在单一BoxeR-2D架构中,Box-Attention可以自然地扩展到目标检测和实例分割。

2.4 Attention for 3D Object Detection

三维目标检测的主要挑战是如何处理鸟瞰图特征中的旋转包围框。许多方法通过生成不同角度的Anchor作为object proposals,然后进行分类和回归,从而适应Faster R-CNN。

由于基于Anchor的方法产生大量的重叠proposals,这需要针对每个类调整NMS,而Anchor-Free方法侧重于预测场景中目标中心的Heatmap。虽然减少了重叠proposals的数量,但与基于Anchor相比,预测Heatmap会导致先验信息的丢失,并且仍然依赖于NMS来过滤object proposals。

也有方法也采用了具有Self-Attention的Transformer进行三维目标检测。不幸的是,它们和传统的检测器存在同样的问题,因为它们的方法需要根据以前的方法进行初始目标预测。

Misra等人最近的工作介绍了3DETR用于室内三维物体检测。该方法对点云上由最远点采样算法生成的目标query在编码器和解码器中都利用了Self-Attention。

相反,BoxeR提出了一个在室外场景中端到端3D物体检测的解决方案,它只需要简单地使用鸟瞰特征来预测物体,而不需要NMS或3D旋转IoU。BoxeR的目标query由编码器特性上的object proposals模块简单生成,不需要复杂的初始化方法。

3Box-Attention

Box-attention也是一种Multi-Head Attention,用于关注图像特征图中感兴趣的Box。为此,它在每个Box内采样一个网格,并从网格结构中计算采样特征的注意力权重,使该模块易于推广到 2D 或 3D 对象检测和实例分割。在每个注意力计算Head中,通过预测一个预定义参考窗口的几何变换(如平移、缩放和旋转)生成一个感兴趣的框。Box-attention的设计允许网络以合理的计算成本关注图像特征的动态区域。

3.1 Multi-Head Attention

首先简要概述Transformer中的标准Multi-Head Attention。1个注意力头的Multi-Head Attention通过计算Key向量K对应的Value特征V的加权平均向量生成Query(Q)的输出特征:

图片

Self-Attention 模块利用特征Q和K之间的点积在每个Head计算一个注意力图,而这个计算量会随矩阵大小增长呈二次增长。

图片

其中是一个Head的key特征的尺寸。

3.2 Multi-Head Box-Attention

BOX-Attention采用式(1)中的Multi-Head Attention计算,具有多个Head的相同特征聚合和一个可学习的投影矩阵 。在注意力计算阶段,给定第 个注意力头中query向量 的一个兴趣 box,Box-Attention使用双线性插值从 中提取尺寸为的网格特征图 ,如下图所示。利用双线性插值计算网格特征的精确值,减少了Box-Attention在box回归和像素分割中的量化误差。

图片

这与Deformable Attention不同,Deformable Attention预测在捕获目标信息时导致模糊的非结构化点。相反,BOX-Attention继承了RoI-Align的精神,即精确采样感兴趣区域内的网格结构(即BBox proposal),以获得准确的像素级信息,这对于像素级精确Mask来说非常重要。

在第 个attention的计算,网格特性映射 为一组对应query 的value。然后通过计算q和m×m可学习key向量之间的点积生成m×m注意力分数(其中每个向量代表网格结构中的一个相对位置),然后进行softmax运算。

因此,在各个query中共享相同的key集。通过将作为采样网格的相对位置嵌入,box-attention可以有效地捕获区域的空间信息。在实现中,注意力图的生成可以通过一个简单的线性投影()有效地执行,该投影相当于带有可学习key向量的点积。最后的是中向量的注意力权重加权平均值。

图片

多尺度特征图在目标检测和实例分割两方面带来了巨大的改进。而Box-attention可以简单地扩展到多尺度功能。给定一个注意力头中query向量q的一组方框,每个方框都属于t个多尺度特征图,从每个方框中采样一个特征网格,得到。注意力分数的计算方法与可学习key向量相同,其中每个向量表示t网格结构中的一个相对位置,然后进行softmax归一化。特征现在是t个mm向量在中的加权平均值,如式(3)所示。

3.3 Multi-Head Instance-Attention

Multi-Head Instance-Attention是Multi-Head Box-Attention的简单扩展,没有任何额外参数。目标是从感兴趣的Box中生成一个精确的Mask,用于实例分割。在第i个注意头中,产生两个输出,用于目标检测,用于实例分割。

当对中的特征加权平均以创建时,在的第一个维度(包含多尺度特征的数量)中折叠。为此,使用softmax函数对注意力得分的第一个维度进行标准化,然后将其应用于。注意,在生成和时,共享注意力模块的所有参数,包括可学习投影矩阵。

3.4 Where-to-attend

“Where-to-attend”是Box-Attention的一个关键组成部分,它指的是在注意力计算中预测感兴趣的框的操作。具体来说,该模块学习了通过简单的几何变换,如平移、缩放等,将特征图上query的参考窗口转换为参与区域(见图3)。

图片

具体来说,用, 分别表示其中心位置,是归一化坐标下窗口的宽度和高度。平移函数以和为输入进行平移,输出如下:

图片

其中和是相对于参考窗口中心的偏移量。类似地,缩放函数接受相同的输入并调整的大小。

图片

其中和为参考窗口大小的偏移量。为了提高效率,偏移参数(即)是通过上的线性投影来预测的。在个头部和个多尺度特征图的multi-head attention设置中,使用变换函数,每个函数为第个头部和第个特征图预测一个感兴趣的Box 。

Where-to-attend是转换的组合,并允许box-attention 使用少量参数和低计算开销有效地关注必要的区域。它也可以被看作是一个伪预测步骤,因为它提供网络空间信息来预测注意力模块内的一个感兴趣的区域。

4BoxeR-2D:A Box Transformer

为了证明方法的有效性提出了BoxeR,一个基于Transformer具有box-attention结构的网络。

图片

如图4所示,BoxeR由一个编码器和一个解码器组成,编码器用于编码从Backbone中提取的多尺度特征图,而解码器用于预测实例边界框和像素Mask。本文方法遵循端到端目标检测框架(即DETR)的精神,减少了手工制作模块的需求,如NMS和Anchor。

4.1 BoxeR编码器

与Transformer一样,每个BoxeR编码器层都包含box-attention和前馈层,每个子层后面都有一个带有残差连接的LayerNorm。

编码器将多尺度图像特征映射从ResNet Backbone的C3提取到C5(通过1x1卷积转换到隐藏维数)作为其输入。第t个feature map 是通过在最终的C5 feature上应用3x3卷积层,步长为2得到的。BoxeR编码器将多尺度输入转换为多尺度上下文表示。

注意,多尺度上下文表示与输入具有相同的分辨率。

在编码器中,Q和V都是来自多尺度特征图的特征。为每个query向量分配一个引用窗口,该窗口位于query空间位置的中心。在多尺度特征映射上,滑动窗口的大小为(t=4)(或在每个多尺度特征映射上有42个特征)。由于box-attention的平行注意头能够在每个特征级别隐式地捕捉多种长宽比的方框,作者发现没有必要有多种长宽比的参考窗口(见图5)。除了用位置嵌入增强每个query之外,还添加了Size嵌入,它表示对应于每个query的引用窗口的大小。Size嵌入在不同level的query向量之间是不同的。这两种嵌入都是标准化的,并使用正弦编码进行编码。

图片

由于两阶段网络表明了目标检测的显著改进,作者证明了BoxeR编码器能够产生高质量的目标建议作为解码器的输入。在object proposal阶段,来自最后一个编码器层的特征被送入预测头,以预测object proposal的参考窗口。

不把在object proposal阶段预测的边界框的正弦嵌入处理为对象query,而是简单地将分类得分最高的编码器特征(通过线性投影转换)作为解码器的输入特征。这为BoxeR解码器提供了更丰富的信息,因为编码器特性同时包含空间信息和上下文信息。在解码器中,将预测的边界框作为其相应建议的参考窗口。

4.2 BoxeR解码器

在每个BoxeR解码器层中,交叉注意子层是我们的多头实例注意,而Self-Attention和前馈子层保持不变。编码器提出的目标建议的特征是BoxeR解码器的输入。在这一阶段对目标建议的参考窗口进行了细化,以便给出准确的预测。

具体地说,用表示第个解码器层的输入。第个解码器层的输出和。这两个输出的前馈层是相同的。输出特征然后被解码为Box坐标和类标签,而用于生成实例Mask。遵循Mask R-CNN中的训练策略,用一个逐像素的sigmoid和一个binary 损失来预测实例Mask。

由于注意力模块中的“where-to-attend”模块基于参考窗口预测感兴趣区域,作者设计了检测头来预测一个边界框作为相对偏移,其参考窗口的大小和位置。在预测阶段,参考窗口作为对其对象提议特征的初步猜测。其他解码器层的辅助解码损失也是有效的。BoxeR解码器中的所有预测头共享它们的参数。论文发现没有必要在匈牙利匹配器中增加Mask成本,从而使训练更有效。

5BoxeR-3D: End-to-end 3D Object Detection

将box-attention和BoxeR扩展到点云输入,从而实现端到端三维物体检测。

5.1 Box-Attention for 3D Object Detection

除了在where-to-attend模块中平移和缩放外,还在鸟瞰平面中添加了旋转变换来模拟物体的角度。用表示q的参考窗口,其中表示其中心位置,为窗口的宽度和高度,为在归一化坐标中围绕其中心的旋转角度。最后的旋转函数预测窗口旋转角度的偏移量。然后在从采样的网格坐标上应用一个旋转矩阵:

图片

式中为参考角的偏置。同样,使用q上的线性投影来预测。

5.2 BoxeR for 3D Object Detection

为了更好地捕捉不同角度的目标,为BoxeR编码器特征的每个query向量分配了多角度的参考窗口。在每个滑动位置,基于二维目标检测设置,在每个角度的多尺度特征图上使用3个的参考窗口。每个注意力头将被分配一个角度的参考窗口。通过这样做,由box-attention生成的特征对于旋转预测是很强的(见图5)。在对象建议阶段,对于每个编码器特征,预测类别分数和三个建议的边界框,它们的三个角度的参考窗口。3D 匈牙利匹配器是在训练期间使用。

由于参考窗口的均匀分布,我们的系统中只嵌入了关于特定对象类的最小先验知识,例如车辆的典型尺寸。这不同于以前的方法[35,37,38,47],以前的方法对每个类别使用不同的Anchor size、Heatmap或Backbone。本文的网络还消除了手工制作模块的需要,如旋转非最大抑制或3D计算。

6实验

6.1 消融实验

1、Box-Attention vs. Alternatives

图片

首先在端到端目标检测中比较Box Attention、Self-Attention、Deformable-Attention和Dynamic-Attention。表1中的结果表明Box-Attention在所有指标上都有改进,小目标(APS)提升最高(1.5%)。此外,与其他注意力机制相比,Box-Attention需要更少的FLOPs。

作者还实验了Box-Attention没有采用参考窗口但不采用转换函数(平移和缩放)的where-to-attend模块。从表1中可以看出,where-to-attend模块在所有类别中的提升均超过2分。这表明转换和缩放在学习注意力相关区域方面的重要性。

2、BoxeR-2D Ablation

图片

由于BoxeR-2D在其编码器中使用多尺度参考窗口来预测object proposals,因此这些proposals在解码器中用作参考窗口。在表2a中,通过在解码器层中添加object proposals 细化来评估object proposals的质量。虽然这种改进在先前的工作中被证明是有益的,但可以观察到AP下降了1个百分点。这表明当BoxeR-2D编码器使用参考窗口生成object proposals时,它们足以让BoxeR-2D解码器预测proposals,而无需在每个步骤中进行细化(见图4)。

BoxeR-2D很灵活,因为可以轻松地将Instance-Attention插入其解码器,以预测目标位置及其Mask。表2b显示了BoxeR-2D从多任务训练(目标检测和实例分割)中获益。

3、BoxeR-3D Ablation

图片

在表3中删除BoxeR-3D设计对3D目标检测的有效性。表明了旋转变换在where-to-attend模块中的作用,它在所有类别中贡献了超过1分,但代价是很小的计算量。

具体来说,作者发现旋转变换在添加到解码器层中的box-attention时最有效。表3还显示了BoxeR-3D编码器层中多角度与单角度参考窗口之间的比较。使用多角度参考窗口对车辆和骑自行车者类别产生改进,同时对行人保持稳定。这表明多头注意力中的每个头都能够有效捕捉不同旋转角度的信息。

6.2 与SOTA方法对比

1、2D目标检测

图片

2、3D目标检测

图片

6.3 方法的局限性

在本文中,作者提出了一种基于Transformer的检测器,用于端到端的目标检测和实例分割,名为BoxeR。该网络的核心是box-attention,它旨在通过从初始参考窗口学习转换来关注图像区域。由于其灵活性,BoxeR可以执行2D和3D端到端目标检测以及实例分割,而无需手工制作模块。在COCO和Waymo Open数据集上的实验证实了所提出架构的有效性。

与其他基于Transformer的架构类似,与基于卷积的架构(如Faster R-CNN或Mask R-CNN)相比,在网络训练期间观察到更大的内存占用。这导致需要更先进的GPU和更高的能耗。此外,在相同的FLOPs下,box-attention比卷积算子慢。原因可能来自于box-attention中网格采样的无序内存访问以及传统卷积的高度优化的硬件和实现。作者希望通过发布具有更优化实现的代码来缓解其中的一些问题。

7参考

[1].BoxeR:Box-Attention for 2D and 3D Transformers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全新范式 的相关文章

  • 给定表面法线,找到 3D 平面的旋转

    所以我有一个由 2 个向量描述的 3D 平面 P 位于平面上的点N 平面的表面法线 我有一个非常大的扁平方形多边形 我想渲染它来代表这个平面 我可以轻松地将多边形平移到给定点 但随后我需要找到适当的旋转来应用以使表面法线实际上成为表面法线
  • CSS3“曲面”3D 变换/透视帮助

    我正在尝试为我的网站创建一种有观点的人群 它实际上是一个充满平面图像的 ul 我想创建一种 弯曲 的感觉 就像圆形的人群一样 它向内并且向内明显变小 并向末端弯曲 海报圈的例子是我能找到的最接近的http www webkit org bl
  • 求 3d 中 2 个任意立方体的交集

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 可点击的精灵标签?

    我一直在玩精灵文本标签 更具体地说是这个例子 http stemkoski github io Three js Sprite Text Labels html http stemkoski github io Three js Sprit
  • 一次性渲染阴影

    考虑到阴影投射的成本 我想知道对于动态定位的静态对象 例如 程序城市 是否有一个功能或可能 实验性的方法可以在 Three js 中仅渲染一次阴影贴图 甚至在 webgl 中 因此 结果可以在静态对象的下一帧中免费使用 仅当物体移动时才会进
  • 使用 ThreeJS 获取球体纹理上的点击位置

    目前 我有一个带有纹理的球体 它绕 y 轴旋转 我还有在 3D 空间中单击的位置 以及球体上的旋转位置 我认为 目标 获取纹理上的位置 例如 我想获取我点击的图像的哪个方块 参见示例球体和下图 在实践中 我不会使用此图像 但我觉得这将是一个
  • 自动适合衣服的算法?

    想象一下 客户要求您设计一款软件 以满足一些相当粗略的规格 如下所示 1 它将面向时尚行业营销 2 用户将是 设计衣服和东西 的人 可能有一个特定的术语 但我没有想到 3 由于各种原因 能够快速制作原型设计并查看它们在模型上的外观会很有用
  • C++ Irrlicht 程序未链接:“未定义对‘__imp_createDevice’的引用”

    我的 Irrlicht 程序无法链接 我使用的编译器是g Code include
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • 我应该如何格式化 .dat 文件以便制作 3D 矢量图?

    我正在为大学做这个编程任务 我们必须写一个c 计算 3D 空间中某些线圈的磁场矢量的程序 我已经成功编写了这个程序 并且我认为它运行得很好 不过 我想添加一个特殊的东西 这是我的试卷 所以它必须特别好 我想绘制出向量 我习惯打电话gnupl
  • 使用 Scipy/Numpy 在浊点的二维插值中仅获取“有效”点

    我有一个通过人的背部摄影测量获得的浊点 我正在尝试对其进行插值以获得规则网格 为此我正在使用scipy interpolate到目前为止取得了良好的成果 问题是 我正在使用的函数 scipy interpolate griddata 使用平
  • 简单模式7公式/例子?

    我最近发现了利用 SNES 模式 7 的伪 3D 效果 并想尝试在 Godot 引擎中复制它 我尝试在网上查找 但所有内容要么以我无法理解的方式解释 要么以我不知道的编程语言解释 我还需要学习如何旋转该区域 并将精灵作为角色或敌人放入 但我
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • 具有轴和角度的 3D 旋转

    我知道 3D 旋转在 SO 和许多其他网站上都有详细记录 但尽管阅读了无数的解释 我仍然没有弄清楚我哪里出错了 我的背景是艺术和设计 而不是数学和编程 而且我从来都不确定我的攻击角度 没有双关语 是否正确 我没有粘贴我那令人沮丧的代码的拼凑
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 在 Unity 中平滑动态生成的网格?

    给定 Unity 和 C 中的网格 其本身是通过合并更简单的基础网格实时创建的 我们如何在运行时 将其变成平滑的 几乎像包裹在布中的网格版本一样 不是完全凸出的版本 而是更圆润 软化锋利的边缘 桥接深间隙等 理想情况下 表面也将像 平滑角度
  • 3D 透视投影的剪辑矩阵

    我正在尝试创建一个简单的 3D 图形引擎 并找到并使用了我在这里找到的方程 http en wikipedia org wiki 3D projection cite note 0 http en wikipedia org wiki 3D

随机推荐

  • sql注入Less11-20

    Less 11 POST 1 先登录 在表格中输入admin admin 登录成功后为下图 2 在post data中输入以下 uname passwd 1 submit submit 返回的结果显示存在sql语法错误 证明存在注入漏洞 u
  • 修改别人代码的原则

    工作过程中难免会涉及到修改或维护别人写的代码 如 代码原作者请假 离职 或相关的bug落到了你的头上 或用别人写的通用方法不爽时 如果碰到修改别人的代码时 需要注意哪些事项呢 1 和原作者沟通 当用到了他人写的通用方法 又感觉不爽时 如果原
  • 各个版本chrome允许加载使用flash的方法

    根除办法 在html中嵌入标签 用户自动选择是否加载flash 69 0 之前的版本 1 打开 chrome settings content flash 2 禁止网站运行Flash gt 改为 Ask Default 3 允许 gt 添加
  • golang开发的准备 - gvm(go版本管理软件)的安装

    0 系统环境 ubuntu18 04 1 前置条件 sudo apt get install bison 2 安装步骤 1 从github下载安装包文件 git clone https github com moovweb gvm git
  • 【c++】14.编译proto和proto相关用法

    编译proto和proto相关用法 关于proto相关的知识可以参考系列博客 https blog csdn net daaikuaichuan category 9869251 html xx proto文件中如果要注释的话 注释符号也是
  • 【Kaggle】Stable Diffusion - Image to Prompts竞赛代码初步理解

    文章目录 一 前言 二 导包 三 加载预训练的 OFA 模型 四 模型EDA 五 Inference 六 安装并导入所有依赖项 七 设置配置 八 加载示例提交 九 Build index from images 十 CLIP interro
  • grep命令

    grep 全称是global regular expressions print 功能就是查找匹配模式的行 grep对文本内容的处理是以行为单位 输出也是输出匹配的行 也可以使用两个变种程序egrep和fgrep egrep与grep E相
  • linux下绑定任务到特定的CPU

    一 linux c查看cpu核 1 命令行查看cpu有几个核 cat proc cpuinfo grep processor wc l 或 nproc 2 linux c代码查看 include
  • 一文了解全面静态代码分析

    在开发具有安全性 可靠性和合规性的软件时 全面静态代码分析是一种有效的方法 在这里 我们将就静态分析而言 讨论全面静态代码分析的不同之处 阐述全面静态代码分析的重要性 以及如何进行全面静态代码分析 什么是全面静态代码分析 全面静态代码分析
  • 计算机行业应届生秋招春招究竟拼的是什么?

    计算机行业是被行外人神话的行业 也是被行内人吐槽的行业 2020年中国高校IT行业毕业生达到了将近70万人 这是什么概念 这样的情况下应届生的顺利就业将会是很大的问题 也就是说几十计算机行业的人才需求很大 也将面临着很大一部分毕业生找不到工
  • iOS系统语音识别

    iOS10语音识别框架Speech 项目中用到语音识别功能 这里简单的进行了一下封装 大概实现了系统语音识别的功能 还没测试 应该会有很多坑 语音识别功能封装 系统的语音识别 外部语音输入 实现语音转文字功能 项目地址 https gith
  • Tello无人机飞控(Python)程序设计

    Tello无人机飞控 Python 程序设计总结 1 py飞控库介绍 tello的几个不同的飞控库有什么区别吗 用哪个好些 Tello的几个不同飞控库主要是针对Python开发者提供的控制无人机的工具包 它们各有特点和使用方式 以下是对一些
  • 闪回版本查询+闪回版本查询案例1+闪回版本查询案例2

    闪回版本查询 闪回版本查询提供了一个审计 检查行改变的查询功能 通过它可以查找到 所有已经提交了的行记录 语法 select column name column name from table name versions between
  • 5G智慧交通白皮书 附下载地址

    智慧交通是人民对美好生活的向往之一 智慧交通从安全 效率 节能等方面改善人民的出行体验 无人驾驶的发展和普及进一步改变人们的生活方式 智慧交通业务丰富 面对不同的应用场景 需要专属的解决方案 网络联接 实时通信是智慧交通的基础 5G 赋能智
  • 围棋:一间低夹

    一间低夹 搜索结果 哔哩哔哩 Bilibili 1 复杂的新版一间高夹 第一集 复杂的新版一间高夹 第一集 哔哩哔哩 bilibili 2 复杂的新版一间高夹 第二集 复杂的新版一间高夹 第二集 哔哩哔哩 bilibili 3 复杂的新版一
  • java的六大框架_常用的java开发框架介绍 (初学者必备的六大框架)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 常用的java开发框架java作为主流的开发语言之一其框架的使用也是非常广泛的 java到javaee部分全部是在以框架来开发 因为框架可以大大节约时间以及成本 那么java中常用的主流框架都有
  • Freetype编译

    编译freetype步骤 1 解压包freetype 2 10 0 tar 2 cd freetype 2 10 0 3 cd builds unix 4 chmod 777 configure 创建一个文件夹 media private
  • java8特性:Stream高效操作数组集合

    简介 Stream 作为 java8 的新特性 基于 lambda 表达式 是对集合对象功能的增强 它专注于对集合对象进行各种高效 便利的聚合操作或者大批量的数据操作 提高了编程效率和代码可读性 Stream 的原理 将要处理的元素看做一种
  • 通讯录管理系统C语言链表实现

    本程序采用链表的方式可以实现对于通讯录信息的管理操作主要有增 删 改 查 显示全部信息 退出六个功能 代码注释都有逻辑简单易懂适合初学者进行链表的学习 代码如下 include
  • 全新范式

    在本文中提出了一种简单的注意力机制Box Attention 它支持网格特征之间的空间交互 从感兴趣的Box中采样 并提高了Transformer针对多个视觉任务的学习能力 具体来说 介绍的BoxeR 即Box Transformer的缩写