具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)

6 实验

实验目的是验证以下几个问题:

  1. RT-1可以学习大规模指令数据,并且可以在新任务、对象和环境上实现zero-shot的泛化能力?
  2. 训练好的模型可以进一步混合多种其他数据(比如仿真数据和来自其他机器人的数据)吗?
  3. 多种方法如何对long-horizon的机器人场景实现泛化?
  4. 泛化度量如何随着数据数量和数据多样性变化?
  5. 在设计模型方面重要和实践的决策应该是什么?他们又将如何影响性能和泛化性?

6.1 实验设置

机器人环境
机器人训练数据的采集是在一个环境下的,示教共13个机器人采集,然后会放在另外两个不同的环境中进行验证。
Seen task performance:即在训练过的任务上来评测,但这类数据也存在一定的变化(如机器人位置,物体位置不同等),一共测试了超过200个任务: 36物体抓取任务, 35敲击物体的任务, 35摆放物体的任务,48个移动物体的操作,18个开关不同抽屉的任务和36个从抽屉中取出或者放置物体的任务;
Unseen tasks generalization:在21个未见的指令任务上进行了测试,这里的未见是指组合任务未见,但拆分的动作和目标对象是见过的;
Robustness:进行了30个任务对错误诱导的鲁棒性验证实验和22个背景鲁棒性验证实验,如下图所示:
干扰Long-horizon scenarios: 测试了机器人需要执行一些列技能的场景,在两个厨房场景中测试了15个这样的任务,每个任务需要约10个步骤,这些步骤由Saycan系统根据高层指令自动产生,然后由RT-1执行。

数据
本工作的目标是建立一个高性能机器人控制系统,,对新任务具有一定的通用性,并对背景和干扰选项具有鲁棒性,因此需要采集大量的机器人数据集,包括多任务、对象和环境。原始数据集包含约130k机器人示教,在13个机器人上耗时17个月采集;当前的技能包括:抓取,放置,开关抽屉,从抽屉取放东西, 直立地放置细长东西,将他们锁住,抽出餐巾纸和打开瓶罐,同时技能的扩充是很容易的,随着需求扩增数据即可。
数据

6.2 RT-1是否可以学习大规模指令数据,并且可以在新任务、对象和环境上实现zero-shot的泛化能力?

为回答这个问题,首先和先前的几个工作(Gato, BC-Z, BC-Z XL)进行对比比较,实验结果表明本方法具有更好的性能和泛化性;
为了进一步验证泛化能力,我们在厨房环境中进行实验,首先根据真实厨房环境与训练环境的差异,将其划分成L1-L3三个等级,L1表示对新的案台上面布局和不同光照条件的通用性,L2表示额外有未见过的诱导物体,L3表示额外有较大的新未见任务设置,未见物体或者未见位置,然后对比不同方法在这三种场景下的成功率。
实验对比泛化性

6.3 训练好的模型可以进一步混合多种其他数据(比如仿真数据和来自其他机器人的数据)吗?

设计了两大类实验:(1) RT-1同时在真实数据和仿真数据上进行训练和测试 (2) RT-1在大规模不同任务上机芯训练,这些数据来自不同机器人,实验结果如下:
sim+real使用多个机器人数据训练

6.4 多种方法如何对long-horizon的机器人场景实现泛化?

在Saycan的框架下验证RT-1在long-horizon任务上的泛化能力。另外因为移动操作任务同时需要导航和操作,因此策略对底盘位置的鲁棒性也很重要(底盘可能无法到达期望位置,这时机械臂需要一定的鲁棒性)。
long horizon任务

6.5 泛化度量如何随着数据数量和数据多样性变化?

此部分对数据集的大小和多样性进行消融实验,因为数据在传统数据受限的机器人学习中扮演着重要的作用。同时由于数据采集是很昂贵的,了解什么样的数据有助于模型实现特定性能和泛化性也是很重要的。
数据泛化性
数据增长

D4 模型消融实验:在设计模型方面重要和实践的决策应该是什么?他们又将如何影响性能和泛化性?

