【精选】论文总结

论文总结

原文链接:论文总结 | Karl的博客 (karltan.com)

CSDN链接:【精选】论文总结-CSDN博客

2023

PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

原文链接:论文笔记《PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes》 | Karl的博客

CSDN链接:论文笔记《PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes》-CSDN博客

主要贡献

  1. 提出了PoseCNN;
  2. PoseCNN通过定位目标中心和预测中心距离来估计3D平移;
  3. 引入了两个损失函数,PoseLossShapeMatch-Loss,其中ShapeMatch-Loss设计用于处理对称对象,从而让PoseCNN具有处理对称对象的能力;
  4. 提出了一个YCB数据集。

方法

  1. 为输入图像中的每个像素预测一个对象标签,做语义分割;

  2. 然后对于图像中的某一个对象,网络为图像中的每一个像素 p = ( x , y ) T \mathbf{p} = (x, y)^\mathrm{T} p=(x,y)T回归到三个变量(这里顺便回归出了未被遮挡像素的深度,因为物体中心可能被遮挡,所以不能直接回归物体中心的深度):
    ( x , y ) → ( n x = c x − x ∥ c − p ∥ , n y = c y − y ∥ c − p ∥ , T z ) (x, y) \to \left(n_x = \frac{c_x - x}{\Vert\mathbf{c} - \mathbf{p}\Vert}, n_y = \frac{c_y - y}{\Vert\mathbf{c} - \mathbf{p}\Vert}, T_z\right) (x,y)(nx=cpcxx,ny=cpcyy,Tz)
    然后结合语义分割的结果,对于某个对象,它首先计算图像中每个位置的投票分数。投票分数表明该位置是该对象中心的可能性有多大(如果该对象在图像中多次出现,那么使用非极大值预测,然后选择分数大于某一阈值的位置),在这一步能够得到物体的中心;

  3. 中心得到后,中心的深度可计算为该类像素的平均深度(这是为了解决中心被遮挡的问题),得到深度后,根据公式可得到3D平移;

  4. 使用PoseLossShapeMatch-Loss估计3D旋转,其中:

    • PoseLoss表达式为:
      PLOSS ( q ~ , q ) = 1 2 m ∑ x ∈ M ∥ R ( q ~ ) x − R ( q ) x ∥ 2 \text{PLOSS}(\tilde{\mathbf{q}}, \mathbf{q}) = \frac{1}{2m}\sum_{\mathbf{x} \in \mathcal{M}}\Vert R(\tilde{\mathbf{q}})\mathbf{x} - R(\mathbf{q})\mathbf{x}\Vert^2 PLOSS(q~,q)=2m1xMR(q~)xR(q)x2
      可以看到,这是直接计算对应点之间的平均平方距离

    • ShapeMatch-Loss表达式为:
      SLOSS ( q ~ , q ) = 1 2 m ∑ x 1 ∈ M min ⁡ x 2 ∈ M ∥ R ( q ~ ) x 1 − R ( q ) x 2 ∥ 2 \text{SLOSS}(\tilde{\mathbf{q}}, \mathbf{q}) = \frac{1}{2m}\sum_{\mathbf{x}_1 \in \mathcal{M}}\min_{\mathbf{x}_2 \in \mathcal{M}}\Vert R(\tilde{\mathbf{q}})\mathbf{x}_1 - R(\mathbf{q})\mathbf{x}_2\Vert^2 SLOSS(q~,q)=2m1x1Mx2MminR(q~)x1R(q)x22
      可以看到,这里计算的不是对应点,而是为某个点选取了一个最近点进行计算,能够一定程度上解决对称物体的旋转问题

  5. 至此,3D平移和3D旋转估计结束。

备注

  • 此文章中的方法是实例级的
  • 只能估计那些已知的对象,即你需要知道待估计物体的CAD模型,不然你不知道物体的正面是哪里,也不知道大小
  • 在网络的训练过程中不需要使用深度信息,但是在最后的ICP阶段,如果能够使用深度信息,在精度上会有大幅提升

Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation

原文链接:论文笔记《Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation》 | Karl的博客

CSDN链接:论文笔记《Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation》-CSDN博客

主要贡献

  1. 可为未见过的对象实例做类别级的6D姿态和尺寸估计;
  2. 提出了Normalized Object Coordinate Space(NOCS),将各个对象归一化到一个标准的空间中;
  3. 提出了一个CNN来得到NOCS。

