【抓取】6-DOF GraspNet 论文解读

【注】:本文地址:【抓取】6-DOF GraspNet 论文解读

若转载请于明显处标明出处。

前言

这篇关于生成抓取姿态的论文出自英伟达。我在读完该篇论文后我简单地对其进行一些概述,如有错误纰漏请指正!

论文概要

生成抓握姿势是机器人物体操纵任务的关键组成部分。 在本工作中,作者提出了抓取生成问题,即使用变分自动编码器对一组抓取进行采样,并利用抓取评估器模型对采样抓取进行评估微调细化。 抓取采样器和抓取refine网络都以深度相机观察到的三维点云作为输入。 作者评估了在模拟和现实世界机器人实验中的方法。 其方法在具有不同外观、尺度和权重的各种常用对象上获得88%的成功率。 作者直接在模拟环境中训练而在现实场景下进行实验测试,这其中没有任何额外的步骤。

整体网络概述

整体网络结构如下图:

首先,输入三维点云,通过 Grasp Sampler 也就是抓取采样网络,得到多个抓取;然后通过一个 Grasp Evaluater ,评估上一步生成的抓取的成功与否;在评估这一步中,通过 Grasp Refinement 将估计的抓取结果进行微调,使其更贴近于合理抓取,进一步地增大了抓取的成功率。

下面具体来讲一下每一部分。

Variational Grasp Sampler

抓取采样网络本质上是一个VAE,也就是变分自编码器。输入 \(X\) 是对原始目标三维点云采样得到的各个视角下的目标点云, \(g\) 其实就是抓取姿态,也就是抓取器在目标坐标系下的 \(R\) 和 \(T\)。通过VAE的编码器Q,将输入编码到隐层空间,得到低维度的隐层变量 \(z\) ,使其满足单位高斯分布;然后再通过对隐层变量 \(z\) 解码,得到与输入相近的 \(g\) 。整个VAE的训练过程就是让z尽量服从上面所说的单位高斯分布,所以在测试的时候,去掉Encoder,直接在单位高斯分布中随机取样,取代了需要编码得到的隐层变量 \(z\) ,再加上输入点云 \(X\) ,就可以得到网络所认为的绝对正确的重建抓取 \(\hat{g}\) 。在训练中,VAE的损失函数如下:

\[\mathcal{L}_{\mathrm{vae}}=\sum_{z \sim Q, g \sim G^{*}} \mathcal{L}(\hat{g}, g)-\alpha \mathcal{D}_{K L}[Q(z \mid X, g), \mathcal{N}(0, I)]
\]

该式采用随机梯度下降优化。 对于每个mini-batch,点云 \(X\) 从随机视点观察采样。 对于采样点云 \(X\) ,抓取 \(g\) 从Ground Truth集合\(G^{*}\)采用分层采样。

上式中的 \(\mathcal{L}(g, \hat{g})\) 具体式子如下:

\[\mathcal{L}(g, \hat{g})=\frac{1}{n} \sum\|\mathcal{T}(g ; p)-\mathcal{T}(\hat{g} ; p)\|_{1}
\]

此式约束重建抓取与输入抓取相近。 \(\mathcal{T}(\cdot ; p)\) 是机器人夹持器上一组预定义点 \(p\) 的变换,什么意思呢?换句话说就是,在目标坐标系中,把抓取器的模型通过 \(R\) 和 \(T\) 作变换,从而转变为目标坐标系下的抓取器点云。

Grasp Pose Evaluation

因为前一步生成的抓取在网络看来他一定是正确的(因为他认为自己的 \(z\) 服从单位高斯分布,那么从单位高斯分布中取样重建出的 \(\hat{g}\) 一定是正确的抓取),所以实际上要想知道生成的抓取在我们看来是否可行,就还需要加一个判断。因此作者在抓取采样网络之后加了个抓取姿态评估网络。

整个评估网络实质上是一个二分类网络,输入是目标和抓取器的合成渲染点云 \(X \cup X_{g}\) ,输出是成功率 \(s\) 。利用交叉熵损失优化抓取评价网络:

\[\mathcal{L}_{\text {evaluator }}=-(y \log (s)+(1-y) \log (1-s))
\]

式中 \(y\) 是抓取的Ground Truth二进制标签,1/0 代表 成功/失败。

在训练中采取了hard negative mining(有翻译叫他难负例挖掘),简单俩说就是建立了一个错题集 \(G^{-}\) :

\[G^{-}=\left\{g^{-} \mid \exists g \in G^{*}: \mathcal{L}\left(g, g^{-}\right)<\epsilon\right\}
\]

在训练过程中,这个错题集中包含:

  1. 从一组预先生成的负抓取中采样 \(g^{-}\) ;
  2. 或者通过随机扰动正抓取集 \(G^{*}\) 中的 \(g\) 使夹持器的网格要么与物体网格碰撞,要么将夹持器网格远离物体。

Iterative Grasp Pose Refinement

前面说完了,这一部分我觉得才是重点部分!通过前面的评估,已经得到了一些成功和失败的抓取例子,那么怎么提高成功率呢?换句话说,怎么让估计出来的抓取 \(g\) 更好呢?

为了达到这个目的,作者想到了一个巧妙的办法,既然评估网络中的 \(s\) 越大代表越可能成功,那么使得这些 \(s\) 都尽可能地变大并且趋近于1也就能让抓取 \(g\) 更好了呗~

实际上这就代表了能让 \(s\) 相对于 \(g\) 的函数 \(S\) 值变大的方向。这个方向就是 \(S\) 相对于 \(g\) 的梯度方向,也就得到了下面的式子:

