机器人抓取检测——Dex-Net

news/2024/11/17 2:43:45/

如今,在各种期刊顶会都能看到平面抓取检测的论文,他们声称能应对多物体堆叠场景,然而实际效果都不尽人意,我认为主要原因有如下几点:

  1. 缺乏多物体堆叠场景的抓取数据集。现在最常用的Cornell Grasp Dataset, Jacquard数据集都是单目标场景。(像Dex-Net数据集和Google机器人工厂这种东西普通研究者就只能看着了)
  2. 现在的研究者过于强调端到端检测。
  3. 没有一个合适的抓取表示法。

如何利用少量数据集学习一个端到端网络或者整个方法中的一个子网络,实现堆叠场景中的平面抓取检测亟待解决。这里所说的堆叠场景是下左图,而不是大多数论文所说的右图:

简单说一下Dex-Net系列算法。Dex-Net共包括1.0--4.0四个版本,1.0为传统的解析法。2.0基于深度学习对平行板抓取配置进行质量评估,3.0针对吸盘进行设计,4.0结合了2.0和3.0两个算法。

算法输入为深度图,输出为平面抓取表示,即坐标点和抓取角,然后张开平行板抓取器至最大并垂直抓取。

算法主要包括两部分:采样抓取候选,抓取质量评估。

  • 采样抓取候选:从给定深度图中采样很多个候选的抓取配置——采用cross entropy method
  • 抓取质量评估:评估上一步每个抓取配置的质量[0,1],然后输出质量最高的抓取配置作为Grasp candidates,如下图。
  • 其中,第一步采用的传统方法,第二步采用的深度学习,为了训练这个网络,作者生成了一个包含670万个样本的数据集。为了完成两个阶段的衔接,神经网络的输入也不能是传统的深度图,而是经过精心设计裁剪后的深度图。整个算法最妙的地方在于突破了传统的抓取思路:端到端地抓取检测,直接预测最优的抓取配置。 

Dex-Net2.0采用的抓取表示为(x,y,theta),其中(x,y)为抓取点在深度图中的坐标,theta为抓取方向,在抓取时,抓取手张到最大然后垂直抓取,如下图:

抓取质量评估

 为了完成两个阶段的衔接,输入神经网络的数据就不能是传统的深度图,而是以抓取点为中心,抓取方向水平的一个深度图像块,下面详细介绍:

经过第一阶段,得到了很多个(x,y,theta)。既然是评估每个(x,y,theta)的质量,就必须把(x,y,theta)和深度图像都做为网络的输入,那么以何种方式输入呢?作者给的方案是:以抓取点(x,y)为中心,将深度图像旋转theta角,使抓取方向与图像的水平轴平行,然后以抓取点(x,y)为中心,切出一块32*32大小的深度图块,将这个深度图块输入网络,除此之外,还将抓取点(x,y)相对于桌面的高度z作为另一个输入。如下图。

采集数据集

从Dex-Net1.0中筛选了1500个3D物体模型(Dex-Net1.0是一个3D物体模型及抓取数据集),对其中的每个物体,采取同样的操作:将物体随机放在虚拟桌子上,获取当前状态下的垂直抓取表示即(x,y,theta)(可从Dex-Net1.0的标注中直接生成),这些抓取有些是可以用于实际抓取的,有些无法用于抓取。然后使用虚拟深度相机拍摄深度图,然后对每个抓取表示执行和2.1网络输入同样的操作,就得到了670万个正负样本,如下图:


http://www.ppmy.cn/news/60641.html

相关文章

【6D位姿估计】Point Pair Feature (PPF)

论文链接:Drost et al. Model Globally, Match Locally: Efficient and Robust 3D Object Recognition. CVPR, 2010. Model Globally, Match Locally 论文名字用 4 个词高度总结了 PPF 算法的精髓:“整体建模,局部匹配”。 下面这张图反应了论文的基本思想(算法概要): …

Java每日一练(20230507) 组合总和、缺失的正数、单词搜索II

目录 1. 组合总和 🌟🌟 2. 缺失的第一个正数 🌟🌟🌟 3. 单词搜索 II 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/…

虚函数、静态绑定和动态绑定

静态绑定 class Base { public:Base(int data) :ma(data) {}void show() { cout << "Base::show()" << endl; }void show(int) { cout << "Base::show(int)" << endl; }protected:int ma; };class Derive : public Base { public…

【LeetCode】9,回文数。 难度等级:简单。巧妙解法很多,值得推敲。

文章目录 一、题目二、我的解答&#xff1a;逐个判断对应位置的首末数字是否相同三、其他解答3.1 将数字x转为字符串进行处理3.2 反转一半数字进行比较 LeetCode 第9题&#xff0c;回文数&#xff1b;难度等级&#xff1a;简单 一、题目 二、我的解答&#xff1a;逐个判断对应…

【网络进阶】WebSocket协议

文章目录 1. Web实时技术的应用2. WebSocket协议介绍2.1 WebSocket的工作原理2.2 优点2.3. 使用场景2.4 实现细节 3. WebSocket服务器实现3.1 客户端代码&#xff08;HTML & JavaScript&#xff09;3.2 服务器端代码&#xff08;C&#xff09;3.3 测试结果 1. Web实时技术的…

CypherRat使用

cypherrat3.5 安卓远控&#xff0c;很早之前在tg下的&#xff0c;现在可能有高版本的 使用感受 图形化界面&#xff08;相比于msf&#xff09;可用于演练新场景&#xff0c;实战的话只能用xx破解版或是瑟瑟apk让人忽视风险继续安装由于国内安卓&#xff0c;部分功能失效 生成…

五种最危险的新兴网络攻击技术

SANS研究所的网络专家揭示了包括网络罪犯和民族国家行为者在内的网络攻击者正在使用的五种最危险的新兴网络攻击技术。在旧金山举行的RSA网络安全会议上&#xff0c;由SANS研究所的几位分析师组成的讨论组讨论了新兴的网络攻击战术、技术和程序&#xff0c;并提供了如何为企业做…

Python 面向对象

Python 是一种面向对象编程语言&#xff0c;支持类、对象、继承、多态等面向对象特性。下面是一些 Python 面向对象编程的基本概念和操作&#xff1a; 1. 定义类和对象 在 Python 中&#xff0c;可以使用 class 关键字定义类。类包含属性和方法&#xff0c;属性是类的数据成员…