可能的性能提升猜想包括(i) 模型的容量和表征能力,可以通过消融模型大小和试用其他结构来验证(e.g., 移除Transformer部分); (ii)特定的动作表征, 可以使得表征复杂的多模态动作分别更容易,可以通过转向连续(正态分布)动作,或者自回归动作表征; (iii) ImageNet预训练权重初始化,可以通过随机初始化进行验证;(iv)短历史帧输入,可以通过减少观测历史来验证。更具体地,消融实验包括(1)减少模型大小(参数了从 35M 降低到 21M), (2) 移除Transformer结构 (使用一个预训练的EfficientNet), (3)使用连续的动作空间(使用MSE损失和 多变量正太分布输出(multivariate normal output)), (4) 自回归训练动作, (5)移除ImageNet的预训练权重初始化, and (6) 移除历史(将历史6帧观测减少到当前单帧)。
模型消融实验

7 结论,局限和未来工作

结论

  1. RT-1在超过700个指令任务上达到97%的成功率,同时对新任务,物体和环境具有比之前工作更好的泛化性;.
  2. RT-1可以成功吸收多种数据,来自仿真环境或者其他机器人,不会牺牲在原来任务上面的性能,同时改进了对新场景的泛化性;
  3. 展示了这种性能和通用性如何可以被应用到SayCan框架中执行最多可达50步的long-horizon任务。

局限

  1. RT-1是一种模仿学习的方法,因此也继承了该类方法的缺陷,如无法超越示教者的能力;
  2. 对未见新指令的泛化性来自于以前见过的概念组合,对完全未见的指令任务不具备泛化性;
  3. 我们的方法应用在大规模但并不灵巧的操作任务.

未来工作

  1. 通过开发允许非专家来训练机器人的方法来加快机器人技能的扩充;
  2. 当前RT-1对错误诱导的鲁棒性很好,其对背景和环境的鲁棒性可以通过增加环境的多样性来提升;已有工作见diffusion-rosie;
  3. 通过可扩展的注意力和记忆来提升反应速度和文本记忆。

个人见解
RT-1模型上最大的创新在于使用了Transformer网络,其架构上也方便进行scale,比如输出可以按需增加或者减少,同时足以容纳足够多的训练数据,另外就是用充足的实验证明了机器人利用模仿学习里的BC训练方法可以从大量数据中学习到较泛化的能力,突出了数据的重要性,指引了通用机器人的一个研发方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/46262.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux判断端口是否占用(好用)

netstat 一般的话使用 netstat -tunlp | grep xxx参数作用-t指明显示TCP端口-u指明显示UDP端口-l仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)-p显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。-n不进行…

华为数通HCIA-网络模型

TCP 网络通信模式 作用:指导网络设备的通信; OSI七层模型: 7.应用层:由应用层协议(http、FTP、Telnet.)为应用程序产生对应的数据; 6.表示层:将应用层产生的数据转换成网络设备看…

强化学习SAC算法对数概率公式推导

强化学习 SAC算法 对数概率推导 先上原论文: 首先对公式 ( 20 ) (20) (20) 做推导。 公式 ( 20 ) (20) (20) 的数据流应该是这样的: s → π ( u ∣ s ) → u → a tanh ⁡ ( u ) → a \mathbf{s}\rightarrow \pi(\mathbf{u}|\mathbf{s}) \rightar…

高精度地图服务引擎项目

技术栈:使用vue3TypeScriptElement PlusPiniaaxios 项目描述:高精度地图服务引擎项目,提供轻量化处理3D瓦片切片分布式处理分发服务的一站式解决方案 工作内容:1、项目60%已上的页面开发 2、部分模块的功能实现, 3、封…

Docker consul的容器服务更新与发现

consul 服务自动发现和注册 1.什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构…

ElasticSearch基础篇-安装与基本操作

ElasticSearch基础篇 安装 官网 下载地址 下载完成后对文件进行解压,项目结构如下 进入bin目录点击elasticsearch.bat启动服务 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为浏览器访问的 http协议 RESTful 端口 打开浏览器&#…

ffplay播放器剖析(6)----音视频同步分析