方法

  1. 该CNN建立在基于区域的Mask R-CNN框架上,而Mask R-CNN框架又建立在Faster R-CNN框架上;
    • Mask R-CNN框架由两个模块组成:
      • 一个模块提出可能包含对象的区域
      • 一个检测和分类区域内的对象
      • 还能做语义分割
    • 那么这一步可以得到类标签和语义分割
  2. 在Mask R-CNN的基础上,还加入了3个头部结构,用于预测NOCS的 x , y , z x, y, z x,y,z分量,从而得到物体的NOCS坐标;
  3. 使用语义分割的结果和RGB-D相机的深度信息,得到被检测对象的点云信息 P m P_m Pm(这个是真实拍摄出来的);
  4. 使用NOCS映射,也得到一个点云信息 P n P_n Pn,这个点云应该是在原点处的;
  5. 最后,根据上面的两个点云信息 P m P_m Pm P n P_n Pn,我们可以计算出如何从 P n P_n Pn变换到 P m P_m Pm,从而得到缩放,旋转和平移。

备注

  • 此文章中的方法是类别级的
  • 可以估计那些未知的对象
  • 全过程不需要CAD模型

POPE: 6-DoF Promptable Pose Estimation of Any Object, in Any Scene, with One Reference

原文链接:论文笔记《POPE:6-DoF Promptable Pose Estimation of Any Object, in Any Scene, with One Reference》 | Karl的博客

CSDN链接:论文笔记《POPE:6-DoF Promptable Pose Estimation of Any Object, in Any Scene, with One Reference》-CSDN博客

主要贡献:

  1. 提出了可提示的目标位姿估计(Propmtable Object Pose Estimation, POPE),旨在估计野外场景下目标的相对位姿,没有对对象类别的假设,只使用一个参考图像;
  2. 提出了一种6DoF位姿基础模型,即POPE,该模型无缝地集成了预训练的基础模型和3D几何原理,用于高质量的分割、分层对象检索和鲁棒图像匹配,以实现在不同和不受控制的环境中进行精确的目标位姿估计。

方法:

  1. 先使用SAM(Segment-Anything Model)在支持图(我要找的)和目标图(在这里找)上做语义分割;

  2. 语义分割结束后,在支持图上会生成一个掩码,在目标图上会生成 M \mathcal{M} M M \mathcal{M} M中会有 K K K个掩码: M = { m 1 , m 2 , ⋯   , m K } \mathcal{M} = \{m^1, m^2, \cdots, m^K\} M={m1,m2,,mK}。将支持图记为 I P I_P IP,目标图集合记为 I T K I_T^K ITK

  3. 利用掩码的CLS token计算 I P I_P IP I T K I_T^K ITK之间的余弦相似度矩阵,它揭示了提示图像 I P I_P IP和集合 I T K I_T^K ITK中的第 k k k个掩模图像之间的对象关系,通过找到矩阵中的最高分数,我们可以在两个视图中检索同一对象的匹配图像(为了准确度,这里没有使用这种方法计算掩码之间的匹配);

  4. 利用DINO-v2生成的Top-K提案,降序排列相似性分数,然后选出最匹配的一对,实现掩码匹配;

  5. 利用LoFTR在匹配的掩码上进行2D特征点匹配;

  6. 得到特征点后,然后用双目相机模型估计深度,但是只能估计相对深度:

    【精选】双目视觉原理(万字总结,包含Halcon代码)_双目视觉测量 halcon_happylife_mini的博客-CSDN博客

    深度 Z Z Z的计算公式为:
    Z = f b x L − x R Z = \frac{fb}{x_L - x_R} Z=xLxRfb
    其中:

    • f f f为相机焦距(这里假设双目相机两个目的焦距是相同的)
    • b b b是两个相机投影中心连线的距离,也称基线
    • x L x_L xL是左相机成像点到左成像面的距离
    • x R x_R xR是右相机成像点到左成像面的距离

    由于 b b b是未知的,所以估计出的深度为相对深度;

  7. 得到深度后,也就得到了2D-3D点的匹配,然后利用PnP算法,就可以计算相对位移和绝对旋转(PnP计算旋转时, b b b会消掉)。

备注:

  • 只能估计相对位姿
  • 没有使用深度信息
  • 模型较大
  • 首次实现了Any Scene, Any Objects

2024

Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations

原文链接:论文笔记《Triton:An Intermediate Language and Compiler for Tiled Neural Network Computations》 | Karl的博客 (karltan.com)

CSDN链接:论文笔记《Triton:An Intermediate Language and Compiler for Tiled Neural Network Computations》-CSDN博客

主要贡献:

我们提出了Triton,一种以图块(tile)概念为中心的语言和编译器,即静态形状的多维子数组。我们的方法围绕:

  1. 基于C语言和基于LLVM的中间表示(IR),用于根据参数图块变量的操作来表达张量程序;
  2. 以及一组新颖的图块级优化过程,用于将这些程序编译成高效的GPU代码。

我们将演示如何使用Triton来构建矩阵乘法和卷积核的可移植实现,与手工调优的供应商库(cuBLAS/cuDNN)相当,或者高效地实现最近的研究想法,如移位卷积。

方法:

  • Triton-C(第3节):一种类似C的语言,用于根据参数图块变量表达张量程序。该语言的目的是为现有的DNN转编译器(例如PlaidML、Tensor Compressive)和熟悉CUDA的程序员提供稳定的接口。Listing 1显示了与简单矩阵乘法任务相关的Triton-C源代码。
  • Triton-IR(第4节):基于LLVM的中间表示(IR),提供适合切片级程序分析、转换和优化的环境。Listing 5显示了修正线性单元(ReLU)函数的Triton-IR代码。这里,Triton-IR程序是在解析过程中直接从Triton-C构建的,但未来也可以探索从嵌入式DSL或更高级别的DNN编译器(例如TVM)自动生成。
  • Triton-JIT(第5节):即时(Just-In-Time, JIT)编译器和代码生成后端,用于将Triton-IR程序编译为高效的LLVM位代码。这包括:
    1. 一组图块级、独立于机器的通道,旨在独立于任何编译目标简化输入计算内核;
    2. 一组图块级机器相关通道,用于生成高效的GPU就绪LLVM-IR;
    3. 一个自动调节器,用于优化与上述过程相关的任何元参数。
  • Numerical Experiments(第6节):对Triton的数值评估证明了它的能力:
    1. 在循环神经网络和Transformer上生成与cuBLAS相当的矩阵乘法实现,并且比替代的DSL快3倍;
    2. 重新实现了cuDNN中用于密集卷积的IMPLICIT_GEMM算法,而不损失性能;
    3. 创建新颖的研究思想的有效实现,例如shift-conv[47]模块。

本文将以对现有相关文献的简要分析作为序言(第2节),并以总结和未来工作方向作为总结(第7节)。

备注:

暂无备注。

Attention Is All You Need

原文链接:论文笔记《Attention Is All You Need》 | Karl的博客 (karltan.com)

CSDN链接:论文笔记《Attention Is All You Need》-CSDN博客

主要贡献:

  1. 提出了Transformer,完全摈弃了RNN和CNN;
  2. 完全基于注意力机制来绘制输入和输出之间的全局依赖关系;
  3. 可以并行进行训练,使得训练速度大大加快。

方法:

  • Embedding(第3.4节):
    • 进行单词Embedding,这是NLP的基本操作。
  • Positional Encoding(第3.5节):
    • 对输入进行位置Encoding,因为Transformer本身不采用RNN的结构,而是使用全局信息,所以不能利用单词的顺序信息,而这部分信息对NLP来说很重要,所以Transformer中使用位置Encoding保存单词在序列中的相对或绝对信息。
  • Encoder(第3.1节):
    • Encoder Block的结构大致为:“多头注意力-残差连接-层归一化-全连接-ReLU-全连接-残差连接-层归一化”,而Encoder是由6个这样的结构堆叠而成的。
  • Decoder(第3.1节):
    • Decoder Block的输入来源于两部分,一部分是输入文本,还有一部分是Encoder的输出。对于输入文本来说,经过“Masked多头注意力-残差连接-层归一化”结构后,会作为 Q Q Q,输入到一个类似于Encoder的结构中。而对于Encoder的输出来说,会作为 K K K V V V,直接输入到这个类似于Encoder的结构中。
  • Attention(第3.2节):
    • Scaled Dot-Product Attention(第3.2.1节):
      • 在注意力机制中, Q Q Q会先和 K K K进行矩阵乘法,然后经过缩放、Mask(可选)和SoftMax操作后,再和 V V V进行矩阵乘法。
    • Multi-Head Attention(第3.2.2节):
      • 多头注意力是多个注意力机制组合而成的,多头注意力会对同一个输入执行多次注意力机制的计算,会得到多个结果,然后会将这些结果进行拼接,最后传给一个线性层,得到多头注意力的结果。
  • Position-wise Feed-Forward Networks(第3.3节):
    • 就是简单的“全连接-ReLU-全连接”的结构。

