当前位置: 首页 > news >正文

从DexMV、VideoDex、MimicPlay到SeeDo:从人类视频中学习:机器人的主流训练方法之一

前言

在此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的1.1节开头有提到

机器人收集训练数据一般有多种方式,比如来自人类视频的视觉演示

  1. 有的工作致力于从视频数据——例如YouTube视频中进行策略学习
    即最常见的方法是从各种被动的人类演示视频中学习,利用被动的人类演示,先前的工作学习了任务成本函数 [37, 8, 1, 21]、可供性函(affordance function) [2]、密集物体描述符[40, 24, 39]、动作对应 [33, 28] 和预训练的视觉表示 [23-R3m: A universal visual representation for robot manipulation,48-Masked visual pre-training for motor control]
  2. 然而,这种方法遇到了一些挑战
    首先,大多数视频演示缺乏明确的动作信息(这对于学习可推广的策略至关重要)
    为了从被动的人类视频中推断动作数据,先前的工作采用了手部姿态检测器 [44-Mimicplay: Long-horizon imitation learning by watching human play, 1-Human-to-robot imitation in the wild, 38-Videodex: Learning dexterity from internet videos, 28- Dexmv: Imitation learning for dexterous manipulation from human videos],或将人类视频与域内遥操作机器人数据结合以预测动作 [33, 20, 34, 28]

    其次,人类和机器人之间明显的embodiment(物理本体,有的翻译为体现)差距阻碍了动作转移(the evident embodiment gap between humans and robots hinders action transfer)
    弥合这一差距的努力包括通过手势重定向学习人类到机器人的动作映射 [38-Videodex: Learning dexterity from internet videos, 28-Dexmv: Imitation learning for dexterous manipulation from human videos] ,或提取与体现无关的关键点 [即embodiment-agnostic keypoint,49]
    尽管有这些尝试,固有的embodiment差异仍然使得从人类视频到物理机器人的策略转移变得复杂

考虑到「从人类视频中学习」早已成为机器人的主流训练方法之一,故打算系统阐述以下这个课题,不然很多朋友可能只是理解其字面意思,但到底具体怎么个模仿学习,则不一定知其里,而通过本文系统的阐述,可以让大家更深刻的理解模仿学习背后更深的细节

二方面,上面不是提到了从人类视频学习中的诸多问题么,那我们也看看该领域的最新进展——比如纽约大学的SeeDo到底有没解决这些问题呢?

故便有了本文,本文将注意解读以下这几篇paper

  • Learning by Watching: Physical Imitation of Manipulation Skills from Human Videos,18 Jan 2021
  • DexMV,12 Aug 2021
  • DexVIP,1 Feb 2022
  • Robotic Telekinesis: Learning a Robotic Hand Imitator by Watching Humans on YouTube,21 Feb 2022
  • R3M: Representations for Robots from Real-World Videos,23 Mar 2022
  • VideoDex,8 Dec 2022
  • MimicPlay,24 Feb 2023 
  • VLM See, Robot Do: Human Demo Video to Robot Action Plan via Vision Language Model,11 Oct 2024

第一部分 从Learning by Watching、DexMV到DexVIP

1.1 Learning by Watching: Physical Imitation of Manipulation Skills from Human Videos

来自多伦多大学、天津大学、NVIDIA的研究者(Haoyu Xiong, Quanzhou Li, Yun-Chun Chen, Homanga Bharadhwaj, Samarth Sinha, Animesh Garg)发布了此篇论文:《Learning by Watching: Physical Imitation of Manipulation Skills from Human Videos》

为了从人类视频中实现物理模仿,作者将问题分解为一系列任务:

  1. 人类到机器人的翻译
  2. 基于无监督关键点的表示学习
  3. 以及3)使用强化学习进行物理模仿

在此,回顾前两个任务,因为他们的方法是在现有算法基础上构建的

1.1.1 无监督的图像到图像翻译到无监督关键点检测

对于无监督的图像到图像翻译问题

