打造一个有温度、有趣味、专业的全栈式AI&AIGC交流社区!
“ 机器人操作任务是指让机器人执行物体操纵和操作的任务。这些任务涉及到机器人使用其机械臂、手指和其他工具来操纵物体,执行各种精细和复杂的操作。 然而,VLA在机器人领域的广泛采用一直是一个挑战,主要的原因包括:1)现有的VLA在很大程度上是封闭的,公众无法访问;2)先前的工作未能探索有效地微调VLA从而适应新任务的方法,这是采用的关键组成部分。为了应对这些挑战,作者引入了OpenVLA,这是一种7B参数的开源VLA,在970k个真实世界机器人演示的不同集合上进行了训练。OpenVLA建立在Llama 2语言模型的基础上,该模型与融合了DINOv2和SigLIP预训练特征的视觉编码器相结合。作为增加的数据多样性和新模型组件的产物,OpenVLA在广义操作方面表现出了强大的结果,在29个任务和多个机器人实施例中,其绝对任务成功率比RT-2-X(55B)等封闭模型高16.5%,参数减少了7倍。OpenVLA为多面手机器人操纵策略设定了一个新的技术状态。它支持开箱即用地控制多个机器人,并可以通过参数高效微调快速适应新的机器人领域。”
项目主页-https://openvla.github.io/
代码链接-https://github.com/openvla/openvla
论文链接-https://arxiv.org/abs/2406.09246
模型链接-https://huggingface.co/openvla
01-机器人抓取任务简介
机器人操作任务在许多领域都有广泛应用,包括制造业、物流和仓储、医疗手术、家庭服务和农业等。通过实现自动化的机器人操作,可以提高生产效率、减少人力成本,并在危险或繁重的工作环境中保护人类工作者的安全。
02-机器人抓取任务发展历程
学习操作机器人的一个关键弱点是,它们无法在训练数据之外进行概括:虽然为个人技能或语言指令训练的现有策略有能力将行为外推到新的初始条件,如物体位置或照明,但它们对场景干扰器或新物体缺乏鲁棒性,并且难以执行看不见的任务指令。
然而,除了机器人技术之外,现有的视觉和语言基础模型,如CLIP、SigLIP和Llama 2,能够进行这些类型的泛化等,这源于其互联网规模的预训练数据集捕获的先验。尽管复制这种规模的机器人预训练仍然是一个悬而未决的挑战,即使是最大的机器人操作数据集也只有10万到100万个例子,但这种不平衡给我们提供了一个机会:即使用现有的视觉和语言基础模型作为训练机器人策略的核心构建块,这些策略可以推广到训练数据之外的对象、场景和任务。
为了实现这个目标,现有工作已经探索了将预训练的语言和视觉语言模型集成到机器人表示学习中,并将其作为任务规划和执行的模块化系统的一个组成部分。最近,它们被用于直接学习视觉语言动作模型来进行控制。VLA为机器人提供了使用预训练的视觉和语言基础模型的直接实例化,直接微调可视化条件语言模型(VLM),如PaLI,用来生成机器人控制动作。通过建立在互联网规模数据上训练的强大基础模型,RT-2等VLA展示了令人印象深刻的鲁棒性结果,以及推广到新对象和任务的能力,为广义机器人策略树立了新标准。
大量的实验结果进一步证明,我们可以有效地针对新的设置对OpenVLA进行微调,在涉及多个对象的多任务环境中具有特别强的泛化能力和强大的语言基础能力,并且比扩散策略等从头开始的表达性模仿学习方法强20.4%。作者还探索了计算效率;作为另一个贡献,作者展示了OpenVLA可以通过现代低秩自适应方法在消费者GPU上进行微调,并通过量化有效地提供服务,而不会影响下游成功率。最后,作者发布了模型检查点、微调笔记本和PyTorch代码库,内置支持在Open X-Implementation数据集上大规模训练VLA。
为了训练OpenVLA,作者从Open X-Implement(OpenX)数据集中策划了一个970k机器人操纵轨迹的数据集。该数据集涵盖了广泛的任务、场景和机器人实施例。作者在64个A100 GPU的集群上训练OpenVLA 15天。经过训练的模型文件可以从HuggingFace下载,并通过几行代码来使用。
# 利用git获取源代码
git clone https://github.com/openvla/openvla.git
# 安装三方依赖
cd openvla
pip install -e .
# 安装 Flash-Attention 2
pip install packaging ninja
# Verify Ninja --> should return exit code "0"
ninja --version; echo $?
# Install Flash Attention 2
# =>> If you run into difficulty, try `pip cache remove flash_attn` first
pip install "flash-attn==2.5.5" --no-build-isolation
06.02-运行Demo样例
# Install minimal dependencies (`torch`, `transformers`, `timm`, `tokenizers`, ...)
# > pip install -r https://raw.githubusercontent.com/openvla/openvla/main/requirements-min.txt
from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch
# Load Processor & VLA
processor = AutoProcessor.from_pretrained("openvla/openvla-7b", trust_remote_code=True)
vla = AutoModelForVision2Seq.from_pretrained(
"openvla/openvla-7b",
attn_implementation="flash_attention_2", # [Optional] Requires `flash_attn`
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True
).to("cuda:0")
# Grab image input & format prompt
image: Image.Image = get_from_camera(...)
prompt = "In: What action should the robot take to {<INSTRUCTION>}?\nOut:"
# Predict Action (7-DoF; un-normalize for BridgeData V2)
inputs = processor(prompt, image).to("cuda:0", dtype=torch.bfloat16)
action = vla.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)
# Execute...
robot.act(action, ...)
上面的视频展示了OpenVLA如何在各种评估任务中与其它基线方法RT-2-X进行比较的效果。(视频速度提高了2倍。)通过观察与分析,我们可以发现:真实世界谷歌机器人推出RT-2-X(闭源55B参数模型)和OpenVLA都能可靠地执行分布内和基本分布外(OOD)泛化任务。
上面的视频展示了在涉及场景中多个对象并需要语言条件的微调任务中,Diffusion Policy、Octo与OpenVLA的效果展示。通过观察与分析,我们可以发现:Octo和OpenVLA通常表现更好,因为它们的OpenX预训练使它们能够更好地适应这些更多样化的任务。
上图展示了作者在广泛的泛化任务中测试了OpenVLA,例如视觉(看不见的背景、干扰物对象、对象的颜色/外观);运动(看不见的物体位置/方向);物理(看不见的物体大小/形状);以及语义(来自互联网的看不见的目标对象、指令和概念)概括。通过仔细观察与分析,我们可以发现:RT-2-X和OpenVLA都表现出比其他测试模型明显更稳健的行为,例如当存在干扰物体时接近正确的物体,正确地定位机器人的末端执行器以与目标物体的方向对齐,甚至从错误中恢复,如不安全地抓握物体。
VLA模型对新任务和机器人设置的有效微调在很大程度上尚未探索,但这是其广泛采用的关键。上图作者研究了OpenVLA在两个领域快速适应新机器人设置的能力:Franka Tabletop,一种固定的、安装在桌子上的Franka Emika Panda 7-DoF机械臂,控制频率为5Hz;和Franka DROID,来自最近发布的DROID数据集的Franka机械臂设置,控制在15Hz。
图8.3-OpenVLA算法抓取效果3展示
图8.4-OpenVLA算法抓取效果4展示
关注我,AI热点早知道,AI算法早精通,AI产品早上线!
欢迎你的加入,让我们一起交流、讨论与成长!
若二维码失效:关注公众号--》交流分享--》联系我们(备注:AI产品汇)
禁止私自转载,需要转载请先征求我的同意!