备注:

  1. Transformer本身不能利用单词的顺序信息,因此需要加入Embedding层,否则Transformer会变成一个词袋模型;
  2. Transformer的重点是Self-Attention结构,其中用到的 Q , K , V Q, K, V Q,K,V矩阵是由输入 X X X分别和 W Q W^Q WQ W K W^K WK W V W^V WV进行矩阵乘法得到的。

NOPE: Novel Object Pose Estimation from a Single Image

原文链接:论文笔记《NOPE:Novel Object Pose Estimation from a Single Image》 | Karl的博客

CSDN链接:论文笔记《NOPE: Novel Object Pose Estimation from a Single Image》-CSDN博客

主要贡献:

提出了NOPE,该方法在已知对象一张图片的情况下,将对象的单个新图像作为输入,并在不事先了解对象的3D模型的情况下预测该对象在新图像中的相对位姿,并且不需要对新对象和新类别进行训练。

方法:

在每次训练迭代时,构建一个由 N N N对图像组成的批,每一对图像由参考图像已知相对位姿的另一图像组成。

  1. 计算两张图像的嵌入;
  2. 使用MLP计算另一图像位姿的嵌入;
  3. 将参考图像的嵌入和相对位姿的嵌入输入到U-Net中,U-Net会用这两个输入来预测另一图像的嵌入;
  4. 在U-Net和MLP训练结束后,可以开始预测新图像的嵌入,给定一个参考图像 I r \mathbf{I}_\mathrm{r} Ir N N N个相对位姿 P = ( Δ R 1 , Δ R 2 , ⋯   , Δ R N ) \mathcal{P} = (\Delta R_1, \Delta R_2, \cdots, \Delta R_N) P=(ΔR1,ΔR2,,ΔRN),可以得到对应的 N N N个图像的嵌入 ( e 1 , e 2 , ⋯   , e N ) (\mathbf{e}_1, \mathbf{e}_2, \cdots, \mathbf{e}_N) (e1,e2,,eN)
  5. 最后,输入查询图像,在生成的候选结果中执行最近邻搜索,输出最好的结果。

备注:

暂无备注。

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

原文链接:论文笔记《ConvNeXt V2:Co-designing and Scaling ConvNets with Masked Autoencoders》 | Karl的博客

CSDN链接:论文笔记《ConvNeXt V2:Co-designing and Scaling ConvNets with Masked Autoencoders》-CSDN博客

主要贡献:

提出了一个全卷积掩码自编码器框架和一个新的全局响应归一化(GRN)层,该层可以添加到ConvNeXt架构中以增强信道间特征竞争。这种自监督学习技术和架构改进的共同设计产生了一个名为ConvNeXt V2的新模型家族,它显著提高了纯ConvNets在各种识别基准上的性能,包括ImageNet分类、COCO检测和ADE20K分割。我们还提供了各种大小的预训练ConvNeXt V2模型,从在ImageNet上具有76.7% top-1精度的高效3.7 M参数Atto模型,到仅使用公共训练数据即可实现最先进的88.9%精度的650M Huge模型。

方法:

  • Fully Convolutional Masked Autoencoder(第3节):

    该框架在输入时会随机掩蔽输入中的一部分,且框架的任务是预测出被掩蔽的部分;

    将被掩蔽的图像看作二维稀疏的像素数组,从而使用稀疏卷积促进自编码器的预训练;

    使用普通的ConvNeXt作为解码器,因为实验表明这种做法效果更好。

  • Global Response Normalization(第4节):

    作者首先在特征空间中对使用FCMAE预训练的ConvNeXt-Base模型进行了分析,发现有很多特征图要么过于饱和,要么是死的,即对特征提取没有帮助。

    为了解决这个问题,作者提出了GRN,包括如下三个步骤:

    1. 全局特征聚合;
    2. 特征归一化;
    3. 特征校准。

    实际的GRN块非常容易实现,最后将GRN合并到原来的ConvNeXt中。

备注:

暂无备注。

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

原文链接:论文笔记《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》 | Karl的博客

CSDN链接:论文笔记《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》-CSDN博客

网络结构图

image-20240416090340705

主要贡献

提出了ViT,使Transformer能够应用于图像。