类似于现有的方法 [9], [10],将人类到机器人翻译视为无监督的图像到图像翻译问题

  1. 具体而言,目标是学习一个模型,将图像从源域X(例如,人类域)翻译到目标域Y(例如,机器人域),而无需配对的训练数据 [12],[26], [29], [30]
  2. 在作者的方法中,他们采用MUNIT [30] 作为图像到图像翻译网络来实现人类到机器人的翻译
    MUNIT通过假设图像表示可以被解构为一个域不变的内容编码(由内容编码器E^{c}编码)和一个域特定的风格编码(由风格编码器E^{s}编码)来学习在两个域之间翻译图像

    内容编码器E_{X}^{c}E_{Y}^{c}在两个域中是共享的,而两个域的风格编码器E_{X}^{S}E_{Y}^{s}则不共享权重
    为了将图像从一个域翻译到另一个域,作者将其内容编码与从另一个域采样的风格编码结合
    且这些翻译/转换是通过学习生成:与目标域中的图像无法区分的图像来实现的(The translations are learned to generate images that are indistinguishable fromimages in the translated domain)

故,给定来自源域X的图像x和来自目标域Y的图像y,在源域中定义对抗性损失\mathcal{L}_{\mathrm{GAN}}^{x}
\mathcal{L}_{\mathrm{GAN}}^{x}=\mathbb{E}\left[\log D_{X}(x)+\log \left(1-D_{X}\left(G_{X}\left(c_{y}, s_{x}\right)\right)\right)\right]

其中

  • c_{y}=E_{Y}^{c}(y)是图像y的内容编码
  • s_x = E_{X}^{s}(x)是图像x的风格编码
  • G_X是一个生成器,其接收内容编码c和风格编码s作为输入,并生成与源域中分布相似的图像
  • D_X是一个判别器,旨在区分由G_X生成的翻译图像和源域中的图像

此外,目标域中对抗损失\mathcal{L}_{\mathrm{GAN}}^{y}也可以类似地定义

除了对抗损失外,MUNIT还对图像、内容和风格编码应用重构损失,以规范模型学习

  • 对于源域,图像重构损失\mathcal{L}_{\text {rec }}^{x}定义为
    \mathcal{L}_{\text {rec }}^{x}=\mathbb{E}\left[\left\|G_{X}\left(c_{x}, s_{x}\right)-x\right\|\right]
  • 内容重建损失\mathcal{L}_{\mathrm{rec}}^{C_{x}}定义为
    \mathcal{L}_{\mathrm{rec}}^{c_{x}}=\mathbb{E}\left[\left\|E_{Y}^{c}\left(G_{Y}\left(c_{x}, s_{y}\right)\right)-c_{x}\right\|\right]
  • 风格重建损失\mathcal{L}_{\mathrm{rec}}^{s_{x}}定义为
    \mathcal{L}_{\text {rec }}^{s_{x}}=\mathbb{E}\left[\left\|E_{X}^{s}\left(G_{X}\left(c_{y}, s_{x}\right)\right)-s_{x}\right\|\right]

目标域中的图像重建损失\mathcal{L}_{\mathrm{rec}}^{y}、内容重建损失\mathcal{L}_{\mathrm{rec}}^{c_{y}}和风格重建损失\mathcal{L}_{\mathrm{rec}}^{s_{y}}可以类似地推导出来

最终,训练MUNIT的总损失LMUNIT为

\begin{aligned} \mathcal{L}_{\text {MUNIT }} & =\mathcal{L}_{\mathrm{GAN}}^{x}+\mathcal{L}_{\text {GAN }}^{y}+\lambda_{\text {image }}\left(\mathcal{L}_{\text {rec }}^{x}+\mathcal{L}_{\text {rec }}^{y}\right) \\ & +\lambda_{\text {content }}\left(\mathcal{L}_{\text {rec }}^{c_{x}}+\mathcal{L}_{\text {rec }}^{c_{y}}\right)+\lambda_{\text {style }}\left(\mathcal{L}_{\text {rec }}^{s_{x}}+\mathcal{L}_{\text {rec }}^{s_{y}}\right) \end{aligned}

