介绍终身机器人学习的数据集LIBERO

介绍终身机器人学习的数据集LIBERO
在这里插入图片描述

1 LIBERO的作用

在这里插入图片描述

LIBERO是一个用于研究多任务和终身机器人学习中知识迁移的综合基准测试平台,LIBERO是基于robosuite框架构建的。它专注于机器人操作任务,这些任务需要两类知识:

  1. 陈述性知识:关于物体和空间关系的知识
  2. 程序性知识:关于运动和行为的知识

2 核心原理

任务生成与基准设计

LIBERO提供了一个程序化生成管道,原则上可以生成无限数量的操作任务。系统包含130个任务,分为四个任务套件,每个套件都有受控的分布偏移

  • LIBERO-Spatial/Object/Goal:专注于特定类型知识的迁移
  • LIBERO-100:包含需要迁移纠缠知识的100个操作任务

学习框架

系统采用模仿学习作为主要学习方法,因为任务使用稀疏奖励函数(任务完成时获得+1奖励)。LIBERO提供高质量的人类遥操作演示数据集用于训练。

算法与策略架构

LIBERO实现了三种视觉运动策略网络:

  • bc_rnn_policy:基于RNN的行为克隆策略
  • bc_transformer_policy:基于Transformer的行为克隆策略
  • bc_vilt_policy:基于视觉-语言Transformer的行为克隆策略

以及五种终身学习算法:

  • base:顺序微调(基线)
  • er:经验回放(Experience Replay)
  • ewc:弹性权重巩固(Elastic Weight Consolidation)
  • packnet:渐进式网络架构方法
  • multitask:多任务学习(基线)

3 任务套件概览

LIBERO包含130个任务,分为四个主要任务套件:

  1. LIBERO-Spatial(10个任务)
  2. LIBERO-Object(10个任务)
  3. LIBERO-Goal(10个任务)
  4. LIBERO-100(100个任务)

LIBERO-100进一步分为LIBERO-90(90个任务,用于预训练)和LIBERO-10(10个任务,用于测试下游持续学习性能)。

3.1 LIBERO-Spatial(空间关系迁移)

这10个任务都涉及将黑碗放到盘子上,但黑碗的初始位置不同:

  1. 拾取盘子和小碗之间的黑碗并放到盘子上
  2. 拾取小碗旁边的黑碗并放到盘子上
  3. 拾取桌子中央的黑碗并放到盘子上
  4. 拾取饼干盒上的黑碗并放到盘子上
  5. 拾取木柜顶部抽屉中的黑碗并放到盘子上
  6. 拾取小碗上的黑碗并放到盘子上
  7. 拾取饼干盒旁边的黑碗并放到盘子上
  8. 拾取炉子上的黑碗并放到盘子上
  9. 拾取盘子旁边的黑碗并放到盘子上
  10. 拾取木柜上的黑碗并放到盘子上
3.2 LIBERO-Object(物体知识迁移)

这10个任务都是将不同物体放入篮子:

  1. 拾取字母汤罐头并放入篮子
  2. 拾取奶油奶酪并放入篮子
  3. 拾取沙拉酱并放入篮子
  4. 拾取烧烤酱并放入篮子
  5. 拾取番茄酱并放入篮子
  6. 拾取番茄酱罐并放入篮子
  7. 拾取黄油并放入篮子
  8. 拾取牛奶并放入篮子
  9. 拾取巧克力布丁并放入篮子
  10. 拾取橙汁并放入篮子
3.3 LIBERO-Goal(目标导向迁移)

这10个任务涉及不同的操作目标:

  1. 打开柜子的中间抽屉
  2. 将碗放到炉子上
  3. 将酒瓶放到柜子顶部
  4. 打开顶部抽屉并将碗放入
  5. 将碗放到柜子顶部
  6. 将盘子推到炉子前面
  7. 将奶油奶酪放入碗中
  8. 打开炉子
  9. 将碗放到盘子上
  10. 将酒瓶放到架子上
3.4 LIBERO-10(综合测试套件)

这10个任务来自不同场景,涉及复合操作:

  1. 客厅场景2:将字母汤和番茄酱都放入篮子
  2. 客厅场景2:将奶油奶酪盒和黄油都放入篮子
  3. 厨房场景3:打开炉子并将摩卡壶放上去
  4. 厨房场景4:将黑碗放入柜子底部抽屉并关闭
  5. 客厅场景5:将白色杯子放到左边盘子上,黄白杯子放到右边盘子上
  6. 书房场景1:拾取书并放入收纳盒后部隔间
  7. 客厅场景6:将白色杯子放到盘子上,巧克力布丁放到盘子右边
  8. 客厅场景1:将字母汤和奶油奶酪盒都放入篮子
  9. 厨房场景8:将两个摩卡壶都放到炉子上
  10. 厨房场景6:将黄白杯子放入微波炉并关闭
3.5 LIBERO-90

包含90个任务用于预训练。

