位置编码综述(一):概览

本推文基于发表于IJGIS的《A Review of Location Encoding for GeoAI: Methods and Applications》并加以个人理解进行编写
论文地址:https://doi.org/10.1080/13658816.2021.2004602

摘要

许多地球科学中人工智能模型的一个普遍需求是编码各种类型的空间数据到一个隐藏的表征空间中以便可以轻松地将它们整合到深度学习模型中,例如点(例如,兴趣点),多边形(例如轨迹),多边形(例如,行政区域),图(例如,传输网络)或栅格(例如,遥感图像)。一个基本的步骤是将单点位置编码到嵌入式空间中,从而使该嵌入对下游机器学习模型(例如支持向量机和神经网络)是学习友好的。我们称此过程位置编码。但是,缺乏对位置编码的概念,其潜在应用以及需要解决的关键挑战的系统评价。在本篇推文中,我们主要讨论有关位置编码的一些相关定义以及对于现有一些位置编码方法做一个简单的分类和介绍。

1.引言

新颖的深度学习和表征学习技术的快速发展以及多样化的大规模地理空间数据的可用性不断增长加剧了地理空间人工智能(GeoAI)研究的实质性进展,这包括在各种具有挑战性的任务中取得的进展,例如地形特征检测和提取,土地使用分类,城市环境中的导航,地理知识图谱等任务。
尽管这些模型的设计截然不同,但它们具有共同的特征,即它们都需要表征或编码各种类型的空间数据到一个隐藏的表征空间中以便可以轻松地将它们整合到深度学习模型中,例如点(例如,兴趣点),多边形(例如轨迹),多边形(例如,行政区域),图(例如,传输网络)或栅格(例如,遥感图像)。对于矢量数据(例如点集、折线、多边形和网络),其表示问题变得更加复杂,这些数据具有更不规则的空间组织格式,因为位置、距离和方向等概念在现有的神经网络中没有直接对应的概念,并且为不规则结构的数据设计神经网络操作(例如卷积)并非易事。
早期的工作是执行数据转换操作,将底层空间数据转换为现有神经网络模块可以处理的格式。但是,这种转换过程往往会导致信息丢失,例如地理位置信息的丢失。执行此类数据转换的原因是在深度神经网络中缺乏直接处理矢量数据的方法。
还有一种方法是直接对这些空间数据模型进行编码。实现这一目标的第一步是将点位置编码到嵌入空间中,以便这些位置嵌入可以轻松地在下游神经网络模块中使用,这就是位置编码的思想。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

2.相关定义

2.1 位置编码

位置编码(Location Encoding)定义如下
给定点集 P = { p i } P=\{p_i\} P={pi},其中每个点 p i = ( x i , v i ) p_i=(x_i,v_i) pi=(xi,vi)由L维(L=2,3)位置 x i ∈ R L x_i\in \mathbb{R}^L xiRL和属性 v i ∈ R E v_i\in \mathbb{R}^E viRE(例如,类型)组成。将位置编码器定义为一个由 θ \theta θ参数化的函数 E n c ( P , θ ) ( x ) : R L → R d ( L ≪ d ) Enc^{(P,\theta)}(x):\mathbb{R}^L\to\mathbb{R}^d(L\ll d) Enc(P,θ)(x):RLRd(Ld),通过这个函数来映射空间中的坐标到一个d维的表征向量。这个过程就叫做位置编码,得到的结果称为位置嵌入向量。
这其中 E n c ( P , θ ) ( x ) Enc^{(P,\theta)}(x) Enc(P,θ)(x)也暗含了对于x的编码结果也可能依赖于点集P中的其他位置。在一些情况下,位置编码的输入可以是位置和属性的结合 E n c ( P , θ ) ( x ) : R L + E → R d Enc^{(P,\theta)}(x):\mathbb{R}^{L+E}\to\mathbb{R}^d Enc(P,θ)(x):RL+ERd
位置编码器是否可以保留空间信息(例如编码过程后的距离和方向信息)是我们需要考虑的一个主要问题,从空间信息保存的角度来看,我们希望编码器至少要满足两大特点:距离保留和方向意识。

2.2 距离保留