其中\lambda_{\text {image }}\lambda_{\text {content }}\lambda_{\text {style }}是用于控制各自损失函数相对重要性的超参数

对于无监督关键点检测

为了执行控制任务,现有方法通常依赖于基于图像观测的状态表示学习[10], [45]–[48]

  • 然而,图像到图像翻译模型生成的图像观测通常只捕捉宏观特征,而忽略了对下游任务至关重要的显著区域中的细节。通过使用特征编码器对翻译后的图像观测进行编码来推导状态表示会导致次优性能
  • 另一方面,现有方法也可能受到图像到图像翻译模型生成的视觉伪影的影响

与这些方法相比,作者利用Transporter[41]在无监督的方式下检测每个翻译后视频帧中的关键点。检测到的关键点形成一种结构化表示,捕捉机器人手臂的姿态和交互物体的位置,为下游控制任务提供语义上有意义的信息,同时避免由于图像到图像翻译不完美而导致的视觉伪影的负面影响

为了实现无监督关键点检测的学习,Transporter利用物体在一对视频帧之间的运动,通过在检测到的关键点位置传输特征,将一个视频帧转换为另一个视频帧

  1. 比如,给定两个视频帧 xy,Transporter首先使用特征编码器 \Phi 提取两个视频帧的特征图\Phi(x)\Phi(y),并使用关键点检测器 \Psi 检测两个视频帧的 K 个二维关键点位置\Psi(x)\Psi(y)
  2. 然后,Transporter 通过在\Psi(x)\Psi(y)中抑制 x 在每个关键点位置附近的特征图,并将 y\Psi(y) 中每个关键点位置附近的特征图进行融合,来合成特征图\hat{\Phi}(x, y)Transporter then synthesizes the feature map Φ(x, y) by suppressing the feature map of x around eachkeypoint location in Ψ(x) and Ψ(y) and incorporating thefeature map of y around each keypoint location in Ψ(y)
    \hat{\Phi}(x, y)=\left(1-\mathcal{H}_{\Psi(x)}\right) \cdot\left(1-\mathcal{H}_{\Psi(y)}\right) \cdot \Phi(x)+\mathcal{H}_{\Psi(y)} \cdot \Phi(y)

    其中\mathcal{H}_{\Psi(\cdot)}是一个高斯热图,其峰值集中在\Psi(\cdot)中的每个关键点位置
  3. 接下来,传输的特征\hat{\Phi}(x, y)被传递到一个精细化网络R中,以重建视频帧y
    然后定义用于训练Transporter的损失\mathcal{L}_{\text {transporter }}r为

\mathcal{L}_{\text {transporter }}=\mathbb{E}[\|R(\hat{\Phi}(x, y))-y\|]

在下一节中,作者利用Transporter模型来检测每个翻译后的视频帧的关键点。检测到的关键点随后被用作定义奖励函数的结构化表示,并作为策略网络的输入,以预测用于与环境交互的动作

1.1.2 LbW:从人类视频中学习的改进方法

考虑从人类视频中学习机器人操作技能的物理模仿任务。在这种情况下,作者假设可以访问一个单一的人类演示视频V_{X}=\left\{x_{i}^{E}\right\}_{i=1}^{N},长度为N,展示了一个人类执行特定任务(例如,推一个块)的过程,作者希望机器人从中学习,其中x_{i}^{E} \in \mathbb{R}^{H \times W \times 3}H \times Wx_{i}^{E}的空间大小

作者注意到,人类的动作在他们的设定中并没有提供。故作者的目标是开发一种学习算法,使机器人能够模仿人类演示视频V_X中展示的人类行为

为实现这一目标,作者提出了LbW,一个由三个组件组成的框架:

  1. 图像到图像的翻译网络T「来自MUNIT [30]」
  2. 关键点检测器\psi「来自Transporter的关键点检测器[41]」
  3. 策略网络\pi

具体如下图所示