\[\Delta g=\frac{\partial S}{\partial g}=\eta \times \frac{\partial S}{\partial \mathcal{T}(g ; p)} \times \frac{\partial \mathcal{T}(g ; p)}{\partial g}
\]

如果上面不理解,也没关系,有点绕口。我说一个一维曲线的例子。

如上图所示,\(y=f(\theta x)\) 代表拟合出来的曲线,其中 \(\theta\) 代表 \(x\) 的系数(等同于网络的权重参数)。现在假如输入是 \(x_{1}\) ,输出是 \(y_{1}\),然后我已知 \(y_{2}\) 是一个更好更大的输出值,那么我就需要改变 \(x\) 的值,让 \(x_{1}\) 变成 \(x_{2}\) :

\[x_{2}=x_{1}+\Delta x
\]

那么变化量 \(\Delta x\) 怎么得到呢?在这个例子里, \(x\) 变化无非两种情况,要么变大要么变小,要想知道我们需要他变大还是变小,只需要让函数 \(f\) 对 \(x\) 求导就得到了斜率,斜率就指明了 \(x\) 变化方向。在这个例子里面 \(x\) 变化方向是 \(x\) 轴的正方向。得到了变化方向我们乘上一个步长 \(\eta\) 就得到了我们需要的变化量 \(\Delta x\) :

\[\frac{\partial f}{\partial x} \cdot \eta=\Delta x
\]

Experiments

实验部分暂时不说了,作者说这抓取效果就是好反正。其他自对比实验也很有意义,有空再更。

【抓取】6-DOF GraspNet 论文解读的更多相关文章

  1. 写论文,没数据?R语言抓取网页大数据

    写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...

  2. 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 论文解读

    论文链接:https://arxiv.org/abs/1811.05320 最近发现博客好像会被CSDN和一些奇怪的野鸡网站爬下来?看见有人跟爬虫机器人单方面讨论问题我也蛮无奈的.总之原作者Misso ...

  3. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  4. GSM Sniffing入门之软件篇:GSMTAP抓取与SMS(Short Message Service)

    重点介绍如何利用50元左右的设备,抓包并还原SMS短信内容: ps:研究GSM Sniffing纯属个人兴趣,能抓SMS报文只是捡了个明文传输的漏子,切勿用于非法用途.就像sylvain说的,osmo ...

  5. 如何使用JAVA语言抓取某个网页中的邮箱地址

    现实生活中咱们常常在浏览网页时看到自己需要的信息,但由于信息过于庞大而又不能逐个保存下来. 接下来,咱们就以获取邮箱地址为例,使用java语言抓取网页中的邮箱地址 实现思路如下: 1.使用Java.n ...

  6. 学习笔记CB010:递归神经网络、LSTM、自动抓取字幕

    递归神经网络可存储记忆神经网络,LSTM是其中一种,在NLP领域应用效果不错. 递归神经网络(RNN),时间递归神经网络(recurrent neural network),结构递归神经网络(recu ...

  7. android adb命令 抓取系统各种 log

    getLog.bat: adb root adb remount adb wait-for-device adb logcat -v time > C:\log.txt 在Android中不同的 ...

  8. 用python做网页抓取与解析入门笔记[zz]

    (from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network A ...

  9. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

随机推荐

  1. P1526 [NOI2003]智破连环阵

    目录 题意描述 算法分析 闲话 初步分析 具体思路 剪枝一 剪枝二 剪枝三 总结一下 代码实现 预处理 剪枝一 剪枝二 剪枝三 二分图匹配 代码综合 结语 又是被楼教主虐的体无完肤的一天 题意描述 在 ...

  2. monkey及其的日志管理和分析

    1.   monkey 1.1.  介绍 通过monkey程序模拟用户触摸屏幕,滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,检查和评估被测程序的稳定性 ...

  3. vue+echarts+datav大屏数据展示及实现中国地图省市县下钻

    随着前端技术的飞速发展,大数据时代的来临,我们在开发项目时越来越多的客户会要求我们做一个数据展示的大屏,可以直观的展示用户想要的数据,同时炫酷的界面也会深受客户的喜欢. 大屏展示其实就是一堆的图表能够 ...

  4. 是什么让我节省了60%的编码时间?使用MBG

    MyBatis Generator简介 业务需求不断变更,数据库表结构不断修改,是我们逃不出的宿命.工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一 ...

  5. redis-server文件启动cmd一闪而过

    工作上需要在本地装redis,所以就帮别人排查了一个问题,就是redis服务双击了之后不能起来,就是一个黑色的cmd框一闪而过,正常的是这样的: 然而,我当时第一次接触windows上的redis服务 ...

  6. 【Java从入门到精通】day08-包机制-JavaDoc生成文档

    1.包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包语句的语法格式为: package pkg1[.pkg2[.pkg3...]]; 一般利用公司域名倒置作为包名(如www ...

  7. Java的注释-标识符和关键字

    1.Java注释 单行注释 多行注释 文档注释 代码示例 public class Hello{    public static void main(String[] args) {         ...

  8. sql sever 2008基础知识

    下面是一些总结,如果执行时发现错误,可以查看错误消息进行解决,也可上网查资料 数据库的组成: 主数据文件:有且只有一个,扩展名为.mdf. 次数据文件:可以没有,也可以有任意个.扩展名为.ndf. 日 ...

  9. RestPack Java实现Html转PDF文件

    最近公司需要将前端一个图表统计导出为pdf.前端导出显示的pdf还是可以的,但是将会导致页面不可用与卡死状态.所以由后端寻找解决方案. 以下为解决方案调研 https://www.cnblogs.co ...

  10. mysql_用命令行备份数据库

    MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysq ...