WJAD / Design.md
fuzirui's picture
Upload folder using huggingface_hub
2f30c49 verified

这是我设计的端到端自动驾驶模型,具体如下: 1、视觉编码器:将图片和时序(历史8帧)的图像使用新的DINOv3(建议搜索,来自Meta)编码器进行编码,然后利用222卷积压缩。 2、骨干:18层GateSelfAttention(建议搜索,来自阿里在NerualPS的技术)前9层GateSelfAttention采用Dense架构,后9层GateSelfAttention采用MoE,7个路由专家+1个共享专家,每一层都拥有自己独立的一套专家库(比如每层独立的8个专家),且在进入新的一层时,都会被该层的独立 Router 重新进行路由分配,不受上一层路由结果的限制。混合方法依据路由预测的专家概率加权即可。路由采用GAP特征输出专家概率,序列级分配,概率用Sigmoid归一,Top3激活。所有Token组成序列使用骨干进行统一序列建模(包括视觉Tokens)。 3、位置编码:视觉信息使用自车运动和内外参以当前车辆位置为原点编码自车坐标系下的单位像素射线(编码前4个头),和标准的H、W、T归一化(0为中心归一化到[-1,1])位置编码(编码后4个头),还有4个头不做位置编码。 4、感知方法:通过1024个检测Token处理后送入MLP。 5、控制:通过24个Token直接回归控制、轨迹、置信度。 6、自车运动和额外容量的Token:自车运动编码为8个Tokens进入序列,同时引入256个无明确定义的Token用于可能需要的额外序列容量。 7、在线校准:微型在线校准网络,采用4层GateSelfAttention和2层GateCrossAttention直接回归残差量(从获取DINOv3原始特征进行处理)(一层GateCrossAttention+2层GateSelfAttention),采用256个Token组成序列,取最后一个特征输出预测修正量,模型接收原始运动、内外参信息,修正位置编码训练早期初始化为输出0,采用Tanh激活,限制修正范围,采用小学习率缓慢步进。 8、未来建模:对运动类别的检测Token预测未来24帧的轨迹。

所有Transformer采用PreNorm结构和SwiGLUFFN(D->4D->SwiGLU->2D->D),GateAttention大致是使用Q经过线性层和Sigmoid生成D维度的门控参数,在注意力计算得到的V矩阵多头合并后和门控相乘,过滤非必要信息,再进行融合,门控网络采用输出为1的初始化方法,低学习率缓慢步进。骨干维度768,在线校准维度256。模型接收的运动学信息是来自过去8帧的,在线校准输出的运动学残差量也对应过去8帧,同时在线校准也输出内外参残差量,并依据这些残差量修正。模型接收的运动学、坐标、输出的坐标等信息采用sign(x)log(|x|+1)的归一化方法,输入归一化,直接预测归一化值。训练采用早期Dense方法,但是让路由分布尖锐,加入负载均衡,也加入Loss防止路由数值越界,后期再稀疏激活。在线校准先输出残差量校准,骨干再利用校准后信息推理。

采用nvidia/PhysicalAI-Autonomous-Vehicle-Cosmos-Drive-Dreams数据集,在本地基本跑通代码后推送到huggingface sandbox进行微小训练,验证后推送到huggingface jobs训练。

训练应当具备小梯度监测功能,采用WarmUp和余弦退火策略,同时加入数据增强,主要在Dense阶段中期微小扰动标准运动学和内外参,让在线校准学习校准方法,同时也有常用图像数据增强(高斯噪声等)。DINOv3早期冻结,后期小学习率微调。

结构化场景检测48m以内的,采用SOTA常用损失。数据划分方法采用相隔8帧采用一组(8帧)的方法。

输入图像分辨率[H, W][384, 1024],裁剪去上半部分(主要是天空)。