给定一个人类演示视频V_{X}和时间t的当前观测O_{t} \in \mathbb{R}^{H \times W \times 3}

  1. 首先对人类演示视频V_{X}中的每一帧x_{i}^{E}应用图像到图像的翻译网络T,并将x_{i}^{E}翻译为机器人演示视频帧v_{i}^{E} \in \mathbb{R}^{H \times W \times 3}
  2. 接下来,关键点检测器\Psi将每个翻译后的机器人视频帧v_{i}^{E}作为输入,并提取基于关键点的表示
    z_{i}^{E}=\Psi\left(v_{i}^{E}\right) \in \mathbb{R}^{K \times 2}
    其中K表示关键点的数量

    同样,也对当前观测O_{t}应用关键点检测器\Psi,以提取基于关键点的表示z_{t}=\Psi\left(O_{t}\right) \in \mathbb{R}^{K \times 2}
  3. 为了计算物理模仿的奖励,作者定义了一个距离度量d,用于计算当前观测O_{t}的基于关键点的表示z_t与每个翻译后的机器人视频帧v_{i}^{E}的基于关键点的表示z_{i}^{E}之间的距离
    we define adistance metric d that computes the distances between the keypoint-based representation zt of the current observationOt and each of the keypoint-based representations zEi of the translated robot video frames vE
  4. 最后,策略网络以当前观测O的关键点表示z_t作为输入,预测一个动作a_{t}=\pi\left(z_{t}\right),该动作用于指导机器人与环境交互

// 待更

1.2 DexMV

21年8月份,来自的研究者提出了DexMV,其对应的论文为:《DexMV: Imitation Learning for Dexterous Manipulation from Human Videos》

1.3 DexVIP

相关文章:

从DexMV、VideoDex、MimicPlay到SeeDo:从人类视频中学习:机器人的主流训练方法之一

前言 在此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的1.1节开头有提到 机器人收集训练数据一般有多种方式,比如来自人类视频的视觉演示 有的工作致力于从视频数据——例如YouTube视频中进行策略学习 即最常见…...

如何在Docker中运行Squid

测试环境 VMware Rocky Linux 9.4 实现步骤 过程:写一个Dockerfile构建Squid镜像; 再写一个启动脚本start_squid.sh,在启动脚本中配置并运行Squid。 编写Dockerfile 以rockylinux9.3做基础镜像,通过yum安装Squid, 拷贝squid.conf FROM …...

Ubuntu22.04 加入AD域

Ubuntu22.04 加入AD域 要在Ubuntu 22.04上加入Active Directory (AD) 域,你可以使用realmd和sssd服务。以下是加入AD域的步骤和示例配置: 更新系统软件包列表: sudo apt update 下载安装必要的软件包: sudo apt install realm…...

Docker 构建 Miniconda3 Python 运行环境实战指南

Docker 构建 Miniconda3 Python 运行环境实战指南 文章目录 Docker 构建 Miniconda3 Python 运行环境实战指南一 准备 environment.yml二 获取项目 pip 信息三 Dockerfile 编写四 构建多平台镜像1 准备组件2 构建镜像3 导出镜像4 导入镜像 五 注意事项 本文详细介绍了如何通过 …...

029 elasticsearch文档管理(ElasticsearchRepository、ElasticsearchRestTemplate)

文章目录 BlogRepository.javaBlogRepositoryTest.javaBulkTest.java 文档的管理 ElasticSearchRepository接口 使用方法: 创建一个接口,继承于ElasticSearchRepository,指定使用的Entity类及对应主键数据类型 Springboot自动扫描接口并创建代…...

【Flutter】Dart:Isolate

在 Dart 和 Flutter 中,所有的代码默认都运行在单一的线程(即主线程)上,这个线程也叫做 UI 线程。当进行耗时操作(如复杂计算或网络请求)时,如果不使用多线程处理,主线程会被阻塞&am…...

​微信小程序 页面间传递数据

在小程序中,给页面传递参数通常有以下几种方法: 通过URL传递参数: 在小程序中,可以在页面的路径后面添加参数,然后在页面的 onLoad 函数中获取这些参数。 // 在app.json中配置页面路径 "pages": [{"pat…...