系统支持21种不同的任务顺序排列,用于评估持续学习算法在不同任务序列下的表现。

4 框架算法详解

4.1 终身学习算法

1. Sequential (base)

顺序微调基线,也是所有终身学习算法的父类。

原理:按顺序在每个任务上训练策略网络,不采用任何防止遗忘的机制。每个任务开始时初始化优化器和调度器,然后通过observe()方法学习数据点。

学习过程包括:

  • 将数据移到设备上
  • 计算策略损失
  • 反向传播并应用梯度裁剪
  • 更新参数
2. Experience Replay (ER)

经验回放算法

原理:维护一个包含之前任务数据的缓冲区。学习新任务时,从缓冲区采样旧任务数据与当前任务数据混合训练,防止灾难性遗忘。

每个任务结束后,将该任务的数据集截断并添加到缓冲区。学习时合并当前数据和缓冲区数据。

3. Elastic Weight Consolidation (EWC)

弹性权重巩固算法

原理:通过添加正则化惩罚项来保护重要参数不被修改。计算Fisher信息矩阵来估计参数重要性,然后在损失函数中添加惩罚项,限制重要参数的变化。

每个任务结束后计算Fisher信息,学习时在损失中加入惩罚项。

4. PackNet

渐进式网络剪枝算法

原理:为每个任务分配网络的不同子集。学习新任务时,先将之前任务使用的权重冻结,然后在剩余可训练权重上学习。任务结束后进行剪枝,保留当前任务的重要权重。

学习时将固定参数的梯度置零,任务结束后进行剪枝并可选地进行微调。

5. Multitask

多任务学习基线,所有任务同时训练。

4.2 神经网络架构

1. BCRNNPolicy

基于RNN的行为克隆策略

架构组成

  1. 图像编码器:处理RGB/深度图像,输出固定维度的嵌入
  2. 语言编码器:编码任务描述
  3. 额外模态编码器:处理关节状态、夹爪状态、末端执行器位置等
  4. LSTM网络:处理时序信息
  5. 策略头:输出动作分布
2. BCTransformerPolicy

基于Transformer的行为克隆策略

架构组成

  1. 图像编码器:与RNN策略类似
  2. 语言编码器
  3. 额外模态token化:将额外模态转换为token
  4. 时序Transformer:处理时序依赖
  5. 策略头
3. BCViLTPolicy

基于视觉-语言Transformer的行为克隆策略

架构组成

  1. 图像编码器:使用patch embedding
  2. 空间语言编码器时序语言编码器
  3. 位置嵌入和模态嵌入:用于区分不同输入
  4. 空间Transformer:融合图像和语言信息
  5. 时序Transformer策略头

前向传播包括空间编码和时序编码两个阶段。

所有策略网络都继承自BasePolicy基类,实现了统一的接口。三种网络的主要区别在于时序建模方式:RNN使用LSTM,Transformer使用自注意力机制,ViLT则采用双层Transformer分别处理空间和时序信息。所有算法都基于行为克隆,通过模仿学习从人类演示中学习策略。

5 待解决的问题

LIBERO旨在解决终身机器人学习中的几个核心挑战:

5.1. 知识迁移评估

通过受控的分布偏移,系统可以系统性地研究不同类型知识的迁移能力。前三个任务套件分别测试空间关系、物体知识和目标导向知识的迁移。

5.2. 灾难性遗忘

终身学习算法需要在学习新任务时保持对旧任务的性能。系统通过混淆矩阵跟踪这一问题,记录在学习任务k后对任务p的性能。

5.3. 前向和后向迁移

系统计算两个关键指标:

  • 前向迁移:学习速度,通过成功率AUC衡量
  • 后向迁移:学习新任务后对旧任务性能的影响

6 实验评估方法

6.1 评估指标

训练过程中系统跟踪多个指标:

  1. 损失混淆矩阵:记录在不同训练阶段各任务的BC损失
  2. 成功率混淆矩阵:记录在不同训练阶段各任务的成功率
  3. 学习曲线AUC:衡量智能体学习和成功的速度

6.2 实验流程

对于顺序学习算法,系统按以下流程进行:

  1. 对每个任务i,训练智能体
  2. 在所有已见任务(0到i)上评估损失和成功率
  3. 更新混淆矩阵和前向迁移指标

对于多任务学习基线,所有任务同时训练。

6.3 计算效率

系统报告策略网络的计算复杂度,以GFLOPs和参数量(MParams)衡量。

7 下载及安装

7.1 项目下载

# 安装 pip install libero # 下载示范数据与套件 python -m libero.download_suite --suite libero_100 # 顺序微调实验(以 bc_transformer 为例) python libero/lifelong_train.py \ --suite libero_100 \ --policy bc_transformer_policy \ --algo sequential 

7.3 数据集下载

(1)直接下载链接
libero_object: https://utexas.box.com/shared/static/avkklgeq0e1dgzxz52x488whpu8mgspk.zip
libero_goal: https://utexas.box.com/shared/static/iv5e4dos8yy2b212pkzkpxu9wbdgjfeg.zip
libero_spatial: https://utexas.box.com/shared/static/04k94hyizn4huhbv5sz4ev9p2h1p6s7f.zip
libero_100: https://utexas.box.com/shared/static/cv73j8zschq8auh9npzt876fdc1akvmk.zip

(2)HuggingFace (推荐)
HuggingFace仓库地址: download_utils.py:108
仓库ID: yifengzhu-hf/LIBERO-datasets
完整地址: https://huggingface.co/datasets/yifengzhu-hf/LIBERO-datasets
下载方法
使用下载脚本: download_libero_datasets.py:1-27

# 使用HuggingFace下载(推荐)  python benchmark_scripts/download_libero_datasets.py --use-huggingface 
# 下载特定数据集  python benchmark_scripts/download_libero_datasets.py --datasets libero_spatial --use-huggingface 

脚本会提示原始链接可能失效,建议使用HuggingFace源。

Read more

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战 🏠💡 * 为什么选择RISC-V?🤔 * 系统整体架构概览 🧩 * 第一步:硬件选型与电路搭建 🔌 * 主控芯片选择 * 外设连接 * 第二步:开发环境搭建 🛠️ * 安装步骤(以Ubuntu为例) * 第三步:裸机驱动开发(Bare Metal)⚡ * 示例1:DHT11温湿度读取(Bit-banging) * 示例2:BH1750光照传感器(I2C) * 第四步:引入FreeRTOS实现多任务调度 🔄 * 第五步:Wi-Fi连接与MQTT通信 ☁️📡 * 连接Wi-Fi * MQTT客户端(使用esp-mqtt库) * 第六步:BLE本地控制(无需Wi-Fi)📱

By Ne0inhk
OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队 完整教程:https://awesome.tryopenclaw.asia/docs/04-practical-cases/15-solo-entrepreneur-cases.html 16.1 为什么需要多 Agent? 作为超级个体创业者,你可能需要不同类型的 AI 助手来处理不同的工作: * 主助理:使用最强大的模型(Claude Opus)处理复杂任务 * 内容创作助手:专注于文章写作、文案创作 * 技术开发助手:处理代码开发、技术问题 * AI 资讯助手:快速获取和整理 AI 行业动态 传统的单 Agent 模式需要频繁切换模型和上下文,效率低下。多 Agent 模式让你可以同时拥有多个专业助手,各司其职。

By Ne0inhk

OpenClaw多智能体路由实战:飞书多机器人配置指南

文章目录 * 飞书重新安装问题 * 批量增加机器人 * 缺点 * 多个飞书机器人名称包含大小写的问题 * 多个Agent名称包含大小写的问题 目前我已经完成了OpenClaw的基本安装,但是在对话框只有一个,机器人也只绑定到主会话,一次只能处理一个消息。很多时候我在聊天窗口,说A任务,然后做了一半,又发了关于B任务的指令。一是每次发完消息,如果OpenClaw还在处理,剩下的消息要么进入队列、要么看不到(实际还在队列)。两个任务切来切去,感觉体验很不好。 要彻底解决这个问题,实现网上演示的那种对各Agent、每个对话机器人对应一个Agent,就需要用到多智能体路由技术。 实现的步骤如下: * 在飞书创建一个新的机器人 * 通过控制台创建新的智能体 * 按照指引将飞书配置上去 * 根据需要创建多个Agent和机器人,并对应配置上去(略) 飞书重新安装问题 明明我已经安装好了飞书,系统还是会提示我安装,否则就跳过了添加飞书这步。应该是系统Bug。这次安装的飞书位置在~/.openclaw/extensions/feishu,其实和~/.npm-globa

By Ne0inhk
Clawdbot(Moltbot) 飞书机器人配置,体验老板和助手沟通的感觉

Clawdbot(Moltbot) 飞书机器人配置,体验老板和助手沟通的感觉

一、背景说明 Clawdbot可以24小时待命(参考配置方式:Clawdbot(Moltbot) windows安装配置教程(含各种问题处理)),但是网页端使用起来比毕竟没那么方便,然而clawdbot支持多种渠道交互,这也正是这个AI助理的魅力所在,想想飞书发送一个消息,一个任务就完成了,这不就是老板指挥我做事的方式吗,来赶紧体验一波老板的感觉~ 二、飞书机器人创建 飞书开放平台构建机器人:https://open.feishu.cn/ 记录App ID 和 App Secret,一会要用: 三、自动安装插件 项目地址:https://github.com/m1heng/Clawdbot-feishu 这时候,就可以发挥clawdbot的能力了,直接让clawdbot给我安装: 我要安装飞书机器人,帮我按照这个命令安装:Clawdbot plugins install @m1heng-clawd/feishu 到这个过程有点慢,安装了好一会没反应,我开始问了: 又过了好一会没反应,

By Ne0inhk