Hana's Blog
Robotic Grasp Detection (3): 平面与 2.5-D 抓取检测Blur image

平面抓取的任务假设与表示(Task Assumptions and Representation)#

假设相机从上方向下观察桌面,机器人使用平行夹爪抓取桌上的纸盒。夹爪始终沿桌面法线下降,那么系统不再需要搜索任意三维接近方向,只需要回答四个核心问题:

  1. 夹爪中心应该落在哪个图像位置?
  2. 两个夹指应该沿哪个方向闭合?
  3. 夹爪张开多宽?
  4. 这个候选有多可靠?

这就是平面抓取检测(Planar Grasp Detection)的基本假设:固定或强约束夹爪接近方向(Approach Direction),把原本位于三维空间中的抓取搜索转化为图像平面上的低维检测问题。Jiang 等人使用旋转抓取矩形(Oriented Grasp Rectangle)同时表达抓取位置、方向、开口和夹爪物理范围,由此建立了经典的图像空间接口 [1]。

设输入图像的高度和宽度分别为 HI,WINH_I,W_I\in\mathbb N,其中 N\mathbb N 表示正整数集合。本文采用下面的矩形约定:

g2D=(u,v,θ,wpx,lpx,q).g_{\mathrm{2D}}=(u,v,\theta,w_{\mathrm{px}},l_{\mathrm{px}},q).

各分量的含义为:

  • (u,v)[0,WI)×[0,HI)(u,v)\in[0,W_I)\times[0,H_I) 是抓取中心的像素坐标;
  • θ[π/2,π/2)\theta\in[-\pi/2,\pi/2) 是夹爪闭合轴相对图像横轴的角度;
  • wpxR>0w_{\mathrm{px}}\in\mathbb R_{>0} 是闭合轴方向上的像素开口;
  • lpxR>0l_{\mathrm{px}}\in\mathbb R_{>0} 是与闭合轴垂直的夹指覆盖长度;
  • q[0,1]q\in[0,1] 是由具体标签定义决定的质量分数。

可以把它想象成一张俯视图上的夹爪 footprint:wpxw_{\mathrm{px}} 沿着两指相互靠近和分离的方向,表示两指之间需要留出的距离;lpxl_{\mathrm{px}} 沿着夹指本身延伸的方向,表示抓取矩形覆盖的接触区域长度。二者都是像素长度,但物理作用不同:wpxw_{\mathrm{px}} 主要决定夹爪要张开多大,lpxl_{\mathrm{px}} 主要参与标注区域和碰撞覆盖范围的表达。不同论文可能交换矩形的长、短边命名,因此必须以“闭合轴”和“垂直方向”的定义为准,而不能只看变量名。

不同数据集和代码库可能把 θ\theta 定义为矩形长边方向,而不是闭合轴方向,两者会相差 π/2\pi/2。实现时必须固定一个约定,并在数据读取、数据增强、网络解码和机器人控制中始终使用同一约定。

平行夹爪旋转 180180^\circ 后,两个夹指交换位置,但抓取几何并未改变,因此:

θθ+π.\theta\equiv\theta+\pi.

这也是为什么平面抓取角通常只保留长度为 π\pi 的区间,而不是完整的 [0,2π)[0,2\pi)

2.5-D 抓取表示的定义(Definition of 2.5-D Grasp Representation)#

仅有矩形还不能确定机器人末端在三维空间中的位置,因为 (u,v)(u,v) 只是像素坐标。加入中心深度 zR>0z\in\mathbb R_{>0} 后,可以写成:

g2.5D=(u,v,z,θ,wpx,q;a^C).g_{\mathrm{2.5D}}=(u,v,z,\theta,w_{\mathrm{px}},q;\hat a_C).

其中 zz 的单位通常是米,a^CR3\hat a_C\in\mathbb R^3 是用相机坐标系表示的单位接近方向。分号表示 a^C\hat a_C 往往由“相机俯视桌面”“夹爪竖直下降”等系统先验固定,而不是由网络自由预测。

这个表示已经可以恢复三维平移、绕接近轴的旋转和夹爪开口,但它仍未在三维旋转群中搜索任意滚转(Roll)、俯仰(Pitch)和偏航(Yaw),所以通常称为 2.5-D 抓取(2.5-D Grasp)。

抓取检测首先是一个监督学习问题(Grasp Detection as Supervised Learning)#

在写网络结构之前,先把问题写成机器学习可以处理的形式。对第 nn 个样本,输入不是一张抽象的“图片”,而是一个有明确维度的张量:

X(n)RCin×HX×WX.X^{(n)}\in\mathbb R^{C_{\mathrm{in}}\times H_X\times W_X}.

其中 CinNC_{\mathrm{in}}\in\mathbb N 是输入通道数:RGB 输入通常为 33,单通道深度输入为 11,RGB-D 早期融合输入通常为 44HX,WXNH_X,W_X\in\mathbb N 是网络输入的高度和宽度。训练时会把多个这样的样本组成一个批次(Batch)。

标签也不是一个单独的“正确矩形”。一张图像可能有多个可行抓取,所以标签应被理解为一个结构化目标 Y(n)Y^{(n)},其中包含一个或多个抓取矩形,或者由它们栅格化得到的质量、角度和开口目标图。网络用参数集合 ϑ\vartheta 表示从输入到预测的映射:

Y^=Fϑ(X).\hat Y=F_{\vartheta}(X).

训练的目标是让预测 Y^\hat Y 与标签 YY 接近。给定训练集 Dtrain\mathcal D_{\mathrm{train}},目标可以写成:

ϑ=argminϑ  1Dtrain(X,Y)DtrainL(Fϑ(X),Y).\vartheta^*=\underset{\vartheta}{\arg\min}\; \frac{1}{|\mathcal D_{\mathrm{train}}|} \sum_{(X,Y)\in\mathcal D_{\mathrm{train}}} \mathcal L(F_{\vartheta}(X),Y).

