介绍终身机器人学习的数据集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

【Arrow开发者必读】:3步解决C和Rust间Schema不一致难题

第一章:Arrow开发者必读:C与Rust数据交互的挑战 在现代数据处理系统中,Apache Arrow 作为跨语言内存数据标准,广泛用于高性能计算场景。当使用 Rust 编写核心逻辑并与 C 接口交互时,开发者常面临内存布局不一致、生命周期管理复杂及类型系统差异等难题。这些挑战直接影响数据传递的安全性与效率。 内存模型差异带来的风险 Rust 的所有权机制与 C 的手动内存管理存在根本冲突。若将 Rust 创建的 Arrow 数组直接暴露给 C,可能因提前释放导致悬垂指针。必须通过 FFI 边界进行深拷贝或使用引用计数包装。 例如,在 Rust 中导出数组指针时需确保其生命周期超越调用栈: #[no_mangle] pub extern "C" fn get_array_data() -> *const ffi:

【论文阅读】Self-supervised Learning of Person-specific Facial Dynamics for APR

【论文阅读】Self-supervised Learning of Person-specific Facial Dynamics for APR

基于特定人物面部动态的自监督学习自动人格识别 * 摘要 * 引言INTRODUCTION * 相关工作 * 五因素模型 * 人格、面部行为与情绪之间的关系 * 基于视频的自动人格预测 * 方法 * 面部动态的自监督学习 * 人格化描述提取 * 训练人格模型 * 实验 * 人格数据库 * 实现细节 * 评价指标 * 消融实验 * 与其他方法的比较 * 结论 论文 关键词:自动人格分析(APR),排序损失,面部时间演变,人格化动态层,自监督学习,卷积神经网络,CNN权重表示 本文主要创新点在于:自监督学习、关注个性化特征 摘要 本文旨在解决现有自动人格分析系统中频繁出现的两个重要问题:1. 使用短视频片段甚至单帧,而非长期行为来推断人格特质;2. 缺乏对特定个体面部动态进行编码以用于人格识别的方法。为解决这些问题,本文提出了一种新颖的排序损失(Rank Loss)利用面部动作的自然时间演变,而非人格标签,来进行面部动态的自监督学习。我们首先训练一个通用的U-net风格模型从一组未标记的面部视频中学

OpenClaw 完整安装与配置文档(包含Minimax/deepseek模型接入、飞书机器人接入)

OpenClaw 完整安装与配置文档 文档说明:本文档适用于 Linux 系统(Debian/Ubuntu 系列),详细梳理 OpenClaw 从基础环境准备、核心程序安装,到模型配置(Minimax/DeepSeek)、飞书渠道对接的全流程,所有交互式配置选项完整呈现,步骤可直接复制执行,适配新手操作。 适用场景:OpenClaw 新手部署、企业内部飞书机器人对接、Minimax/DeepSeek 模型配置 前置说明: 1. 服务器需联网,确保能访问 GitHub、npm、飞书官网; 2. 操作全程使用终端命令行,建议使用远程工具(如 Xshell、Putty)连接服务器; 3. 复制命令时需完整复制,避免遗漏特殊符号; 4. 所有交互式配置选项均完整列出,按文档指引选择即可。 5. 拥有root用户/sudo权限。

山东大学《Web数据管理》期末复习宝典【万字解析!】

山东大学《Web数据管理》期末复习宝典【万字解析!】

🌈 个人主页:十二月的猫-ZEEKLOG博客 🔥 系列专栏:🏀山东大学期末速通专用_十二月的猫的博客-ZEEKLOG博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光  目录 1. 第二章 网络爬虫 1.1 爬虫基础知识 1.2 爬虫分类 1.3 开源工具 Nutch 2. 第三章 网页分析 2.1 正则表达式 2.2 DOM模型 2.3 Beautiful Soup工具 2.4 Scrapy框架 2.5 不同爬虫工具比较 2.6 元搜索引擎 3. 第四章 爬虫与网站的博弈 3.1 Robot协议 3.