从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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款非常优秀的3D建模软件:PTC Creo

PTC Creo是美国PTC公司最新研发出来的一款超级强大的3D建模辅助类大型软件,这款软件是针对产品设计以及开发的软件,它具有一系列3D CAD、CAM、CAE等开发工具和套件,而且可用性极高。从概念设计一直到制造出产品,本软件都可以完成任…

Windows API 一 ----起步

目录 1.介绍主函数入口参数。 2. 简单介绍 Windows.h 这个头文件 小结,也聊一聊 1.介绍主函数入口参数。 第一个参数: HINSTANCE 类型的 参数, 称为“实例句柄“,这个参数唯一标志了我们写的这个程序。 第二个参数: HINSTANCE…

ORA-12541: TNS: 无监听程序

目录 1. 检查服务是否开启2. ip的原因 ORA-12541: TNS: 无监听程序 (特别感谢)参考链接:https://blog.csdn.net/qq_43540696/article/details/102522292 Traceback (most recent call last): File "D:\D01-software\D01010-PyCharm_co…

Java爬虫:获取直播带货数据的实战指南

在当今数字化时代,直播带货已成为电商领域的新热点,通过直播平台展示商品并进行销售,有效促进了产品的曝光和销售量的提升。然而,如何在直播带货过程中进行数据分析和评估效果,成为了摆在商家面前的一个重要问题。本文…

STM32调试,发现HAL_Init();之后无法调试,甚至无法让程序停下来

参考文档: STM32调试,发现HAL_Init();之后无法调试,甚至无法让程序停下来 - asml - 博客园 症状 最近开始学习STM32Cube,发现新建工程后无法正常调试,过了HAL_Init();之后就无法继续调试了. 无法进行让程序暂停以及停止等操作.并在输出窗口不断刷出 ERROR: Can n…

Golang | Leetcode Golang题解之第486题预测赢家

题目: 题解: func PredictTheWinner(nums []int) bool {return total(nums, 0, len(nums) - 1, 1) > 0 }func total(nums []int, start, end int, turn int) int {if start end {return nums[start] * turn}scoreStart : nums[start] * turn total…

边缘计算技术的优势与挑战

如今,随着5G快速无线网络的到来,将计算存储和物联网(IoT)分析的部署放在靠近数据产生的地方,使得边缘计算成为可能。 物联网设备和新应用的扩展需要实时计算能力。5G无线正在考虑边缘系统,以快速跟踪支持实…

python中堆的用法

Python 堆(Headp) Python中堆是一种基于二叉树存储的数据结构。 主要应用场景: 对一个序列数据的操作基于排序的操作场景,例如序列数据基于最大值最小值进行的操作。 堆的数据结构: Python 中堆是一颗平衡二叉树&am…

C语言复习第3章 函数

目录 一、函数介绍1.1 函数是什么1.2 C语言中函数的分类1.3 函数原型1.4 高内聚 低耦合1.5 C语言main函数的位置 二、函数的参数2.1 实参和形参2.2 函数的参数(实参)可以是表达式2.3 传值与传址(swap函数)2.4 明确形参是实参的临时拷贝2.5 void(如果不写函数返回值 默认是int)2…

MySQL 【日期】函数大全(六)

目录 1、TIME_FORMAT() 按照指定的格式格式化时间。 2、TIME_TO_SEC() 将指定的时间值转为秒数。 3、TIMEDIFF() 返回两个时间之间的差值。 4、TIMESTAMP() 累加所有参数并将结果作为日期时间值返回。 5、TIMESTAMPADD() 将指定的时间间隔加到一个日期时间值上并返回结果。…

sql注入盲注详解以及绕过waf方法

盲注 mysql函数普及 exists(): 用于判度条件是否满足,满足返回True,否则返回False if(条件,为真返回的值,为假返回的值):根据条件真假返回指定的值 length(string):计算出长度string 可以是任何字符串字面量或者字段名。 substr(…

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表? 可视化分组汇总表,是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度(如时间、地区、产品类型等)对数据进行分组,还能自动计算各组的统计指标&#xf…

JavaWeb 24.Vue3的简介和快速体验

目录 一、Vue3介绍 Vue的两个核心功能 ① 声明式渲染: ② 响应性: 什么是声明式响应 什么是编程式响应 什么是渐进式框架 特点: 二、Vue3快速体验 三、关于JavaScript和TypeScript的选择问题 春风若有怜花意,可否许我再少年 —— 24.10.19 一…

mysql 备份与恢复

目录 一、备份分类与方法 1.1 备份类型 1.2 备份策略 1.3 备份工具 二、完全备份与恢复 2.1 物理冷备 2.2 mysqldump逻辑热 备 (1)完全备份一个或多个完整的库(包括其中所有的表) (2)完全备份 My…

【排序】——2.快速排序法(含优化)

快速排序法 递归法 霍尔版本(左右指针法) 1.思路 1、选出一个key,一般是最左边或是最右边的。 2、定义一个begin和一个end,begin从左向右走,end从右向左走。(需要注意的是:若选择最左边的数据作为key,则…

第十六周:机器学习笔记

第十六周周报 摘要Abstratc一、机器学习1. Pointer Network(指针网络)2. 生成式对抗网络(Generative Adversarial Networks | GAN)——(上)2.1 Generator(生成器)2.2 Discriminator&…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

C语言函数实现:深入理解strcpy

文章目录 一、strcpy函数的基本用法二、strcpy函数的实现原理三、strcpy函数的应用场景四、strcpy函数的安全性问题五、结论 C语言函数实现&#xff1a;深入理解strcpy 在C语言编程中&#xff0c;字符串处理是一项基础且重要的任务。 strcpy函数作为C标准库中的一个基本函数&a…

计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理

上一篇文章中我们介绍了测序技术的由来与发展&#xff0c;那么在介绍第三代测序的时候&#xff0c;我们提到了关于测序深度和读长的问题&#xff0c;那么本篇文章就详解介绍一下。 计算生物学与生物信息学漫谈-1-测序一路走来-CSDN博客 目录 1.测序深度SEQUENCING DEPTH &…

现代物流管理:SpringBoot技术突破

3系统分析 3.1可行性分析 通过对本智能物流管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本智能物流管理系统采用SSM框架&#xff0c;JAVA作为开发语…