GraspNet 通用物品抓取数据集

GraspNet 是一个通用物品抓取的开源项目,现包含

  • GraspNet-1Biliion:使用平行爪进行抓取
  • SuctionNet-1Billion:使用吸盘进行抓取

下面就 GraspNet-1Billion 展开介绍

GraspNet-1Billion

物体抓取计算机视觉领域很具有挑战性的研究课题,也是人工智能可以直接影响现实生活的应用。目前对于简单背景、单个物体的研究精度基本达标,但对于拥挤场景研究较为缺乏。究其原因,一是训练数据不足,而是没有一个统一的评价标准。针对这项问题,GraspNet论文提供了一个大规模抓取姿态检测的数据集GraspNet-1Billion一个统一的评估系统GraspNet API以及一个baseline模型,供研究者研究学习快乐打榜。

数据集

GraspNet-1Billion数据集包含97280张RGB-D图像和超过10亿个抓取姿势(故称1Billion)。

该数据集包含97280张RGB-D图像,这些图像取自190多个杂乱场景的不同视角,其中每一个场景512张RGB-D图像(512×190=97280512\times 190=97280512×190=97280),对于数据集中88个物体提供了精确的3D网格模型,每个场景都密集标注物体的6D pose和抓取姿态。

数据集中共有88种不同物体,从YCB数据集中选取适合抓取的32个物体,从DexNet 2.0中选取13个对抗性对象,并收集自己的43个对象来构建整个物体集,包括洗发水、塑料盆、纸质包装盒等。每种物体均有准确的CAD模型。对每个物体的CAD模型,都可以通过受力分析来使用计算机自动进行标注。

数据集一共有190190190个场景,对于每个场景,本文从整个物体集中随机挑选大约10个物体,将它们随意地堆在一起。数据集将场景1∼1001\sim1001∼100定为训练集,101∼130101\sim 130101∼130为“见过的“物体,131∼160131\sim160131∼160为”熟悉的”物体,161∼190161\sim 190161∼190为“没见过”的物体。每个场景由两款相机各拍摄的256张图片构成,这512张图片是一个机械臂上绑了两个相机拍出来的,机械臂沿着固定的轨迹移动,覆盖四分之一球体上的256个不同视点,因为运动轨迹是确定的,所以只需要标注第一张图片,其他都可以通过三维空间中的投影变换得到;而对于第一张图片,也只需要标注物体的姿态,将场景中的物体与模型对齐后,就可以将CAD模型的标注信息投影到RGB-D图像上了。之后需要进行碰撞检查,去掉会产生碰撞的标注。

考虑到所有物体是已知的,标注抓取姿态分为两个阶段来进行,如图3所示。首先,对每个物体都要标注抓取姿势。

除此之外,采用解析计算的方法对每个抓取进行评分,力封闭度量在抓取评价中被证明是有效的:给定一个抓取姿态、关联物体和摩擦系数μ\muμ,力封闭度量输出二元标签,表示抓取在该系数下是否可以,评分表示为:s=1.1−μs = 1.1 - \mus=1.1−μ。(μ\muμ最小值为0.10.10.1)

通过这两个步骤,我们可以为每个场景生成密集的抓取集G(w)\mathbb{G}_{(w)}G(w)​。数据集中正标签和负标签的比例大约是 1:2。1

训练图片

训练图片共 100 个场景,每个场景由 Kinect 和 RealSense 相机分别拍摄 256 张 RGB-D 图片。一个场景中的信息如下