这里 L\mathcal L 是损失函数(Loss Function)。训练集(Training Set)用于更新参数,验证集(Validation Set)用于选择模型和阈值,测试集(Test Set)只用于最终报告;如果训练损失下降而验证损失上升,就需要警惕过拟合(Overfitting)。

多头输出与任务分解(Multi-Head Prediction and Task Decomposition)#

平面抓取至少同时包含“这里能不能抓”“夹爪朝哪个方向闭合”和“夹爪需要张开多宽”三个不同性质的量。把它们全部编码成一个类别会导致角度和开口的信息丢失;把它们直接拼成一个连续向量,又会使角度周期和多解问题变得难以处理。因此,常见做法是让网络共享前面的视觉特征,再使用多个输出头(Prediction Heads)分别预测:

Fϑ(X)=(Q^,C^,S^,W^).F_{\vartheta}(X)= \left(\hat Q,\hat C,\hat S,\hat W\right).

其中 Q^RHO×WO\hat Q\in\mathbb R^{H_O\times W_O} 是每个输出位置的抓取质量或可抓取性分数,C^,S^RHO×WO\hat C,\hat S\in\mathbb R^{H_O\times W_O}cos(2θ)\cos(2\theta)sin(2θ)\sin(2\theta)W^RHO×WO\hat W\in\mathbb R^{H_O\times W_O} 是归一化开口。HO,WONH_O,W_O\in\mathbb N 是输出图的空间尺寸;它们可以等于输入尺寸,也可以是输入尺寸的下采样版本。把四个头沿通道维堆叠后,单个样本的输出可以看成 Y^R4×HO×WO\hat Y\in\mathbb R^{4\times H_O\times W_O}

这被称为多任务学习(Multi-Task Learning):多个任务共享一部分参数,但每个任务使用适合自身目标的损失。质量预测通常是分类或有界回归,角度预测是周期变量回归,宽度预测是连续回归。它们不应该被当成完全相同的监督问题。

CNN 如何把图像变成抓取特征(From Image to Grasp Features)#

卷积神经网络(Convolutional Neural Network, CNN)的关键不是把每个像素独立送入全连接层,而是使用同一组局部滤波器(Filter)在整张图像上滑动。这样,网络可以在不同位置识别相似的边缘、纹理和几何结构,同时保留这些结构出现在哪里。

在网络中,图像和中间结果都表示为特征图(Feature Map)。第 ll 层特征图可以记为:

X(l)RCl×Hl×Wl,X^{(l)}\in\mathbb R^{C_l\times H_l\times W_l},

其中 ClC_l 是通道数,Hl,WlH_l,W_l 是空间尺寸。输入 RGB 图像的通道通常是 33;经过卷积后,通道不再直接对应颜色,而是对应网络学到的边缘、纹理、表面方向或更高层视觉模式。

一个卷积层主要由三个设置决定:

  • Kernel Size:局部滤波器的空间范围,例如 3×33\times3
  • Stride:滤波器每次移动多少像素,步幅大于 11 会降低空间分辨率;
  • Padding:是否在边缘补充像素,使输出尺寸保持或接近输入尺寸。

卷积后通常接非线性激活函数,例如 ReLU。多层卷积叠加后,浅层特征倾向于描述边缘和局部深度变化,深层特征则能结合更大的区域判断物体轮廓、凹槽和可接近空间。

单个特征图位置能够看到的原图区域称为感受野(Receptive Field)。下采样会扩大有效感受野、降低计算量,但也会损失精细的位置分辨率。抓取检测因此经常在网络后部使用上采样(Upsampling)或跳跃连接(Skip Connection),把语义信息和局部空间细节重新结合起来。

Backbone、Head 和全卷积输出#

一个典型的抓取检测器可以分为:

  1. Backbone:通过卷积层提取共享视觉特征 FRCF×HF×WFF\in\mathbb R^{C_F\times H_F\times W_F}
  2. Quality Head:预测每个位置是否适合抓取;
  3. Angle Head:预测双角编码 C^,S^\hat C,\hat S
  4. Width Head:预测归一化开口 W^\hat W
  5. Decoder:把特征恢复到输出分辨率,并生成 Q^,C^,S^,W^\hat Q,\hat C,\hat S,\hat W

全卷积网络(Fully Convolutional Network, FCN)不在末端把整张图压缩成一个向量,而是保留特征图的空间布局:

Fϑ(X)=Headϑ(Backboneϑ(X)).F_{\vartheta}(X)= \operatorname{Head}_{\vartheta} \left(\operatorname{Backbone}_{\vartheta}(X)\right).

因此,网络可以一次前向传播为许多图像位置同时预测抓取。这就是稠密抓取检测(Dense Grasp Detection)的基础。输出图可以与输入同分辨率,也可以更小;分辨率越低,计算越快,但中心位置和开口尺度的量化误差越明显。后续标签生成和候选解码必须使用同一个输出坐标系。

输入模态与预处理(Input Modalities and Preprocessing)#

平面抓取并不等于只能使用 RGB。常见输入可以是 RGB、深度或 RGB-D,它们提供的信息不同:

  • RGB 图像提供纹理、颜色、物体边界和一定的语义信息;
  • 深度图提供度量尺度、表面起伏和物体相对桌面的高度;
  • RGB-D 融合可以同时利用外观与几何,但必须处理两种模态不同的数值分布和失效方式。

Kumra 和 Kanan 使用独立网络分支提取 RGB 与深度特征,再进行融合,说明“使用哪些模态”和“如何融合模态”都会影响检测结果 [4]。早期融合(Early Fusion)通常把归一化深度作为第四通道,此时 XR4×HX×WXX\in\mathbb R^{4\times H_X\times W_X};后期融合(Late Fusion)分别编码 XrgbR3×HX×WXX_{\mathrm{rgb}}\in\mathbb R^{3\times H_X\times W_X}XdR1×HX×WXX_{\mathrm{d}}\in\mathbb R^{1\times H_X\times W_X},再合并特征,参数和计算更多,但更容易保留模态特有的特征。如果额外输入深度有效性掩码,通道数还会相应增加。

以深度输入为例,一个可复现的预处理过程通常包括:

  1. 将原始深度统一换算成米;
  2. 把零值、无穷值和超出工作距离的值标记为无效;
  3. 对小空洞进行插值,但同时保留有效性掩码(Validity Mask);
  4. 围绕工作空间裁剪,并缩放到网络输入尺寸;
  5. 减去有效像素均值或按训练集统计量标准化;
  6. 对深度值进行合理截断,避免极端离群值主导梯度。

wrapπ()\operatorname{wrap}_\pi(\cdot) 为把角度按周期 π\pi 映射回 [π/2,π/2)[-\pi/2,\pi/2) 的操作。如果训练时把图像旋转 δR\delta\in\mathbb R,所有抓取中心和角度也必须同步变换,角度变为 θ=wrapπ(θ+δ)\theta'=\operatorname{wrap}_\pi(\theta+\delta)。如果图像缩放了倍数 γR>0\gamma\in\mathbb R_{>0},像素开口也必须变为 wpx=γwpxw'_{\mathrm{px}}=\gamma w_{\mathrm{px}}。只增强图像而不更新抓取标签,会直接制造错误监督。

抓取标注到稠密监督目标(From Grasp Annotations to Dense Targets)#

Cornell Grasp Dataset 为同一张 RGB-D 图像提供多个正、负抓取矩形;Jacquard 则通过仿真构造约 5400054\,000 张图像、约 1100011\,000 个物体和约 1.11.1 百万个成功抓取位置 [5]。数据集给出的是抓取集合,而不是唯一答案,这是平面抓取训练中最重要的多解性来源。

候选分类和直接回归使用什么标签#

候选分类方法先生成一个矩形 RR,再判断它是否与任一正标注匹配。训练标签通常是二值类别,或由矩形匹配程度得到的连续分数。直接回归方法则需要为一个图像位置选择具体回归目标;如果同一位置附近存在多个方向差异很大的正确抓取,随意取平均值可能得到一个不可执行的中间方向。

稠密方法如何把矩形栅格化#

设网络输出高度和宽度为 HO,WONH_O,W_O\in\mathbb N。对每个输出像素,稠密方法可以预测四张图:

Q^,C^,S^,W^RHO×WO.\hat Q,\hat C,\hat S,\hat W\in\mathbb R^{H_O\times W_O}.

其中 Q^\hat Q 是质量图,C^\hat CS^\hat S 是双角编码图,W^\hat W 是归一化开口图。对应监督信号记为 Q,C,S,WRHO×WOQ^*,C^*,S^*,W^*\in\mathbb R^{H_O\times W_O},正区域掩码记为 M{0,1}HO×WOM\in\{0,1\}^{H_O\times W_O}

对于第 jj 个正抓取矩形,其角度和像素开口分别记为 θj\theta_jwpx,jw_{\mathrm{px},j}。在该矩形的正区域内写入:

Quv=1,Cuv=cos(2θj),Suv=sin(2θj),Q^*_{uv}=1, \qquad C^*_{uv}=\cos(2\theta_j), \qquad S^*_{uv}=\sin(2\theta_j), Wuv=clip(wpx,jwpx,max,0,1),Muv=1.W^*_{uv}=\operatorname{clip} \left( \frac{w_{\mathrm{px},j}}{w_{\mathrm{px},\max}},0,1 \right), \qquad M_{uv}=1.

这里 wpx,maxR>0w_{\mathrm{px},\max}\in\mathbb R_{>0} 是训练时允许的最大像素开口,clip(x,0,1)\operatorname{clip}(x,0,1) 表示把标量 xx 截断到区间 [0,1][0,1]。背景位置只需要监督 Quv=0Q^*_{uv}=0;背景没有唯一正确的角度和开口,因此不应该用大量人为的零角度、零宽度去训练回归头。

GG-CNN 将标注矩形的中心三分之一区域用作夹爪中心的正掩码,并将角度编码为 sin(2θ)\sin(2\theta)cos(2θ)\cos(2\theta),从而避免 π/2-\pi/2π/2\pi/2 处的标签跳变 [6]。缩小正区域还有一个直观作用:矩形边缘的像素并不一定是安全的夹爪中心。

如果网络输出分辨率低于输入分辨率,矩形中心和端点必须先用同一个几何变换映射到输出网格。非等比例缩放会同时改变角度和开口,不能只给 u,v,wpxu,v,w_{\mathrm{px}} 分别乘一个常数;更稳妥的做法是变换矩形四个顶点,再重新计算中心、方向和边长。相应地,wpx,maxw_{\mathrm{px},\max} 必须明确是在输出网格还是输入图像坐标中定义:若在输出网格中定义,解码得到的宽度还要乘以输出到输入的空间尺度,中心坐标也要使用同一尺度恢复。

多个正矩形发生重叠时,一个像素可能对应多个正确方向。实现可以保留离该像素最近的标注、保留质量最高的标注,或使用多峰表示;直接对原始角度做算术平均通常不正确。下面设一幅图像共有 NRNN_R\in\mathbb N 个正抓取矩形。

Algorithm 1 由抓取矩形生成稠密监督图
Input:

正抓取矩形集合 {Rj}j=1NR\{R_j\}_{j=1}^{N_R}、输出分辨率 HO×WOH_O\times W_O 和最大像素开口 wpx,maxw_{\mathrm{px},\max}

Output:
监督图 Q,C,S,WQ^*,C^*,S^*,W^* 和正区域掩码 MM
  1. Q,C,S,WQ^*,C^*,S^*,W^*MM 初始化为零
  2. for 对每个正抓取矩形 RjR_j
  3. 将矩形中心区域栅格化为像素集合 Ωj\Omega_j
  4. for 对每个 (u,v)Ωj(u,v)\in\Omega_j
  5. 根据预先确定的冲突规则选择当前标注 jj
  6. 写入 Quv=1Q^*_{uv}=1Muv=1M_{uv}=1
  7. 写入 Cuv=cos(2θj)C^*_{uv}=\cos(2\theta_j)Suv=sin(2θj)S^*_{uv}=\sin(2\theta_j)
  8. 写入归一化开口 WuvW^*_{uv}
  9. end for
  10. end for
  11. return Q,C,S,W,MQ^*,C^*,S^*,W^*,M

抓取检测范式与输出形式(Detection Paradigms and Output Representations)#

候选生成与分类(Proposal Generation and Classification)#

Jiang 等人先用快速特征把数千万个潜在矩形缩减到约百个,再用更复杂的特征精排 [1];Lenz 等人随后使用两级级联网络(Cascaded Network)完成类似的粗筛和精排 [2]。其基本思想并不复杂:

  1. 在图像位置、角度、尺度和开口上离散采样;
  2. 将每个候选区域旋转、裁剪到统一方向和尺寸;
  3. 用快速分类器删除明显错误的候选;
  4. 用更强的分类器对剩余候选打分;
  5. 对近重复矩形做非极大值抑制(Non-Maximum Suppression, NMS)。

若位置、角度和开口分别使用 Nu,Nv,Nθ,NwNN_u,N_v,N_\theta,N_w\in\mathbb N 个网格值,候选总数 NcandNN_{\mathrm{cand}}\in\mathbb N 为:

Ncand=NuNvNθNw.N_{\mathrm{cand}}=N_uN_vN_\theta N_w.

角度网格步长为 ΔθR>0\Delta\theta\in\mathbb R_{>0} 时,最坏量化误差约为 Δθ/2\Delta\theta/2。缩小步长可以提高覆盖率,但候选数量会成倍增加。候选分类器再准确,也无法恢复采样器从未提出的抓取。

抓取矩形直接回归(Direct Grasp Rectangle Regression)#

Redmon 和 Angelova 直接从整幅图像回归抓取矩形,MultiGrasp 版本进一步输出多个候选 [3]。这种方法省去了显式滑窗,但需要处理“同一物体有多个正确答案”的问题:如果损失函数让网络在多个方向之间取平均,预测结果可能恰好落在所有正确模式之间。

角度的 π\pi 周期也不能直接使用普通平方误差。令角度编码 a,b[1,1]a,b\in[-1,1] 为:

a=cos(2θ),b=sin(2θ).a=\cos(2\theta), \qquad b=\sin(2\theta).

网络预测 a^,b^R\hat a,\hat b\in\mathbb R 后,通过:

θ^=12atan2(b^,a^)\hat\theta=\frac{1}{2}\operatorname{atan2}(\hat b,\hat a)

恢复角度。这样,θ\thetaθ+π\theta+\pi 会映射到同一个编码,角度区间边界也不再产生人为的大误差。

这里 atan2(y,x)\operatorname{atan2}(y,x) 表示根据二维向量 (x,y)(x,y) 的象限返回角度,而不是只计算普通的 arctan(y/x)\arctan(y/x)

稠密抓取图预测(Dense Grasp Map Prediction)#

生成式抓取卷积神经网络(Generative Grasping Convolutional Neural Network, GG-CNN)把深度图直接映射为质量、角度和开口图 [6]。与“生成很多矩形再逐个分类”相比,稠密预测只进行一次共享卷积计算,适合实时和闭环控制。

设预处理后的输入张量为 XRCin×HX×WXX\in\mathbb R^{C_{\mathrm{in}}\times H_X\times W_X},其中 Cin,HX,WXNC_{\mathrm{in}},H_X,W_X\in\mathbb N 分别是输入通道数、高度和宽度;网络参数集合记为 ϑ\vartheta。稠密预测器可写成:

Fϑ(X)=(Q^,C^,S^,W^).F_\vartheta(X)=(\hat Q,\hat C,\hat S,\hat W).

原始 GG-CNN 使用 300×300300\times300 深度输入和全卷积网络,输出与图像对齐的抓取图,并报告约 19ms19\,\mathrm{ms} 的完整感知流水线以及最高 50Hz50\,\mathrm{Hz} 的闭环运行 [6]。这些数字说明低延迟设计的价值,但只适用于论文的硬件、相机和竖直接近协议。

基于关键点的抓取表示(Keypoint-Based Grasp Representation)#

关键点表示(Keypoint Representation)不直接回归矩形角度。设左右夹指对应的二维关键点为 kL,kRR2k_L,k_R\in\mathbb R^2,则中心、开口和闭合轴角度可以恢复为:

[uv]=kL+kR2,wpx=kRkL2,\begin{bmatrix}u\\v\end{bmatrix} =\frac{k_L+k_R}{2}, \qquad w_{\mathrm{px}}=\lVert k_R-k_L\rVert_2, θ=atan2((kRkL)y,(kRkL)x).\theta=\operatorname{atan2} \left( (k_R-k_L)_y, (k_R-k_L)_x \right).

其中下标 xxyy 分别表示二维向量的横、纵分量。GKNet 使用成对关键点和中心信息检测抓取,并通过关联机制判断哪些左右关键点属于同一个候选 [7]。这种表示绕开了直接角度回归,但引入了新的问题:关键点配对错误会生成跨物体抓取,小物体上的一两个像素偏差也会显著放大角度误差。

稠密抓取检测的训练目标与优化(Training Objective and Optimization)#

设所有输出像素组成集合 Ω\Omega,正区域像素集合为:

Ω+={(u,v)ΩMuv=1}.\Omega_+=\{(u,v)\in\Omega\mid M_{uv}=1\}.

质量头可以使用均方误差或二元交叉熵,记其逐像素损失为 q(Q^uv,Quv)R0\ell_q(\hat Q_{uv},Q^*_{uv})\in\mathbb R_{\ge0}。角度和宽度只在 Ω+\Omega_+ 上回归。令 λq,λa,λwR>0\lambda_q,\lambda_a,\lambda_w\in\mathbb R_{>0} 为损失权重,总损失记为 LR0\mathcal L\in\mathbb R_{\ge0}。一个清晰的多头损失写法是:

L= λqΩ(u,v)Ωq(Q^uv,Quv)+1max(1,Ω+)(u,v)Ω+[λa(C^uvCuv)2+λa(S^uvSuv)2+λw(W^uvWuv)2].\begin{aligned} \mathcal L =&\ \frac{\lambda_q}{|\Omega|} \sum_{(u,v)\in\Omega} \ell_q(\hat Q_{uv},Q^*_{uv})\\ &+\frac{1}{\max(1,|\Omega_+|)} \sum_{(u,v)\in\Omega_+} \Bigl[ \lambda_a(\hat C_{uv}-C^*_{uv})^2 +\lambda_a(\hat S_{uv}-S^*_{uv})^2 +\lambda_w(\hat W_{uv}-W^*_{uv})^2 \Bigr]. \end{aligned}

这个掩码结构解决了一个常见错误:若在背景像素上也回归角度和开口,数量庞大的背景零标签会压过真正有意义的正抓取监督。

质量图仍然可能有严重的正负不平衡。可以采用正类加权二元交叉熵、焦点损失(Focal Loss)或正负像素采样,但权重必须在验证集上固定,不能根据测试集调节。

训练时至少应监控三类量:

  • 质量图是否把高分放在物体可抓区域,而不是桌面或深度空洞;
  • 正区域上的角度误差是否按 π\pi 周期计算;
  • 解码后的物理开口是否落在真实夹爪范围内。

只查看总损失下降,很难发现角度通道塌缩、宽度尺度错误或质量图全部接近零等问题。

输出层和损失如何配合#

网络最后一层的原始输出(Logits)通常还要经过适合任务的激活:质量和宽度头常被限制到 (0,1)(0,1),角度头则保留两个连续通道,之后用它们的方向计算 atan2\operatorname{atan2}。质量标签是二值“是否可抓”时,可以使用二元交叉熵(Binary Cross-Entropy, BCE);质量标签是连续分数时,可以使用均方误差(Mean Squared Error, MSE)。损失形式应与标签含义匹配。

批训练与参数更新(Batch Training and Parameter Updates)#

训练一个批次时,网络依次执行前向传播(Forward Pass)、损失计算、反向传播(Backpropagation)和参数更新。以下流程把数据增强、标签生成、训练和验证放在同一条链路中:

Algorithm 2 训练一个稠密平面抓取检测器
Input:
训练集 Dtrain\mathcal D_{\mathrm{train}}、验证集 Dval\mathcal D_{\mathrm{val}}、初始参数 ϑ\vartheta、学习率 η\eta 和训练轮数 NepochN_{\mathrm{epoch}}
Output:
验证集上表现最好的网络参数 ϑ\vartheta^*
  1. for 对每个训练轮次 e=1,,Nepoche=1,\ldots,N_{\mathrm{epoch}}
  2. forDtrain\mathcal D_{\mathrm{train}} 取一个批次 (X,Y)(X,Y)
  3. 同步变换输入图像和抓取标签,并生成 Q,C,S,W,MQ^*,C^*,S^*,W^*,M
  4. 前向传播:(Q^,C^,S^,W^)=Fϑ(X)(\hat Q,\hat C,\hat S,\hat W)=F_{\vartheta}(X)
  5. 使用掩码损失计算 L\mathcal L,只在 Muv=1M_{uv}=1 的位置回归角度和宽度
  6. 反向传播并计算 ϑL\nabla_{\vartheta}\mathcal L
  7. 用优化器更新 ϑ\vartheta
  8. end for
  9. 在验证集上关闭梯度,解码候选并记录损失、矩形指标和质量阈值下的结果
  10. 保存验证集指标最好的参数,而不是默认保存最后一个轮次的参数
  11. end for
  12. return 验证集选择的 ϑ\vartheta^*

这个流程中,物理抓取执行通常不在反向传播路径内。训练标签来自数据集或成功抓取记录,网络先学习图像到抓取表示的映射;深度反投影、碰撞检查和机器人执行主要发生在推理后的后处理阶段。若要让网络直接学习执行成功概率,就需要额外的真实或仿真执行数据,以及与执行结果对应的损失设计,不能把离线矩形标签自动等同于真实成功率。

稠密输出解码与候选生成(Dense Output Decoding and Candidate Generation)#

网络输出四张图以后,不能简单取质量图最大像素就结束。一个可执行的推理过程通常包括:

  1. 用有效深度掩码和机器人工作空间掩码删除无效像素;
  2. 对质量图做轻度高斯平滑,降低单像素噪声;
  3. 找局部极大值,而不是只保留全局最大值;
  4. 对位置接近、角度相近的候选做 NMS;
  5. 在峰值处读取双角编码和归一化开口;
  6. 反投影为 2.5-D 抓取;
  7. 检查夹爪体积、桌面碰撞、逆运动学和接近轨迹。

设局部峰值共有 NPNN_P\in\mathbb N 个,并记第 kk 个峰值为 (uk,vk)(u_k,v_k),其中 k=1,,NPk=1,\ldots,N_P。第 kk 个候选的角度和像素开口解码为:

θk=12atan2(S^ukvk,C^ukvk),\theta_k=\frac{1}{2} \operatorname{atan2} (\hat S_{u_kv_k},\hat C_{u_kv_k}), wpx,k=wpx,maxW^ukvk.w_{\mathrm{px},k} =w_{\mathrm{px},\max}\hat W_{u_kv_k}.

如果 (C^ukvk,S^ukvk)(\hat C_{u_kv_k},\hat S_{u_kv_k}) 的模长接近零,说明网络没有给出稳定方向,该候选应降低分数或直接丢弃。NMS 也应同时考虑位置和 π\pi 周期角度,否则同一物理抓取可能以 θ\thetaθ+π\theta+\pi 重复出现。下面设质量阈值为 τq[0,1]\tau_q\in[0,1],最多继续检查 NmaxNN_{\max}\in\mathbb N 个候选。

Algorithm 3 从稠密抓取图生成可执行候选
Input:

预测图 Q^,C^,S^,W^\hat Q,\hat C,\hat S,\hat W、深度图 DD、质量阈值 τq\tau_q、最大候选数 NmaxN_{\max} 和相机/机器人标定参数

Output:
按执行分数排序的 2.5-D 抓取候选
  1. 使用有效深度和工作空间掩码过滤 Q^\hat Q
  2. 对质量图平滑并提取所有满足 Q^uvτq\hat Q_{uv}\ge\tau_q 的局部峰值
  3. 按质量排序,并在位置与周期角度空间执行 NMS
  4. for 对前 min(NP,Nmax)\min(N_P,N_{\max}) 个保留峰值 (uk,vk)(u_k,v_k)
  5. 解码 θk\theta_kwpx,kw_{\mathrm{px},k}
  6. 从局部有效深度估计 zkz_k
  7. 反投影中心与开口,得到 2.5-D 抓取
  8. 检查夹爪宽度、三维碰撞、逆运动学和接近轨迹
  9. if 候选通过全部检查
  10. 加入可执行候选集合
  11. end if
  12. end for
  13. return 按网络质量与执行余量联合排序后的候选

网络置信度与执行可行性排序(Confidence and Executability Ranking)#

网络分数通常只反映训练标签。真实系统还会使用独立的执行特征重新排序,例如:

  • 夹爪与桌面的最小距离;
  • 深度邻域中的有效像素比例;
  • 抓取中心到图像边界的距离;
  • 机械臂逆运动学余量;
  • 接近轨迹长度;
  • 候选在连续多帧中的稳定程度。

因此,最终分数可以是网络质量与执行余量的组合,但每一项都必须在验证阶段固定。把失败候选过滤掉以后再报告“网络准确率”,会混淆检测器本身和整个机器人流水线的贡献。

网络输出如何进入机器人执行(From Network Output to Robot Execution)#

到这里,网络已经给出了图像坐标中的候选;物理转换是把它接入机器人系统所需的接口,而不是训练网络的主体。尤其要区分两个长度:wpxw_{\mathrm{px}} 是需要换算成夹爪实际开口的量,lpxl_{\mathrm{px}} 通常只描述矩形在夹指方向上的覆盖范围,用于标签区域、几何检查或评价,并不直接等于夹爪的张开宽度。

读取深度并恢复三维中心#

设深度图为 DRHI×WID\in\mathbb R^{H_I\times W_I}D(v,u)D(v,u) 表示像素 (u,v)(u,v) 的度量深度。由于单个像素可能是空洞或离群值,可以在半径为 rNr\in\mathbb N 的邻域 Nr(u,v)\mathcal N_r(u,v) 内取有效深度中位数:

z=median{D(y,x)(x,y)Nr(u,v), D(y,x)>0}.z=\operatorname{median} \left\{ D(y,x)\mid(x,y)\in\mathcal N_r(u,v),\ D(y,x)>0 \right\}.

如果没有有效值,应丢弃候选。设相机内参矩阵为 KR3×3K\in\mathbb R^{3\times3},齐次像素向量为 s~=(u,v,1)TR3\tilde s=(u,v,1)^{\mathsf T}\in\mathbb R^3,则中心在相机坐标系中的三维位置 pCR3p_C\in\mathbb R^3 为:

pC=zK1s~.p_C=zK^{-1}\tilde s.

若内参由焦距 fx,fyR>0f_x,f_y\in\mathbb R_{>0} 和主点 cx,cyRc_x,c_y\in\mathbb R 给出,则:

pC=[(ucx)z/fx(vcy)z/fyz].p_C= \begin{bmatrix} (u-c_x)z/f_x\\ (v-c_y)z/f_y\\ z \end{bmatrix}.

把像素开口换成物理开口#

对于闭合轴角度 θ\theta,二维单位方向为 eθ=(cosθ,sinθ)TR2e_\theta=(\cos\theta,\sin\theta)^{\mathsf T}\in\mathbb R^2。开口两端的像素位置为:

s±=[uv]±wpx2eθ.s_\pm= \begin{bmatrix}u\\v\end{bmatrix} \pm\frac{w_{\mathrm{px}}}{2}e_\theta.

将两个端点按同一个深度 zz 反投影为 P+,PR3P_+,P_-\in\mathbb R^3

P±=zK1[(s±)x(s±)y1],wm=P+P2.P_\pm=zK^{-1} \begin{bmatrix} (s_\pm)_x\\ (s_\pm)_y\\ 1 \end{bmatrix}, \qquad w_{\mathrm m}=\lVert P_+-P_-\rVert_2.

其中 wmR>0w_{\mathrm m}\in\mathbb R_{>0} 是物理开口,最终还要满足夹爪的硬件范围 [wmin,wmax][w_{\min},w_{\max}]。直接使用 zwpx/fxzw_{\mathrm{px}}/f_x 只在视场局部、方向和内参满足额外近似时成立;端点反投影更容易检查单位和坐标系是否一致。

构造位姿并执行可行性检查#

在相机光轴与固定接近方向平行的俯视配置中,闭合轴可以先写成:

cˉC=[cosθ/fxsinθ/fy0]R3,cC=cˉCcˉC2.\bar c_C= \begin{bmatrix} \cos\theta/f_x\\ \sin\theta/f_y\\ 0 \end{bmatrix}\in\mathbb R^3, \qquad c_C=\frac{\bar c_C}{\lVert\bar c_C\rVert_2}.

给定单位接近方向 aCR3a_C\in\mathbb R^3,令 bC=aC×cCR3b_C=a_C\times c_C\in\mathbb R^3,在固定工具轴约定下构造:

RCG=[cCbCaC]SO(3).R_{CG}=\begin{bmatrix}c_C&b_C&a_C\end{bmatrix}\in SO(3).

TBCSE(3)T_{BC}\in SE(3) 表示相机坐标系到机器人基座坐标系的外参,则:

TCG=[RCGpC01×31]SE(3),TBG=TBCTCG.T_{CG}=\begin{bmatrix}R_{CG}&p_C\\\mathbf 0_{1\times3}&1\end{bmatrix}\in SE(3), \qquad T_{BG}=T_{BC}T_{CG}.

最后还需要检查夹爪宽度、指尖和桌面碰撞、逆运动学、预抓取位姿以及接近轨迹。通过这些检查的候选,才会被转换为机器人控制器的目标;网络质量高并不意味着候选一定可达或一定安全。

Algorithm 4 将网络候选解码为机器人执行命令
Input:
峰值 (u,v)(u,v)θ\thetawpxw_{\mathrm{px}}、深度图 DD、相机内参 KK、手眼外参 TBCT_{BC}、接近方向 aCa_C 和夹爪开口范围
Output:
通过几何和机器人检查的预抓取位姿,或“候选无效”
  1. 在候选邻域内取有效深度中位数 zz
  2. if 不存在有效深度
  3. return 候选无效
  4. end if
  5. pC=zK1(u,v,1)Tp_C=zK^{-1}(u,v,1)^{\mathsf T} 恢复三维中心
  6. 反投影开口两端并计算 wmw_{\mathrm m}
  7. if wm[wmin,wmax]w_{\mathrm m}\notin[w_{\min},w_{\max}]
  8. return 候选无效
  9. end if
  10. θ\thetaaCa_C 和工具轴约定构造 RCGR_{CG}
  11. 计算 TBG=TBCTCGT_{BG}=T_{BC}T_{CG} 及预抓取位姿
  12. 检查碰撞、逆运动学和接近轨迹
  13. return 通过检查的机器人命令,否则返回候选无效

闭环控制与时序更新(Closed-Loop Control and Temporal Updates)#

稠密平面检测的一个重要优势是可以高频重算。开环系统在初始帧预测一次抓取,然后完全依赖标定和控制精度;闭环系统则在夹爪接近过程中重复执行“观测—预测—解码—修正”。

实际闭环不能每帧都无条件跳到新的最高峰,否则相邻候选之间的分数抖动会导致机械臂来回摆动。常见实现会:

  1. 在位置、角度和宽度上跟踪与上一帧最接近的候选;
  2. 对目标位置和角度做低通滤波;
  3. 将目标差转换为速度命令或短时域位姿增量;
  4. 当质量低于阈值、峰值跳变过大或深度失效时停止;
  5. 当相机进入最小可靠测距范围后冻结视觉目标,再完成最后一段闭合。

GG-CNN 的实验说明了低延迟抓取图对动态目标和闭环修正的价值 [6]。不过,网络前向频率不等于控制频率:图像采集、深度处理、坐标变换、通信和机器人控制器都会贡献延迟。

数据集与基准评测协议(Datasets and Benchmark Protocols)#

平面抓取基准需要同时说明数据集、抓取标注、数据划分和评价指标。它们衡量的不是通用目标检测中的物体类别或边界框,而是预测的平行夹爪抓取是否接近一个可行的抓取矩形。

任务输入与抓取标注(Task Inputs and Grasp Annotations)#

Cornell 和 Jacquard 都围绕平面抓取表示组织数据。输入通常包含 RGB、深度或 RGB-D 图像;输出是一个或多个旋转抓取矩形:

R=(u,v,θ,wpx,lpx).R=(u,v,\theta,w_{\mathrm{px}},l_{\mathrm{px}}).

同一物体可能存在多个可行抓取,因此一张图像对应的是正抓取集合 R={Rj}\mathcal R^*=\{R_j^*\},而不是唯一的目标框。评测时,只要预测矩形与其中一个正标注足够接近,通常就可以视为匹配成功。这一点与 COCO 中“检测某个物体实例的边界框”不同。

Cornell Grasp Dataset(Cornell 抓取数据集)#

Cornell Grasp Dataset 包含 885 张 RGB-D 图像和 240 个物体,提供人工标注的旋转抓取矩形 [1]。它适合验证平面抓取表示、候选分类、直接回归和稠密预测等方法,但规模相对较小,结果容易受到数据划分和数据增强策略影响。

常见划分包括:

  • Image-Wise Split:按图像划分,同一物体的不同视图可能同时出现在训练集和测试集;
  • Object-Wise Split:按物体实例划分,测试物体不会出现在训练集。

Object-Wise Split 更能反映物体实例泛化能力。两种划分不能混合比较,论文报告结果时应明确使用的划分协议。

Jacquard Dataset(Jacquard 抓取数据集)#

Jacquard 是面向大规模平面抓取检测的仿真 RGB-D 数据集,包含约 5400054\,000 张图像、约 1100011\,000 个物体和约 1.11.1 百万个抓取标注 [5]。相较 Cornell,它提供了更大的物体和抓取覆盖范围,适合训练全卷积和稠密抓取检测器。

Jacquard 的抓取数据来自仿真生成和仿真评估,因此可以用 Simulated Grasp Trial(SGT,仿真抓取试验)补充矩形几何指标。它的优势是规模大、标注成本低、可以批量测试抓取候选;局限是渲染外观、深度噪声、接触模型和真实夹爪之间存在 Synthetic-to-Real Gap(仿真到真实域差距)。在 Jacquard 上取得较高分数,不能直接等同于真实机器人成功率。

数据划分与预处理约束(Splits and Preprocessing Protocols)#

训练集、验证集和测试集应在数据增强之前确定。旋转、裁剪和缩放后的样本仍然来自同一原始图像,不能让它们跨越训练集和测试集边界,否则会造成数据泄漏(Data Leakage)。

同时需要固定:

  • RGB、深度和抓取标注是否使用相同的裁剪、缩放和旋转;
  • 输出抓取矩形是在输入图像坐标还是输出特征图坐标中评价;
  • 是否采用 Image-Wise Split、Object-Wise Split 或数据集规定的官方划分;
  • 质量阈值、候选数量和 NMS 是否在验证集上确定。

旋转抓取矩形指标(Rotated Grasp Rectangle Metrics)#

设预测矩形为 R^\hat R,正标注矩形为 RjR_j^*,二者角度都映射到 [π/2,π/2)[-\pi/2,\pi/2)。由于平行夹爪具有 π\pi 周期,周期角度误差定义为:

Δπ(θ^,θj)=min(θ^θj,πθ^θj).\Delta_\pi(\hat\theta,\theta_j^*) =\min\left( |\hat\theta-\theta_j^*|, \pi-|\hat\theta-\theta_j^*| \right).

旋转矩形交并比(Intersection over Union, IoU)为:

IoU(R^,Rj)=R^RjR^Rj.\operatorname{IoU}(\hat R,R_j^*) =\frac{|\hat R\cap R_j^*|}{|\hat R\cup R_j^*|}.

常见的矩形检测判据要求预测至少与一个正标注同时满足:

Δπ(θ^,θj)<30,IoU(R^,Rj)>0.25.\Delta_\pi(\hat\theta,\theta_j^*)<30^\circ, \qquad \operatorname{IoU}(\hat R,R_j^*)>0.25.

旋转 IoU 必须根据旋转矩形的多边形交集计算,不能用轴对齐外接框代替,否则会高估重叠程度。该指标衡量的是预测矩形与标注集合的几何接近程度,不是物理抓取成功。

评测证据的层级(Evidence Levels)#

平面抓取结果应区分三个层级:

  1. 矩形检测指标:预测是否接近一个正抓取标注;
  2. 仿真抓取成功率:候选在碰撞、接触和摩擦模型下是否成功;
  3. 真实机器人成功率:候选经过深度恢复、坐标变换、运动规划和真实接触后是否成功。

Jacquard 使用 SGT 说明了第二层证据的价值,但仿真成功仍然不能替代真实机器人实验。一个通过矩形判据的预测,仍可能因为深度无效、物理开口超出硬件范围、夹爪碰撞桌面、没有逆运动学解或抬升时滑落而失败。

系统实现模块与日志(System Modules and Logging)#

一个教学用途的平面抓取系统至少应拆成下面六个模块:

  1. 数据模块:读取 RGB-D、内参、抓取矩形和训练/测试划分;
  2. 标签模块:同步完成裁剪、旋转、缩放和稠密标签栅格化;
  3. 网络模块:输出质量、双角编码和归一化宽度;
  4. 解码模块:提取峰值、执行 NMS,并恢复矩形候选;
  5. 几何模块:读取深度、反投影、换算开口并完成手眼变换;
  6. 执行模块:碰撞、逆运动学、预抓取轨迹、闭合、抬升和失败恢复。

训练阶段可以只运行前三个模块,但声称系统能够“机器人抓取”时,后三个模块不能省略。日志中也应分别记录:网络原始候选、几何过滤原因、规划失败原因和最终执行结果。否则,抓取失败时无法判断问题来自感知、标定、碰撞模型、运动规划还是夹爪接触。

平面与 2.5-D 方法的能力边界(Capability Boundary)#

能力平面/2.5-D 方法的表现主要原因
竖直桌面抓取固定接近方向与任务先验一致
实时稠密预测输出空间低维,整图共享卷积计算
动态闭环修正可以高频更新中心、角度和开口
任意俯仰和滚转网络通常不搜索完整 SO(3)SO(3)
遮挡背面的接触单幅图像矩形不表示隐藏几何
手腕和夹爪三维碰撞间接必须依赖额外三维几何模块
机器人可达性不直接表示图像空间标签不了解机械臂关节状态

平面抓取不是被 6-DoF 方法淘汰的旧接口。在固定相机、桌面、竖直接近和实时控制场景中,它仍然具有计算简单、数据接口清晰和闭环频率高的优势。真正需要确认的是:任务是否允许固定接近方向,以及评价是否覆盖了最终机器人面对的深度、碰撞、可达性和执行误差。

小结(Summary)#

平面与 2.5-D 抓取检测可以按一条完整链路理解:

RGB / DepthGrasp LabelsQuality, Angle, Width Maps2-D Candidates2.5-D PosesFeasibility ChecksRobot Execution.\text{RGB / Depth} \rightarrow \text{Grasp Labels} \rightarrow \text{Quality, Angle, Width Maps} \rightarrow \text{2-D Candidates} \rightarrow \text{2.5-D Poses} \rightarrow \text{Feasibility Checks} \rightarrow \text{Robot Execution}.

旋转矩形只是这条链路的中间表示。要把原理落实为系统,需要同时正确处理角度周期、像素宽度与物理宽度、无效深度、相机内外参、候选去重、三维碰撞、逆运动学和接近轨迹。只完成矩形检测,还没有完成机器人抓取。


参考文献(References)#

  1. Y. Jiang, S. Moseson, and A. Saxena, “Efficient Grasping from RGBD Images: Learning Using a New Rectangle Representation,” 2011 IEEE International Conference on Robotics and Automation, 2011. DOI
  2. I. Lenz, H. Lee, and A. Saxena, “Deep Learning for Detecting Robotic Grasps,” The International Journal of Robotics Research, 2015. DOI
  3. J. Redmon and A. Angelova, “Real-Time Grasp Detection Using Convolutional Neural Networks,” 2015 IEEE International Conference on Robotics and Automation, 2015. DOI
  4. S. Kumra and C. Kanan, “Robotic Grasp Detection Using Deep Convolutional Neural Networks,” 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2017. DOI
  5. A. Depierre, E. Dellandrea, and L. Chen, “Jacquard: A Large Scale Dataset for Robotic Grasp Detection,” 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2018. DOI
  6. D. Morrison, J. Leitner, and P. Corke, “Closing the Loop for Robotic Grasping: A Real-Time, Generative Grasp Synthesis Approach,” Robotics: Science and Systems XIV, 2018. DOI
  7. R. Xu, F.-J. Chu, and P. A. Vela, “GKNet: Grasp Keypoint Network for Grasp Candidates Detection,” The International Journal of Robotics Research, 2022. DOI
Robotic Grasp Detection (3): 平面与 2.5-D 抓取检测
https://agusexp25.top/blog/robotic-grasp-detection-3
Author 菊花花
Published at August 14, 2026