一些内容
线性代数
零空间,列空间
列空间:
零空间:
矩阵正定、半正定
正定:
半正定:
在SLAM中,优化时
奇异值分解
奇异值为0的的右奇异向量构成了零空间;奇异值非0的左奇异向量构成了列空间。因此在SLAM中DLT法求最小二乘问题时,只需要选取最小奇异值对应的右奇异向量即可构成解空间。
Robotics
DH法
- a: z轴-z轴,沿x轴方向
- α:z轴-z轴的角度,z轴为旋转轴
- d:x轴-x轴,沿z轴方向
- θ:x轴-x轴的角度,z轴为旋转轴
homotopy continuation
- predict step+correction step
- bertini、julia homotopy、GPU-HC
同伦延续有贝祖定律和完备性保证,能保证从G(x)出发的所有解能够收敛到F(x)的所有解(如果有的话)。一般
pnp问题系数空间恒定,所以可以用网络估计方程的根,然后构建
在迭代时需要解一个jacobian方程来获取delta x,一般是qr分解或者lu分解来求解。
GPU-HC
使用magma来分配GPU内存,column-major,对于P3P问题而言,每个block只有3个thread即3个更新参数,一个问题对应8个block即8个方程(贝祖定律)。
通过两步先预测
由于每个thread对应一个变量,因此在求解时,需要协作求解更新,求解程序使用高斯消元变成三角矩阵后逐个求解。
Lie Group
- 扰动/导数用于优化,扰动模型导数更加简单
- 导数模型:
- 扰动模型:
Kinematics in Lie Group
- 即角速度与李群导数之间的关系
- 最简单的
就可以直接从数学上推导出来,但应该一种对应spatial velocity,另一种对应body velocity,物理意义是不同的 , ,
小波变换与傅里叶变换
- 傅里叶变换只能获取到频谱,但无法知道一开始是什么频率,后来是什么频率
- 傅里叶在突变点出会产生充斥整个时域的信号,小波只有在小波基对应的突变位置信号不为0,不会填充整个时域
- 小波变换存在尺度与平移量,用于控制小波基的深度与平移
优化与边缘化
牛顿法
对于优化问题
其中
于是得到了牛顿法的更新方程:
需要解这个线性方程来完成参数的更新。
求方程的根和最优化用到的牛顿迭代形式不太一样,因为优化的目的是让梯度=0(
高斯牛顿法
如果不对
将此式代入目标函数
整理后得到高斯-牛顿方程:
用
LM
LM 算法引入了一个阻尼因子(
这里的
当
舒尔消元、边缘化
边缘化的数学原理为将BA对应的联合概率分布
边缘化原因:在做滑动窗口时,直接丢弃历史观测数据会导致系统出现误差;做边缘化即让“丢弃的信息”变为已有优化变量之间的约束。边缘化在数学上的操作就是舒尔补。
边缘化会压缩更新变量(将系数矩阵分成一个三角阵,这样0对应的那个变量就可以不用求了,但如果想要更新的话还是可以解第二个方程来更新的),但不会损失信息。
但边缘化会导致图优化系数矩阵丧失稀疏性。正常情况下
零空间、边缘化与FEJ
零空间与能观性
零空间指的就是那些无法被观测到的维度,在单目 SLAM 中,由于绝对位置(3维)、绝对偏航角(3维)和绝对尺度(1维)不可观,这 7 个维度构成了系统的零空间。其含义为:变量在这些维度的变化不会影响残差值(平底的碗,半正定),即
当进行边缘化时,即相当于将当前帧与未边缘化的变量构建了一个先验项
强行拼凑不同的线性点会导致零空间被破坏,即虚假的观测到新的信息。比如单目slam的尺度是不定的,零空间没有被破坏时,尺度方向上的改变对于所有变量的jacobian是一致的,不会实质改变误差;一旦零空间被破坏,就相当于先验部分的误差增加速度是 A,而当前部分的误差减少速度是 B,两者不相等就会导致改变尺度会降低误差(但实际上不可能通过一个不能观的变量来降低误差)。
在单目优化时为了消除零空间,会强制把第一帧的位姿设为固定值,或者固定前两帧的距离(固定尺度),方程变得可解且存在唯一解。
(LM算法让H变为正定,客观上是改变了曲面形状,代价是步长变短,退化为梯度下降。)
FEJ
FEJ即当一个变量同时与先验和其他优化变量建立联系的时候,固定住这个变量的jacobian,防止出现线性点不同。
LLM
attention
Q: 为什么要除以
A: 因为点积的数量级增长很大,很容易将softmax的一阶雅可比矩阵压缩到0附近,导致梯度消失。即有部分元素值很大,将softmax的输出压缩成一个由一个非常接近1和其余非常接近0的矩阵。
RoPE
旋转位置编码
对于最原始的正余弦编码而言,其预训练长度是固定的,如果训练了512个token,那么后续就只能处理512个token的输入,缺乏外推性。
因为attention的本质是内积,所以需要引入相对位置编码只需要在内积后保留相对位置即可。RoPE引入了复数作为旋转编码,给位置m的q乘以Rm,位置为n的k乘以Rn,得到的结果是q和k的内积乘以一个旋转矩阵。
infer加速技术
FlashAttention
- 通过降低存储访问开销来提升效率,虽然FLOPS会上升
- 通过分块的方式来对大矩阵乘法和softmax进行缓存
PagedAttention
- VLLM的关键加速组件
- 将虚拟内存的技术引入到LLM中
- 主要是对KV-Cache的进行分页优化
- 具有虚拟内存的优势,比如可以对cache快速进行内存共享
KV-Cache
- 针对decoder-only的自回归模型
- 因为causal mask的存在,被mask掉的部分不会参与到attention的计算,所以可以直接将前面的result缓存起来留作后用
GQA MQA MLA
muti-head attention因为KV太多了,性能下降严重,所以产生了GQA MQA。其中MQA即muti query attention,GQA即grouped query attention。MQA中每个head共享K和V矩阵,kv cache直接下降到1/n。但MQA性能折扣严重,所以又产生了GQA,即将Q分成多个组,每个组对应一个K和V矩阵。一般的llm,比如LLAMA都是用的GQA。
而MLA即multi head latent attention,利用LORA的思想,将QKV分解成低秩的向量,然后公用矩阵缓存起来,私有矩阵直接被吸收掉了。另外为了处理RoPE,额外使用一部分维度来单独进行编码。
VLA
openvla
- dino v2 + siglip来对图像进行编码
- 图像编码后结果+指令编码后结果输入llama最后decode出action
DINO V2
- 自监督
- teacher+student,teacher不直接梯度更新,用指数平均移动从student获取权重
- 跟bert训练类似(bert预测遮罩词、预测两句连贯性),将部分patch只提供给teacher并让student与teacher输出接近;用student预测几个patch是来自同一图像还是不同图像
- 训练过程中尽量保持student与teacher的特征表示尽可能接近
SIGLIP与CLIP
- SIGLIP是CLIP的一个变种,用sigmoid loss取代CLIP中的softmax
- CLIP用vit来对图像进行编码,分别使用图像对文字的距离和文字对图像的距离来作为loss
Uniact
- 将原子行为编码为codebook,用token表示,从而实现跨平台
diffusion policy、DP3、iDP3
- diffusion policy即将DDPM扩展应用到VLA,输出从图像变为了action
- DP3即将点云作为diffusion policy的输入,能够以概率方式处理等价action,会使用MLP来编码点云
- iDP3即将DP3的world坐标系变为自身坐标系,同时在真机上应用
相机标定
射影空间
射影空间为齐次表示下引入,不存在平行线,欧式空间平行线相较于无穷远直线/平面,欧式空间中圆全部经过虚圆点/绝对二次曲线。标定相机就是在标定绝对二次曲线(IAC,或者说是“绝对二次曲线”在图像上的像),从而固定射影到欧式空间的度量。
标定相机就是在标定绝对二次曲线的像的推导
首先给出数学上的结论:绝对二次曲线的像(IAC,
- 而针孔成像模型:
,其中 为内参, 为外参。 - 对于空间无穷远点:齐次坐标写作
(方向向量 与最后一维 0)。投影到图像: ;平移 被消去,只剩 。 - 绝对二次曲面条件(复数域)给出方向满足
(经过虚圆点)。 - 将
用图像坐标表示: 。这样代回得到 (因为 )。 - 因此满足
的图像圆锥曲线矩阵为 。
(向量就是点,对称矩阵就是二次曲线)
(IAC也是纯虚点构成的,图像上不可见)
射影->欧式:把一条无穷远直线挑出来,然后在直线上挑出被称为虚圆点的点。
(2D下)由于射影变换仅比相似变换多四个自由度,仅从失真程度考虑(或者说度量性质),只要确定无穷远直线
(3D下)由于射影变换比相似变换多了八个自由度,因此需要确定一个无穷远平面,才能消除射影失真;确定绝对二次曲线,就可以消除仿射失真。(另外仿射变换维持了无穷远平面不变;相似变换没有改变绝对二次曲线)。最后,3D的平移与旋转可以被螺旋分解成单一轴的进动和旋转。
相机模型
给定相机投影矩阵
而投影矩阵前三列表示空间坐标系的xyz轴的消影点(
射影重构定理:当相机没有标定时,可以重建出无数个空间点集合,并且他们之间仅仅相差一个射影变换(射影多义性)。这造成了基本矩阵和本质矩阵之间的差异:本质矩阵能分解出唯一的外参,而基本矩阵只能分解出一个射影重构意义下的外参。(另一个表述:标定相机会出来的物体仅差一个相似变换;而未标定相机回复出来的物体相差一个投影变换)。