前端_005_Nodejs

文章目录 npm包管理器cjs和mjsYarn包管理器 1.Node.js 是js的一个运行环境,从nodejs诞生后js代码不局限于只在浏览器中执行,此外还能再nodejs里写服务端,用js可以前后端全栈开发 2.Node.js不跟浏览器一样默认含有document,window对象&#xf…...

SpringCache缓存介绍

1.为什么需要缓存 ​ 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果: 使用缓存是一个很…...

python实战(一)——iris鸢尾花数据集分类

一、任务背景 本文是python实战系列专栏的第一篇文章,我们将从分类开始由浅入深逐步学习如何使用python完成常规的机器学习/深度学习任务。iris数据集是经典的机器学习入门数据集,许多分类任务教程都会以这个数据集作为示例,它的数据量是150条…...

k8s-对命名空间资源配额

对k8s命名空间限制的方法有很多种,今天来演示一下很常用的一种 用的k8s对象就是ResourceQuota 一:创建命名空间 kubectl create ns test #namespace命名空间可以简写成ns 二: 对命名空间进行限制 创建resourcequota vim resourcequ…...

Failed to connect to github.com port 443

git push无法连接443端口 **问题1****方法一:取消代理设置**git命令 其他解决方案1. **设置 Git 使用 HTTP 而不是 HTTPS**2. **检查证书**3. **配置 Git 忽略 SSL 验证(不推荐)**4. **检查代理设置** 问题1 Failed to connect to github.com…...

【设计模式系列】简单工厂模式

一、什么是简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种设计模式,其中包含一个工厂类,根据传入的参数不同,返回不同类的实例。这个工厂类封装了对象的创建逻辑,使得客户端代码可以从直接创建…...

给定一个正整数n随机生成n个字节即生成2n个十六进制数将其组成字符串返回secrets.token_hex(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 给定一个正整数n 随机生成n个字节 即生成2n个十六进制数 将其组成字符串返回 secrets.token_hex(n) [太阳]选择题 根据题目代码,执行的结果错误的是? import secrets …...

[Gtk] 工程

MediaPlayer 可执行文件工程 结构 . ├── BUILD ├── ButtonHelper.cpp ├── ButtonHelper.h ├── CMakeLists.txt ├── DrawingAreaHelper.cpp ├── DrawingAreaHelper.h ├── layout.ui └── main.cpp CMakeLists.txt # 1) cmake basic cmake_minimum_r…...

基于Multisim的汽车尾灯控制电路设计与仿真

假设汽车尾部左右量测各有3个指示灯(用发光二极管模拟)1. 汽车正常运行时指示灯全灭;2.右转弯时,右侧3个指示灯按右循环顺序点亮;.3. 左转弯时,左侧3个指示灯按左循环顺序点亮;4.临时刹车时所有…...

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路2. 代码实现 题目链接:3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路 这一题的话就是要看出来题中给出的operation的本质事实上就是将任意…...

redo文件误删除后通过逻辑备份进行恢复

问题描述 开发同事让在一个服务器上查找下先前库的备份文件是否存在,如果存在进行下恢复。翻了服务器发现备份文件存在,多愁了一眼竟翻到了该备份文件于2024.6.17日恢复过的日志,赶紧和开发沟通说2024.6.17号已经恢复过了为啥还要恢复&#x…...

7805的输出电压如何调整?

7805稳压集成电路的输出电压通常是固定的,标称为5V。然而,在实际应用中,可以通过一些方法调整其输出电压,尽管这些调整方法可能会使电路变得更加复杂或需要额外的元件。以下是几种可能的调整方法: 1. 使用不同型号的稳…...

git命令使用一览【自用】

git常见操作: git initgit remote add master【分支名字】 gitgits.xxxxx【仓库中获取的ssh链接或者http协议的链接】检查远程仓库是否链接成功。 git remote -v出现以下画面就可以git pull,git push了...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...