自监督学习的核心,是把数据中可以获得的关系构造成训练目标,例如用可见图像块预测被遮挡部分,或让同一图像的两种增强具有相近表示。它可以减少某一阶段对人工任务标签的依赖,但不能仅凭“没有真实姿态标注”判断整个系统的资源需求。
在六维物体位姿估计中,最有用的阅读方式是分别列出训练标签、辅助几何信息和测试输入。合成姿态标签、CAD、深度、相机标定和预训练模型都可能参与系统,只是它们提供信息的方式不同。
1. 监督方式描述的是训练信号
跳转到“1. 监督方式描述的是训练信号”| 名称 | 主要训练信号 | 容易误读的地方 |
|---|---|---|
| 监督学习 | 输入与目标标签,例如图像和真值姿态 | 标签可以由渲染器生成,不必全部由人工逐张标注 |
| 自监督学习 | 从数据自身结构、变换或关系构造目标 | 不一定生成离散“伪标签”,也不一定先预训练再微调 |
| 无监督学习 | 在没有外部目标标签时建模数据结构或分布 | 与自监督的术语边界存在重叠,不能声称只能做无用的中间任务 |
| 半监督学习 | 在所讨论任务和数据域中联合使用标注与未标注样本 | 伪标签是常见手段之一,不是自监督独有 |
| 弱监督学习 | 不完整、不精确或较粗粒度的监督 | “弱”指监督形式,不规定必须有多少标注 |
这些名称并不是互斥的产品标签。一个系统可以先进行自监督表示学习,再用少量姿态标签微调;也可以先在合成数据上做监督学习,再对没有姿态标签的真实数据做自监督域适应。
因此,“监督学习一定最好”“自监督一定接近监督”“合成数据一定较差”都不是定义。性能要结合训练预算、数据覆盖、目标域差异和同一评价协议判断。
2. 自动构造的目标不都叫伪标签
跳转到“2. 自动构造的目标不都叫伪标签”以图像为例,可以区分三种常见来源。
重建目标。 隐藏一部分输入,让模型根据其余部分恢复隐藏内容。目标像素原本就在数据中,不是另一个分类器生成的类别判断。MAE 论文
视图关系。 对同一图像产生两种增强,构造正样本关系,再学习表示。增强是否保留了任务所需信息很重要:适合分类的不变性,未必适合需要辨别旋转的姿态估计。SimCLR 论文
教师或几何过程给出的估计。 先由已有模型、跨视图约束或其他过程估计姿态,再作为后续训练目标。这类结果通常称为伪标签。它有误差,也可能把初始模型的偏差再次放大。
把三者都理解成“自动生成了精确标签”,会忽略目标的性质。尤其在几何任务中,相对一致、图像相似和绝对姿态正确并不是一回事。
3. 合成数据训练与真实域适应
跳转到“3. 合成数据训练与真实域适应”设渲染器按照指定物体模型和位姿生成图像:
其中 是物体模型, 是生成时使用的位姿, 是相机内参。训练对 有明确的姿态目标;这个阶段属于带标签的合成数据监督训练,即使没有人工逐图标注。
到了真实图像域,系统可能不再获得真值姿态,而通过渲染一致性、几何关系或伪标签适应真实外观。这是另一个训练阶段。不能把两者合称为“完全没有标签”,也不能把渲染数据生成本身当作自监督定义。
域适应的方向也需要具体说明。有的方法让合成图像接近真实外观,有的方法在真实观测与合成外观之间建立可控对应。纹理转换是否保留物体几何、遮挡和姿态,是判断这种对应是否有用的关键。
4. ONDA-Pose:训练与推理分开看
跳转到“4. ONDA-Pose:训练与推理分开看”ONDA-Pose(CVPR 2025)使用已知 CAD、合成带标签数据和无真实姿态标签的多视角训练图像。先训练检测器与姿态骨干,并用 COLMAP 估计训练相机姿态;CARF 学习与真实观测姿态对应的合成外观;初始位姿经过跨视图细化成为伪标签,随后结合点匹配、颜色与掩码约束训练姿态估计器。测试时使用检测器和姿态骨干处理单张 RGB 图像。
这个例子说明,论文中的“自监督”主要限定真实域姿态标签的使用情况。不能把训练阶段的多视角与 CAD 省略,也不能反过来说每次测试都要运行 COLMAP 和 CARF。原笔记的中文流程是概念说明,并不是可运行的 Python 训练程序。
5. 两种相关方法说明了不同的辅助条件
跳转到“5. 两种相关方法说明了不同的辅助条件”| 方法 | 真实域训练阶段的重要信息 | 需要保持的区分 |
|---|---|---|
| Self6D | 无真实姿态标注的 RGB-D,配合合成数据预训练和渲染对齐 | 训练使用深度,不等于单目 RGB 推理也使用深度 |
| SMOC-Net | 无姿态标注的多视角真实图像、估计的相机姿态,以及合成数据训练 | 相机运动约束需要坐标一致;单目 SfM 平移存在尺度不确定性 |
| ONDA-Pose | 多视角真实训练图像、CAD、合成预训练和跨视图细化 | 自动估计相机姿态和伪标签,不保证估计必然正确 |
上述信息分别依据 Self6D、SMOC-Net及 ONDA-Pose 原论文。相机标定、深度和 CAD 都属于额外信息,虽然它们不一定是人工姿态标签。
当用多视角约束时,还需要明确场景是否静止、物体是否刚性、视角间是否有足够重叠,以及相机姿态属于哪个坐标约定。物体与相机同时自由运动时,不能原样套用静止物体关系。
6. 一个反例:跨视图一致也可能整体错误
跳转到“6. 一个反例:跨视图一致也可能整体错误”以下推导只讨论已标定相机、共同长度单位和世界坐标中静止的刚体。它是独立的教学例子,不是某篇论文的完整损失函数。
记 为世界到第 个相机的变换, 为物体到世界的变换。该视图中的真实物体位姿为
于是两视图应满足
现在把物体在世界坐标中统一放到一个错误位置 ,并令所有预测为 。这些预测依旧满足完全相同的跨视图关系。一致性约束把视图连接起来,却不能单独确定哪个共同物体位姿是正确答案。
import numpy as np
def transform_z(angle_degrees, translation): angle = np.deg2rad(angle_degrees) c, s = np.cos(angle), np.sin(angle) matrix = np.eye(4) matrix[:3, :3] = [[c, -s, 0], [s, c, 0], [0, 0, 1]] matrix[:3, 3] = translation return matrix
# 全部长度使用米,矩阵把列向量从右侧坐标系变到左侧坐标系。c1_from_world = transform_z(0, [0, 0, 0])c2_from_world = transform_z(40, [0.3, -0.2, 0.1])world_from_object = transform_z(15, [0.1, 0.2, 1.0])
# 所有视图共同采用同一个错误对象位置:世界 X 方向偏移 20 cm。world_shift = transform_z(0, [0.2, 0, 0])wrong_world_from_object = world_shift @ world_from_object
truth1 = c1_from_world @ world_from_objectpred1 = c1_from_world @ wrong_world_from_objectpred2 = c2_from_world @ wrong_world_from_objectc2_from_c1 = c2_from_world @ np.linalg.inv(c1_from_world)
assert np.allclose(pred2, c2_from_c1 @ pred1)assert np.allclose( np.linalg.inv(c1_from_world) @ pred1, np.linalg.inv(c2_from_world) @ pred2,)
origin = np.array([0.0, 0.0, 0.0, 1.0])position_error_m = np.linalg.norm((pred1 @ origin - truth1 @ origin)[:3])assert np.isclose(position_error_m, 0.2)print(f"一致性成立,但第一个视图的物体原点误差为 {position_error_m:.1f} m")实际方法还需要图像对应、轮廓、可见表面、物体尺寸或其他约束把这个共同解锚定到观测上。若物体对称,即使图像对齐也可能存在等价解;评价与训练应尊重这种可辨识性,而不能强迫不可区分的姿态成为唯一答案。
此外,COLMAP 等单目 SfM 输出的平移若只确定到统一尺度,就不能在未经尺度处理时与 CAD 的毫米或米直接混合。本文例子故意假设单位已统一,避免把这个前提藏在矩阵乘法中。
7. 伪标签需要验证哪些内容
跳转到“7. 伪标签需要验证哪些内容”第一步是核对来源:教师模型用过哪些训练标签,是否使用测试集真值或未来帧,目标数据的标定和分割从哪里得到。利用验证集选阈值可以合理,但需要把它与完全不使用目标域标签的设定区分。
第二步是检查可靠性。可以结合重投影误差、可见轮廓重合、跨视图残差和有效深度比例筛选;单一置信分数不自动等于校准后的正确概率。多个视图共享同一个偏差时,增加一致性检查也可能重复接受同一种错误。
第三步是检查训练是否真正受益。用固定测试划分比较合成预训练、加入目标域适应、以及不同过滤规则的结果,同时记录被保留的训练样本比例。只挑选容易样本得到更低残差,不一定提升困难场景的表现。
若使用教师与学生的伪标签训练,要说明目标是否停止梯度、教师如何更新,以及失败样本如何处理。否则两个分支可能共同变化,使损失下降却没有获得预期的监督约束。
8. 不能用参考图像条件代替监督分类
跳转到“8. 不能用参考图像条件代替监督分类”原笔记把 UA-Pose、Any6D、CAP-Net 与 ONDA-Pose 排成“是否需要标注”的单一表格,容易混淆问题:
- UA-Pose 的少量带位姿参考或二维图像初始化,描述参考信息和建模入口。
- Any6D 的单张 RGB-D 锚点,描述新对象注册所需观测。
- CAP-Net 的类别级部件估计,包含规范部件坐标及合成训练数据。
- ONDA-Pose 的自监督域适应,描述真实训练阶段如何获得姿态约束。
这几条分别涉及推理参考、任务定义和训练流程,不能据此断言某篇是“唯一完全无需标签”的方法。具体论文入口与题名见2025 年位姿论文选读。
9. 阅读或复现时的记录方式
跳转到“9. 阅读或复现时的记录方式”| 阶段 | 记录内容 |
|---|---|
| 合成预训练 | 模型、渲染器、标定、姿态标签、背景与光照分布 |
| 真实域学习 | 使用哪些真实标签,辅助深度/多视角/相机姿态从何而来 |
| 伪标签构造 | 初始模型、筛选条件、坐标单位、失败情况和保留比例 |
| 推理 | 每张查询图像必需的输入、对象准备成本、实际运行模块 |
| 评价 | 检测框来源、数据划分、对称性、误差阈值与总耗时 |
本文保留原笔记关于监督类型、域适应、几何约束和渲染对齐的主题,纠正绝对化性能结论,并用可运行的独立几何反例代替伪装成 Python 的流程文字。这里没有执行任何论文模型的训练或推理。
来源:CSDN 原笔记,首次发布于 2025-10-26。ONDA-Pose 的实现入口见作者仓库;使用前仍需按实际版本核对环境、数据格式和训练步骤。