scene_0000
|-- object_id_list.txt              # 场景中的object-id
|-- rs_wrt_kn.npy                   # RealSense相对Kinect相机的位置shape: 256x(4x4)
|-- kinect                          # kinect相机数据
|   |-- rgb
|   |   |-- 0000.png to 0255.png    # 256 rgb images
|   `-- depth
|   |   |-- 0000.png to 0255.png    # 256 depth images
|   `-- label
|   |   |-- 0000.png to 0255.png    # 256 object mask images, 0 is background, 1-88 denotes each object (1-indexed), same format as YCB-Video dataset
|   `-- annotations
|   |   |-- 0000.xml to 0255.xml    # 256 object 6d pose annotation. ‘pos_in_world' and'ori_in_world' denotes position and orientation w.r.t the camera frame.
|   `-- meta
|   |   |-- 0000.mat to 0255.mat    # 256 object 6d pose annotation, same format as YCB-Video dataset for easy usage
|   `-- rect
|   |   |-- 0000.npy to 0255.npy    # 256 2D planar grasp labels
|   |
|   `-- camK.npy                    # camera intrinsic, shape: 3x3, [[f_x,0,c_x], [0,f_y,c_y], [0,0,1]]
|   `-- camera_poses.npy            # 256 camera poses with respect to the first frame, shape: 256x(4x4)
|   `-- cam0_wrt_table.npy          # first frame's camera pose with respect to the table, shape: 4x4
|
`-- realsense|-- same structure as kinect

train_1.ziptrain_4.zip四个压缩包中是采集的 99 个场景 Ground Truth 及其描述信息,下载下来之后将其中的内容全部解压到一个graspnet/scenes文件夹下,解压完成后目录结构如图:

|-- graspnet|-- scenes|   |-- scene_0000/|   |-- scene_0001/|   |-- ... ...|   `-- scene_0099/

紧接着是测试图片,其目录结构与训练图片相同,也解压到graspnet/scenes文件夹下:

|-- graspnet|-- scenes|   |-- scene_0000/|   |-- scene_0001/|   |-- ... ...|   `-- scene_0189/

6 DoF grasp labels 是抓取的标签,需要解压到graspnet/grasp_label文件夹下,

评价系统

同时,提供的评价系统通过分析计算可以直接反映抓取是否成功,做到不用详尽标注,就可以对任何抓取姿势进行评价。

对每一个预测的poseP^i\hat{\mathbf{P}}_iP^i​,通过检查位于pose夹爪之间的点云来确定其抓取的是哪个物体。然后,和标注的过程一样,通过力封闭度量(force-closure metric2)和摩擦系数μ\muμ确定一个二元的label。

对于抓取,我们对准确率更加关注,所以以Precision@kPrecision@kPrecision@k作为评价指标,Prescision@kPrescision@kPrescision@k定义为前kkk个抓取的准确性。APμAP_\muAPμ​表示对于kkk从1到50在摩擦系数为μ\muμ的情况下的平均准确率。并且定义AP\mathbf{AP}AP为μ=0.2\mu = 0.2μ=0.2到1.01.01.0步长0.20.20.2的平均APAPAP。(有点COCO mAP的意思)

为了避免全部抓到同一个点上,在评估前会跑一个pose-NMS(非极大值抑制)。

baseline模型

此外,还提出了一个端到端抓取姿态预测网络,点云作为输入,采用解耦的方式来学习 接近方向和操作参数(approaching direction and operation parameters),例如平面旋转、抓取宽度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSnENbmT-1646122082502)(media/graspnet-baseline/image-20220301143028250.png)]

抓取姿势表示

作者使用夹爪式机械臂进行抓取,抓取姿势G\mathbf GG表示为
G=[Rtw]\mathbf{G}=[\mathbf{R}\, \mathbf{t}\, w] G=[Rtw]
其中R∈R3×3\mathbf R \in \mathbb R^{3\times 3}R∈R3×3标志夹爪的方向,t∈R3×1\mathbf t \in \mathbb R^{3\times 1}t∈R3×1为抓取的重心,w∈Rw \in \mathbb Rw∈R为夹爪的宽度。但是,R\mathbf RR不是旋转矩阵:因为旋转矩阵必须是正交阵,约束其为正交阵不利于神经网络的训练。具体表示方式参考3

网络结构

网络结构分为三部分:ApproachNet、OperationNet、ToleranceNet。

Approach Network

Approach Network预测approach vector和可行的抓取点。

Base Network

骨干网络为PointNet++,输入N×3N \times 3N×3的点云,输出一个通道数为CCC的特征集。从中使用4方法采样出MMM个点。

Output Head

文章将approaching vector视为分类任务,将其分到VVV个预定义的viewpoints中。对于每个point,Approach Network输出两个值表示抓取成功度。因此Proposal Generation Network的输出为M×(2+V)M \times (2 + V)M×(2+V),222是抓取的成功度,VVV是每个viewpoint的成功度。

Loss Function

对于每一个预测的抓取位姿,没有落在物体上的抓取成功度为000。对于此外的点,如果在5mm范围内有一个正样本,那么其抓取成功度为111。没有找到对应ground truth的点被忽略。

对于每一个可行的点采样VVV个virtual approaching vectors。设在第iii个virtual view下第jjj个可抓取点为vi,jv_{i, j}vi,j​。检查其对应的ground truth v^i,j\hat{v}_{i, j}v^i,j​,只考虑5度之内的reference vector。损失函数如下:
LA({ci},{sij})=1Ncls∑iLcls(ci,ci∗)+λ11Nreg∑i∑jci∗1(∣vij,vij∗∣<5∘)Lreg(sijsij∗)L^A(\{c_i\}, \{s_{ij}\}) = \frac{1}{N_{cls}}\sum_i L_{cls}(c_i, c_i^*) + \lambda_1\frac{1}{N_{reg}}\sum_i \sum_j c_i^* \mathbf 1(|v_{ij}, v^*_{ij}|<5^\circ)L_{reg}(s_{ij}s^*_{ij}) LA({ci​},{sij​})=Ncls​1​i∑​Lcls​(ci​,ci∗​)+λ1​Nreg​1​i∑​j∑​ci∗​1(∣vij​,vij∗​∣<5∘)Lreg​(sij​sij∗​)

Operation Network

获取approaching vector后,模型进一步1)预测平面内的转动、2)approaching distance、3)夹爪宽度和4)抓取置信度。

Cylinder Region Transformation

模型对每一个candidate grasp建立一个统一的表达。因为approaching distance不是很敏感,所以我们将其分bin。对于给定的距离dkd_kdk​,将approaching vector附近的圆柱体中包含的点云采样出来。为了便于学习,通过转移矩阵Oij\mathbf O_{ij}Oij​将所有点转换到原点为抓取中心、zzz轴为vij\mathbf v_{ij}vij​的坐标系中。
Oij=[oij1,[0,−vij(3)]T,Vij]whereoij1=[0,−Vij(3),vij(2)]T×vij\mathbf O_{ij} = [\mathbf{o_{ij}^1}, [0, -\mathbf{v_ij}^{(3)}]^\mathbf{T}, \mathbf{V_{ij}}] \\ \text{where}\quad \mathbf{o_{ij}^1} = [0, -\mathbf{V_{ij}}^{(3)}, \mathbf{v_{ij}}^{(2)}]^\mathbf{T} \times \mathbf{v_{ij}} Oij​=[oij1​,[0,−vi​j(3)]T,Vij​]whereoij1​=[0,−Vij​(3),vij​(2)]T×vij​
vij(k)\mathbf{v_{ij}}^{(k)}vij​(k)为vij\mathbf{v_{ij}}vij​的第kkk个元素。

Loss function

LR(Rij,Sij,Wij)=∑d=1K(1Ncls∑ijLclsd(Rij,Rij∗)+λ21Nreg∑ijLregd(Sij,Sij∗)+λ31Nreg∑ijLregd(Wij,Wij∗)),L^{R}\left(R_{i j}, S_{i j}, W_{i j}\right)=\sum_{d=1}^{K}\left(\frac{1}{N_{c l s}} \sum_{i j} L_{c l s}^{d}\left(R_{i j}, R_{i j}^{*}\right)\right. +\lambda_{2} \frac{1}{N_{r e g}} \sum_{i j} L_{r e g}^{d}\left(S_{i j}, S_{i j}^{*}\right) +\left.\lambda_{3} \frac{1}{N_{r e g}} \sum_{i j} L_{r e g}^{d}\left(W_{i j}, W_{i j}^{*}\right)\right), LR(Rij​,Sij​,Wij​)=d=1∑K​(Ncls​1​ij∑​Lclsd​(Rij​,Rij∗​)+λ2​Nreg​1​ij∑​Lregd​(Sij​,Sij∗​)+λ3​Nreg​1​ij∑​Lregd​(Wij​,Wij∗​)),

Tolerance Network

在之前的工作之后,端到端的模型已经可以准确预测grasp了。更进一步,作者提出了Grasp Affinity Field来提升预测的鲁棒性。

对于每一个ground truth抓取位姿,在附近的球形空间搜索s>0.5s > 0.5s>0.5的最远点,将其设为GAF的目标,loss如下:
LF(Aij)=1Nreg∑d=1K∑ijLregd(Tij,Tij∗)L^{F}\left(A_{i j}\right)=\frac{1}{N_{r e g}} \sum_{d=1}^{K} \sum_{i j} L_{r e g}^{d}\left(T_{i j}, T_{i j}^{*}\right) LF(Aij​)=Nreg​1​d=1∑K​ij∑​Lregd​(Tij​,Tij∗​)

总loss

加权求和
L=LA({ci},{sij})+αLR(Rij,Sij,Wij)+βLF(Tij)L=L^{A}\left(\left\{c_{i}\right\},\left\{s_{i j}\right\}\right)+\alpha L^{R}\left(R_{i j}, S_{i j}, W_{i j}\right)+\beta L^{F}\left(T_{i j}\right) L=LA({ci​},{sij​})+αLR(Rij​,Sij​,Wij​)+βLF(Tij​)

作者把ArUco标志贴在物体上来确定物体在相机坐标系内的位置,做了真实的抓取实验。

模型超参数设置:

For our method, rotation angle is divided into 12 bins and approaching distance is divided into 4 bins with the value of 0.01, 0.02, 0.03, 0.04 meter. We set M = 1024 and V = 300. PointNet++ has four set abstraction layers with the radius of 0.04, 0.1, 0.2, 0.3 in meters and grouping size of 64, 32, 16 and 16, by which the point set is down-sampled to the size of 2048, 1024, 512 and 256 respectively. Then the points are up-sampled by two feature propagation layers to the size 1024 with 256-dim features. ApproachNet, OperationNet and ToleranceNet is composed of MLPs with the size of (256, 302, 302), (128, 128, 36) and (128, 64, 12) respectively. For the loss function, we set λ1, λ2, λ3, α, β = 0.5, 1.0, 0.2, 0.5, 0.1.

Our model is implemented with PyTorch and trained with Adam optimizer [18] on one Nvidia RTX 2080 GPU. During training, we randomly sample 20k points from each scene. The initial learning rate is 0.001 and the batch size is 4. The learning rate is decreased to 0.0001 after 60 epochs and then decreased to 0.00001 after 100 epochs.

我的fork

原始graspnet-baseline在内存使用策略上有一定问题。具体来说,其会将tolerance label以np.array的形式全部加载到内存里,占用的内存空间会超过40GB,一般的电脑都无法训练。针对此问题,本文作者对其标签加载策略进行了调整,在需要的时候才加载入内存,内存消耗大大降低,目前由batch_sizeDataLoader的策略决定,简单说就是不会炸内存了。

地址:https://github.com/Dandelight/graspnet-baseline

使用优化后的代码在2080Ti GPU 上训练一周,结果如下:



  1. 数据集2020(一)GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping https://blog.csdn.net/qq_40520596/article/details/107751346 ↩︎

  2. Van-Duc Nguyen. Constructing force-closure grasps. The International Journal of Robotics Research, 7(3):3–16, 1988. ↩︎

  3. Wadim Kehl, Fabian Manhardt, Federico Tombari, Slobodan Ilic, and Nassir Navab. Ssd-6d: Making rgb-based 3d detection and 6d pose estimation great again. In Proceedings of the IEEE International Conference on Computer Vision, pages 1521–1529, 2017. ↩︎

  4. Yuval Eldar, Michael Lindenbaum, Moshe Porat, and Yehoshua Y Zeevi. The farthest point strategy for progressive image sampling. IEEE Transactions on Image Processing, 6(9):1305–1315, 1997. ↩︎

GraspNet 通用物品抓取数据集相关推荐

  1. cornell grasp data 康奈尔大学抓取数据集 百度云

    国内下载较慢,康奈尔大学抓取数据集分享,给有用的人.科研之路道阻且长,互行方便. 康奈尔大学抓取数据集是基于深度学习方法实现机器人自主抓取的必备数据集, 直接推动了机器人自主抓取的发展.目前先进的基于 ...

  2. ACFUNProject{网页通用筛选抓取器+C#初学者简易教程}

    本文发布于ACFUN 转载请注明 (http://www.acfun.tv/v/ac291028/) 随着龙年的到来,ACFUN也要开始新的一年了,这新的一年里 总希望为AC娘做点什么事情,想来想去, ...

  3. 伯克利AI实验室最新发文:公布用于机器人抓取的Dexterity Network (Dex-Net) 2.0数据集...

    雷锋网AI科技评论按:伯克利AI实验室最新发文公布了用于机器人抓取的Dexterity Network (Dex-Net) 2.0数据集,这些数据集可以用来训练根据实际机器人的点云做抓取规划的神经网络 ...

  4. GraspNet:一种用于低功耗器件抓取实时检测的高效卷积神经网络

    GraspNet: An Efficient Convolutional Neural Network for Real-time Grasp Detection for Low-powered De ...

  5. 抓取领域相关论文及摘要(有源码会附上源码)

    目录 1.Vision-based Robotic Grasping From Object Localization, Object Pose Estimation to Grasp Estimat ...

  6. 抓取领域相关论文及摘要

    抓取规划问题是指确定物体与手指间的一系列接触位置,使得手指能抵抗任意外力且灵活操作物体的能力.传统的基于分析的抓取规划需要根据已知的被抓物体模型根据力闭合的条件判断抓取的好,这种方法只适合对已知的物体 ...

  7. 基于学习的机械臂抓取研究综述

    1.基于学习的机械臂抓取研究综述 Kleeberger, K., Bormann, R., Kraus, W. et al. A Survey on Learning-Based Robotic Gr ...

  8. 机械臂论文笔记(一)【基于卷积神经网络的二指机械手 抓取姿态生成研究 】

    基于卷积神经网络的二指机械手 抓取姿态生成研究 论文下载 摘要 第1章 绪论 1.1 抓取生成国内外研究现状 1.1.1已知物体抓取生成 1.1.2相似物体抓取生成 1.1.3 未知物体抓取生成 1. ...

  9. 基于视觉的机器人抓取:从物体定位、物体姿态估计到平行抓取器抓取估计

    编者荐语 抓取综合方法是机器人抓取问题的核心,本文从抓取检测.视觉伺服和动态抓取等角度进行讨论,提出了多种抓取方法. 转载自丨3D视觉开发者社区 目 录 / contents 1. 引言 1.1  抓 ...

最新文章

  1. Retrofit 原理解析
  2. asp实用类库--DataList
  3. Windows 上看端口 找PID
  4. 关于 Angular view Query 的 id 选择器问题的单步调试
  5. python挂机脚本阴阳师_Python简单实现阴阳师挂机脚本
  6. 一切都是对象,一切都是指针,一切都是东西(python的编程哲学)
  7. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题 Overlapping Rectangles(线段树)
  8. python爬取某鱼的直播间信息
  9. Matlab学习10-图像处理之傅里叶变换
  10. maven配置环境变量
  11. 计算机网络ABCD,计算机网络理及应用试卷(ABCDE).doc
  12. VBA IE对象的操作方法
  13. mysql explain 类似_Oracle有没有类似MySQL中的explain功能
  14. 使用VMwaver 克隆CentOS 6.9网卡配置报错
  15. Qt Opengl 给两个立方体设置两中不同颜色
  16. 安徽大学计算机专业参考书目,安徽大学计算机科学与技术(专业学位)研究生考试科目和考研参考书目...
  17. 数学建模暑期集训26:遗传算法
  18. GHM:Gradient Harmonized Single-stage Detector
  19. c++第七课 加法算数运算
  20. 我和极客时间合作了一门产品创新课

热门文章

  1. ifont图标和Fontawesome图标
  2. 因计算机磁盘硬件问题,Windows 无法启动的解决方案
  3. 【金猿案例展】银泰百货—通过数据智能实现“年货节”多维度衡量户外广告的投放效果...
  4. 零基础转行web前端应该选择哪个方向?
  5. 动态报表D-Query 通过字频优化字段选择
  6. 在tomcat8.0.x和tomcat9.0.x之间么突然冒出个tomcat 8.5
  7. 【暗月内网靶场】项目七(不那么简单的内网靶场)
  8. C++ ico转png 使用ImageMagick
  9. CSP认证题解第一题
  10. keil 软件如何生成.hex文件