总览
这是开启VLA&VLM学习的第一篇论文记录,这个系列主要用于记录一些经典的VLA&VLM方法和对应的思考。持续思考持续提升。其实开始做VLM已经有几个月的时间了,但是没有系统的了解过整个VLM&VLA的框架和知识。
【paper】https://arxiv.org/pdf/2406.09246
【code】
主要创新
- 指出之前VLA模型的主要问题:1)大多是闭源模型;2)可迁移性差,适配一个新的机型/任务,需要完全重新训练;
- 提出了一个开源的7B VLA模型-OpenVLA,性能超越之前闭源RT-2-X,并且具备泛化迁移能力;
- 探究了一系列VLA模型结构、训练方式的配置细节,部分得到的结论和先前常识不太一样;
模型结构
- Vision Enc(600M):单帧图像分别过DinoV2和SigLIP后,Channel-wise进行concat。之所以用两个Enc,是作者经过实验发现这样(增加DINOv2)对于spatial reasoning能力有明显提升;
- Projector:2层MLP,对其vision&language特征空间;
- LLM(7B):Llama-7B
- VLM pretrain:整体基于LlaVA 1.5 data mixture进行finetune,作为pretrain model
- Action Decoder:将训练数据中1%-99%的动作,离散化成256个meta action。然后通过这256个离散动作控制机器人。这里面注意,Llama做SFT只支持最多100个新special token,所以需要把利用最少的256个special token给覆盖掉,供Action Decoder使用。
训练数据
- Open X-Embodiment dataset:2M robot trajectories,70 individual robot datasets;
- 输入、输出空间一致性:只保留第三视角相机单机械臂操作的数据;
- 数据均衡:embodiments、tasks、scenes均衡;
训练设计
- VLM Backbone:尝试了Prismatic(DINOv2+SIGLP+Llama)、Llava、IDEFICS等VLM模型,Prismatic效果最佳。作者将其归功于双vision encoder的结构,提升了机器的定位能力;
- Image Resolution:尝试里224224和384384分辨率,发现效果无差别。这里就比较反常识了,之前的VLA和VLM任务一般来讲都是分辨率高对效果有提升,当然计算成本也随之提高;
- Funtune Vision Enc:一般的VLA都将这部分freeze住,这里解开训练发现效果出奇的好,可以看后面的ablation实验;
- Epoch:最终训了27epoch,一般的任务都不会训这么多;
- LR:2e-5,于VLM pretrain阶段保持一致,和warmup没有明显提升;
实验
- 多机器平台效果:
- 适应新任务效果
- SFT提效
这里可以看到LoRA和全参数训练性能比较接近,消耗资源少了很多;
- 量化效果
思考
作者
- 传感器是单相机,使用比较有限。这个在目前自动驾驶的VLM中也有类似的问题。没有释放更多传感器能力;类似还有时序能力;
- 频率还是比较低,推理速度。未引入action chunk等类似的技术优化模型推理效果;
- 整体动作成功率还比较低,single object成功率在50-60%附近;
- 有一些结构上的内容还没有探究:VLM的尺寸(7B)对VLA效果的关系?robo-action的SFT和Internet Scale数据的混合训练能否提升效果?(post-pretrain)?Vision Feature与VLA的适配关系?
笔者
- 离散化的Meta Action作为输出,会不会影响动作的流畅性?如果类比Anchor做一些补偿会不会好一些?(当然这个可能比较细枝末节了)