方法

  1. 将维度为 x ∈ R H × W × C \mathbf{x} \in \mathbb{R}^{H \times W \times C} xRH×W×C的图像重塑为一系列平坦的2D patch x p ∈ R N × ( P 2 ⋅ C ) \mathbf{x}_p \in \mathbb{R}^{N \times (P^2 \cdot C)} xpRN×(P2C),其中 ( H , W ) (H, W) (H,W)为原始图像的分辨率, C C C为通道数, ( P , P ) (P, P) (P,P)为每个图像patch的分辨率, N = H W P 2 N = \frac{HW}{P^2} N=P2HW为得到的patch数,它也作为Transformer的有效输入序列长度;

  2. 使用下面的计算方式将patch展平并映射到 D D D维:
    z 0 = [ x class ;   x p 1 E ;   x p 2 E ;   ⋯   ;   x p N E ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D ,   E p o s ∈ R ( N + 1 ) × D \mathbf{z}_0 = \left[\mathbf{x}_\text{class};\ \mathbf{x}_p^1\mathbf{E};\ \mathbf{x}_p^2\mathbf{E};\ \cdots;\ \mathbf{x}_p^N\mathbf{E}\right] + \mathbf{E}_{pos}, \quad \mathbf{E} \in \mathbb{R}^{(P^2 \cdot C) \times D},\ \mathbf{E}_{pos} \in \mathbb{R}^{(N + 1) \times D} z0=[xclass; xp1E; xp2E; ; xpNE]+Epos,ER(P2C)×D, EposR(N+1)×D
    我们将该投影的输出称为patch embedding;

  3. 在嵌入的patch序列( z 0 0 = x class \mathbf{z}_0^0 = \mathbf{x}_\text{class} z00=xclass)上添加一个可学习的嵌入,其在Transformer编码器( z L 0 \mathbf{z}_L^0 zL0)输出处的状态作为图像表示 y \mathbf{y} y
    y = LN ( z L 0 ) \mathbf{y} = \text{LN}(\mathbf{z}_L^0) y=LN(zL0)
    在预训练和微调过程中, z L 0 \mathbf{z}_L^0 zL0都附加了一个分类头。分类头在预训练时由一个隐藏层的MLP实现,在微调时由一个线性层实现;

  4. 然后应用Transformer编码器:
    z ℓ ′ = MSA ( LN ( z ℓ − 1 ) ) + z ℓ − 1 ℓ = 1 … L z ℓ = MSA ( LN ( z ℓ ′ ) ) + z ℓ ′ ℓ = 1 … L \begin{aligned} \mathbf{z}^\prime_\ell &= \text{MSA}(\text{LN}(\mathbf{z}_{\ell - 1})) + \mathbf{z}_{\ell - 1} & & \ell = 1 \dots L \\ \mathbf{z}_\ell &= \text{MSA}(\text{LN}(\mathbf{z}^\prime_\ell)) + \mathbf{z}^\prime_\ell & & \ell = 1 \dots L \end{aligned} zz=MSA(LN(z1))+z1=MSA(LN(z))+z=1L=1L

  5. 最后的计算流程为:
    z 0 = [ x class ;   x p 1 E ;   x p 2 E ; ⋯   ;   x p N E ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D z ℓ ′ = MSA ( LN ( z ℓ − 1 ) ) + z ℓ − 1 , ℓ = 1 … L z ℓ = MLP ( LN ( z ℓ ′ ) ) + z ℓ ′ , ℓ = 1 … L y = LN ( z L 0 ) \begin{aligned} \mathbf{z}_0 &= \left[\mathbf{x}_\text{class};\ \mathbf{x}_p^1\mathbf{E};\ \mathbf{x}_p^2\mathbf{E};\cdots\ ;\ \mathbf{x}_p^N\mathbf{E}\right] + \mathbf{E}_{pos}, & & \mathbf{E} \in \mathbb{R}^{(P^2 \cdot C) \times D}, \mathbf{E}_{pos} \in \mathbb{R}^{(N + 1) \times D} \\ \mathbf{z}^\prime_\ell &= \text{MSA}(\text{LN}(\mathbf{z}_{\ell - 1})) + \mathbf{z}_{\ell - 1}, & & \ell = 1 \dots L \\ \mathbf{z}_\ell &= \text{MLP}(\text{LN}(\mathbf{z}^\prime_\ell)) + \mathbf{z}^\prime_\ell, & & \ell = 1 \dots L \\ \mathbf{y} &= \text{LN}(\mathbf{z}^0_L) \end{aligned} z0zzy=[xclass; xp1E; xp2E; ; xpNE]+Epos,=MSA(LN(z1))+z1,=MLP(LN(z))+z,=LN(zL0)ER(P2C)×D,EposR(N+1)×D=1L=1L
    y \mathbf{y} y即为最后的分类结果。

备注

暂无备注。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶Karl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值