距离保留属性的核心是相近的两个位置具有相似的位置嵌入向量。具体来讲,给定任意一对位置 ( x A , x B ) (x_A,x_B) (xA,xB),它们的嵌入向量的内积 ⟨ E n c ( P , θ ) ( x A ) , E n c ( P , θ ) ( x B ) ⟩ \left\langle Enc^{(P,\theta)}(x_A),Enc^{(P,\theta)}(x_B)\right\rangle Enc(P,θ)(xA),Enc(P,θ)(xB)随着 x A x_A xA x B x_B xB之间距离 ∥ x A − x B ∥ \lVert{x_A-x_B}\rVert xAxB的增加而单调减小。这一特点也可以看做是地理学第一定律(任何事物都是与其他事物相关的,只不过相近的事物关联更紧密)的反映。

2.3 方向意识

方向意识即指向相似方向的位置具有比指向非常不同方向的人更相似位置嵌入。具体地如图,给定 x O x_O xO作为参考点,y轴作为地球指北方向, x A , x B , x C x_A,x_B,x_C xA,xB,xC在以 x O x_O xO为中心的同一圆圈上,因此它们与 x O x_O xO有相同的距离, x A x_A xA x O x_O xO之间的相对空间关系定义为 Δ A O = x A − x O \Delta_{AO}=x_A-x_O ΔAO=xAxO ∠ A O \angle_{AO} AO为y轴和 Δ A O \Delta_{AO} ΔAO的顺时针角度,如果 ∣ ∠ A O − ∠ B O ∣ < ∣ ∠ A O − ∠ C O ∣ |\angle_{AO}-\angle_{BO}|<|\angle_{AO}-\angle_{CO}| AOBO<AOCO且位置编码后的嵌入向量的内积满足 ⟨ E n c ( P , θ ) ( Δ A O ) , E n c ( P , θ ) ( Δ B O ) ⟩ > ⟨ E n c ( P , θ ) ( Δ A O ) , E n c ( P , θ ) ( Δ C O ) ⟩ \left\langle Enc^{(P,\theta)}(\Delta_{AO}),Enc^{(P,\theta)}(\Delta_{BO})\right\rangle>\left\langle Enc^{(P,\theta)}(\Delta_{AO}),Enc^{(P,\theta)}(\Delta_{CO})\right\rangle Enc(P,θ)(ΔAO),Enc(P,θ)(ΔBO)>Enc(P,θ)(ΔAO),Enc(P,θ)(ΔCO),则该位置编码器符合方向意识特性。
在这里插入图片描述

2.4 其他一些特性

在文章中,作者认为好的位置编码器还应具备以下特性:
· 归纳学习策略:即使要编码的位置在训练集中未出现,可以使用预制位置编码器编码任何位置而不用再重新训练模型
· 任务独立:相同的位置编码器模型结构可被用于不同的下游学习任务而不需要被调整修改
· 参数模型

3.位置编码器

如图所示,根据为单个位置数据编码为一个向量还是多个位置数据编码分为两大类,PE(x)为单个位置编码,Ν(x)为多个位置编码
在这里插入图片描述

3.1 单个位置编码

单点位置编码大多可以归纳为以下形式
E n c ( x ) = N N ( P E ( x ) ) Enc(x)=NN(PE(x)) Enc(x)=NN(PE(x))
其中 N N ( ⋅ ) : R W → R d NN(·):\mathbb{R}^W\to\mathbb{R}^d NN():RWRd是一个映射输入位置嵌入 P E ( x ) ∈ R W PE(x)\in\mathbb{R}^W PE(x)RW到位置向量表示 E n c ( x ) ∈ R d Enc(x)\in\mathbb{R}^d Enc(x)Rd可学习的神经网络。 P E ( ⋅ ) PE(·) PE()是区别不同单个位置编码方法的核心组件。

3.1.1 离散化&直接方法

早期的研究者认为GPS坐标是相当精确的位置指标,神经网络很难使用。 因此,他们没有使用坐标,而是将整个研究区域离散化为网格图块,并通过其所属的相应网格指示每个点。其中比较有代表性的为独热(one-hot)编码方法。这是早期将位置信息融入学习模型中的策略,存在一些限制:1)每个嵌入部分分别进行训练,空间依赖性被忽略,即,它们没有距离保留属性; 2)它们只有一个固定的空间尺度,不能有效地处理各种密度的点; 3)选择正确的离散化方法是非常具有挑战性的,并且不正确的选择将显着影响模型的性能和效率。

另一种早期策略是将位置信息归一化或标准化后送入网络中进行学习,这个比较直观也比较简单,早期常作为辅助信息用于地理信息相关任务中。

3.1.2 正弦&多尺度正弦方法