文章目录 1. 音视频同步基础1.1 音视频同步策略1.2 音视频同步概念1.3 FFmpeg中的时间单位1.4 不同结构体的time_base/duration分析1.5 不同结构体的pts/dts分析1.6 ffplay中Frame结构体分析1.7 Vidoe Frame PTS获取及矫正1.8 Audio Frame PTS的获取 2.以音频为基准3.以视频为基…

Android Studio 代码模板插件实现

Android Studio 代码模板插件 背景 可以跳过背景和简述,从模板插件实现开始看. 开发新页面时,原先需要写一堆模板代码。比如用Databinding写列表结构的页面,需要手写以下文件: XxActivity.ktXxFragment.ktXxViewModel.ktXxListA…

redis中缓存雪崩,缓存穿透,缓存击穿的原因以及解决方案

一 redis的缓存雪崩 1.1 缓存雪崩 在redis中,新,旧数据交替时候,旧数据进行了删除,新数据没有更新过来,造成在高并发环境下,大量请求查询redis没有数据,直接查询mysql,造成mysql的…

并行计算-OPENMP(windows)

并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各…

SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组…

AWS / VPC 云流量监控

由于安全性、数据现代化、增长、灵活性和成本等原因促使更多企业迁移到云,将数据存储在本地的组织正在使用云来存储其重要数据。亚马逊网络服务(AWS)仍然是最受追捧和需求的服务之一,而亚马逊虚拟私有云(VPC&#xff0…

flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

当你在Flutter应用中尝试打开一个非安全连接的网页(例如HTTP连接而不是HTTPS连接)时,可能会遇到"ERR_CLEARTEXT_NOT_PERMITTED"错误。这是因为默认情况下,Android 9及更高版本禁止应用程序通过非安全的明文HTTP连接进行…

5-linux中的定时任务调度

定时任务调度 crond 任务调度概述基本语法常用选项快速入门应用实例crond 相关指令 at 定时任务基本介绍at 命令格式at 命令选项at 时间的定义其他指令 crond 任务调度 crontab 进行 定时任务调度 概述 任务调度:是指系统在某个时间执行的特定的命令或程序 任务…

JVM运行时数据区——字符串常量池位置的调整

在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在永久代(方法区)中的,但是方法区的回收效率不高,在Full GC时才会回收。 在JDK7中,将字符串常量池转移到了堆中,分配在年轻代和老年代中。…

C++模板的简单练习

运行代码&#xff1a; #include"std_lib_facilities.h"template <class T>struct S { private:T val; public:S<T>() :val(T()) {}S<T>(T tt) : val(tt) {};T& get();void set(T tt) { val tt; }ostream& operator << (ostream&a…

电脑记事本在哪里?电脑桌面显示记事本要怎么设置?

绝大多数上班族在使用电脑办公时&#xff0c;都需要随手记录一些琐碎或重要的事情&#xff0c;例如工作注意事项、常用的文案、某项工作的具体要求、多个平台的账号和密码等。于是就有不少小伙伴想要使用电脑记事本软件来记录&#xff0c;那么电脑记事本在哪里呢&#xff1f;想…

MySQL数据库关于表的一系列操作

MySQL中的数据类型 varchar 动态字符串类型&#xff08;最长255位&#xff09;&#xff0c;可以根据实际长度来动态分配空间&#xff0c;例如&#xff1a;varchar(100) char 定长字符串&#xff08;最长255位&#xff09;&#xff0c;存储空间是固定的&#xff0c;例如&#…

【大虾送书第三期】《Python高并发与高性能编程: 原理与实践》

目录 ✨写在前面 ✨主要内容 ✨本书特色 ✨关于作者 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 Python成为时下技术革新的弄潮儿&#xff0c;全民Python的发展趋势让人们不再满足于简单地运行Python…

LeetCode三步问题(动态规划)

LeetCode三步问题&#xff08;动态规划&#xff09; 编写代码代码优化 链接: 三步问题 编写代码 class Solution { public:int waysToStep(int n) {if(n 1 || n 2) return n;vector<int> dp(n1);const int MOD 1e9 7;dp[0] dp[1] 1;dp[2] 2;for(int i 3;i<n…