由于正弦方法可以看做是多尺度正弦方法的一个特例,因此这里直接对于多尺度正弦方法进行阐述。
多尺度正弦方法即从多个尺度利用正弦余弦函数去进行位置信息的特征编码。即 P E s i n m u l ( x ) = [ P E 0 ( S ) ( x ) ; . . . ; P E s ( S ) ( x ) ; . . . ; P E S − 1 ( S ) ( x ) ] PE_{sinmul}(x)=[PE^{(S)}_0(x);...;PE^{(S)}_s(x);...;PE^{(S)}_{S-1}(x)] PEsinmul(x)=[PE0(S)(x);...;PEs(S)(x);...;PES1(S)(x)],其中S为总的尺度数, P E s ( S ) ( x ) PE^{(S)}_s(x) PEs(S)(x)则是正弦函数为基础的编码函数,具体地,以Space2Vec为例,公式为
P E s , j ( t ) = [ cos ⁡ ( < x , a j > λ m i n ⋅ g s / ( S − 1 ) ) ; sin ⁡ ( < x , a j > λ m i n ⋅ g s / ( S − 1 ) ) ] ∀ j = 1 , 2 , 3 ; PE_{s,j}^{(t)}=[\cos(\frac{<\mathbf{x},\mathbf{a_j}>}{\lambda_{min}\cdot g^{s/(S-1)}});\sin(\frac{<\mathbf{x},\mathbf{a_j}>}{\lambda_{min}\cdot g^{s/(S-1)}})]\forall j=1,2,3; PEs,j(t)=[cos(λmings/(S1)<x,aj>);sin(λmings/(S1)<x,aj>)]j=1,2,3;
Ps:有关Space2Vec更多具体详解,请看之前的博客Space2Vec

多尺度正弦方法是同时具有距离保留特性和方向意识的编码方法,且同时对于前文提到的其他一些特性也有体现。

3.2 聚合位置编码

聚合位置编码器是共同考虑位置特征x和x附近的相关特征,将其聚合起来进行编码生成向量表征。公式如下
h x ( 0 ) = E n c ( x ) , h_x^{(0)}=Enc(x), hx(0)=Enc(x),
g x ( m ) = A g g x i ∈ N ( x ) { h x i ( m − 1 ) } , g_x^{(m)}=Agg_{x_i\in\Nu(x)}\{h_{x_i}^{(m-1)}\}, gx(m)=AggxiN(x){hxi(m1)},
h x ( m ) = C m b ( h x ( m − 1 ) , g x ( m ) ) h_x^{(m)}=Cmb(h_x^{(m-1)},g_x^{(m)}) hx(m)=Cmb(hx(m1),gx(m))
E n c ( P ) ( x ) = R d t ( h x ( m ) ) Enc^{(P)}(x)=Rdt(h_x^{(m)}) Enc(P)(x)=Rdt(hx(m))
其中Agg为聚合操作,聚合周围信息,Cmb为组合操作,将聚合后的表征组合拼接起来,Rdt为读取函数(Readout Function),即利用前馈网络将聚合特征输出为定长向量。

这种编码方式主要用于点云数据、轨迹数据等数据内位置信息存在内在关联的数据。主要分类有核方法,全局、局部编码方法和分层编码方法,在本课题组中,这一分类方法暂时不会用到,因此这里不做详细描述。

3.3 两种编码方法对比

· 当新位置添加到数据集时,PE(x)不会受影响,而一般N(x)都因邻居数据的改变而需要更新模型

· PE(x)具有相比于N(x)更高的推理速度

· 由于多考虑了邻居数据,N(x)比PE(x)具有更丰富的模型预测功能,并且具有更高的性能

· 编码方法一定是服务于下游任务的,要根据自己的具体任务去考虑那种编码方法更适合自己的任务

4.总结

本文主要对于位置编码进行了定义介绍和一些方法的概括,更加具体的关于方法上的比较会在之后的博客中进一步展开。

<think>好的,用户的问题是关于点云数据在初始编码时如何进行旋转位置编码的方法或实现。我需要先理解旋转位置编码在点云处理中的作用和应用场景。点云数据通常由三维空间中的点组成,处理时需要考虑其几何变换不变性,比如旋转、平移等。旋转位置编码可能用于增强模型对点云旋转变化的鲁棒性,或者在生成任务中保持空间致性。 首先,我需要回忆点云编码的常见方法,例如PointNet中的处理方式,它们通常使用多层感知机(MLC)对每个点进行特征提取,然后通过最大池化等操作获得全局特征。但这里的问题涉及旋转位置编码,可能需要结合位置编码技术,比如Transformer中的正弦位置编码,但需要适应三维旋转的情况。 接下来,旋转位置编码可能有不同的实现方式。种方法是将旋转参数编码为特征,例如使用旋转矩阵或四元数,并将其与点坐标结合。另种方法是在数据预处理阶段对点云进行旋转增强,使模型学习到旋转不变性。但用户的问题更可能是指如何在特征编码阶段显式地加入旋转信息,而不是通过数据增强。 查阅相关文献,例如引用[2]提到的时空生成卷积网络,可能涉及空间变换的编码。另外,Transformer中的位置编码通常是维或二维的,扩展到三维旋转可能需要球面谐波函数或其他三维空间表示方法。此外,图神经网络在处理点云时也会考虑邻居点的相对位置,可能使用相对位置编码。 可能的实现步骤包括:1) 提取点云的局部参考系(Local Reference Frame, LRF),作为旋转不变的基准;2) 使用相对坐标或旋转后的坐标作为输入特征;3) 将旋转参数作为位置编码与点特征拼接;4) 应用可学习的旋转矩阵对点坐标进行变换,再提取特征。 需要验证这些方法是否在现有论文中被采用。例如,些工作可能使用主成分分析(PCA)来对齐点云方向,减少旋转变化的影响。或者,使用SE(3)等变网络,直接在架构中保持旋转等变性,如Tensor Field Networks。 现在需要将这些思路整理成具体的实现方法,并给出代码示例。可能需要使用PyTorch或TensorFlow框架,展示如何将旋转位置编码集成到点云编码器中。例如,在输入层,每个点的坐标经过旋转矩阵变换后,再与原始坐标或其他特征结合,输入到MLP中。 同时,要考虑计算效率和可行性,例如是否需要在每次训练时动态计算旋转参数,或者预先生成旋转编码。此外,引用相关文献中的方法,如引用[2]中的空间-时间生成卷积网络,可能涉及动态模式合成,可能用到时空编码方法,但需要具体分析。 最后,生成相关问题,需要围绕旋转位置编码的实现、优化、应用场景以及与其他方法的比较来提问,帮助用户深入理解该主题。</think>### 点云旋转位置编码实现方法 #### 1. 核心原理 旋转位置编码的目标是使点云特征具有旋转不变性或显式编码旋转信息,常用方法包括: - **参考系对齐**:通过主成分分析(PCA)或协方差矩阵计算局部参考系(LRF),将点云对齐到规范坐标系[^1] - **球面谐波编码**:将三维坐标转换为球坐标系$(r,\theta,\phi)$后,使用球谐函数进行基函数展开 $$f(r,\theta,\phi) = \sum_{l=0}^\infty \sum_{m=-l}^l a_{lm} Y_l^m(\theta,\phi)$$ - **相对位置编码**:计算点与局部质心的相对位置,通过可学习矩阵进行旋转投影 #### 2. 实现步骤(PyTorch示例) ```python import torch import torch.nn as nn class RotationAwareEncoder(nn.Module): def __init__(self, feat_dim=64): super().__init__() # 局部参考系计算模块 self.lrf_conv = nn.Sequential( nn.Conv1d(3, 64, 1), nn.BatchNorm1d(64), nn.ReLU() ) # 特征编码器 self.mlp = nn.Sequential( nn.Conv1d(67, 128, 1), # 3坐标+64维LRF特征 nn.BatchNorm1d(128), nn.ReLU(), nn.Conv1d(128, feat_dim, 1) ) def compute_lrf(self, x): """计算局部参考系特征""" # x: (B,3,N) cov = torch.bmm(x, x.transpose(1,2)) # 协方差矩阵 _, _, V = torch.svd(cov) # 奇异值分解 return V[:,:,:3] # 主成分作为局部坐标系 def forward(self, pc): # pc: (B,3,N) lrf_feat = self.lrf_conv(pc) # (B,64,N) rot_matrix = self.compute_lrf(pc) # (B,3,3) # 坐标对齐 aligned_pc = torch.bmm(rot_matrix.transpose(1,2), pc) # (B,3,N) # 特征拼接 combined = torch.cat([aligned_pc, lrf_feat], dim=1) # (B,67,N) return self.mlp(combined) ``` #### 3. 关键优化方向 - **动态参考系**:使用注意力机制加权计算局部参考系 - **等变网络设计**:采用SE(3)-等变卷积保持旋转协变性[^2] - **多尺度编码**:结合不同半径邻域计算的旋转特征
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值