🧊 点云预演
把深度图按亮度映射到 Z 轴,逐帧生成点云。虽然不是完整模型,但能直观看出场景的空间结构,用来给后续建模或置景当参考非常够用。
「深度图」这个词在教程里出现得太频繁,但很少有人讲清它到底解决什么问题。 这篇文章不谈原理,只讲六件事:每个场景在做什么、需要什么样的深度图、以及具体怎么做。 如果你正拿着一段视频不知道能拿它干什么,从下面挑一个最接近的看。
一句话:深度图把「每个像素离摄像机多远」写成了亮度值,越亮越近,越暗越远。 它和普通黑白照片的区别在于 —— 黑白照片保留的是物体本身的明暗,深度图丢弃材质和光线, 只留下空间结构。
这个差别决定了很多事。比如一面白墙和一盏白灯在照片里都接近纯白,深度完全不同; 一件黑色衣服和远处的夜空在照片里都接近纯黑,深度也完全不同。 当你的任务关心「东西在哪、前后关系如何」而不关心「东西是什么颜色」时,深度图就是最干净的表达。
| 图像类型 | 每个像素表示什么 | 典型用途 |
|---|---|---|
| 原视频帧 | 颜色与明暗 | 最终画面、观看与剪辑 |
| 灰度深度图 | 该点到摄像机的距离(相对值) | 空间控制、3D 参考、遮挡关系判断 |
| 人体姿态骨架 | 17 个关节点的坐标与连接 | 动作分析、姿态驱动、教学演示 |
| 面部 478 点云 | 人脸表面 478 个三维特征点 | 表情分析、面部驱动、细节演示 |
这是目前搜索量最大、也是最多人真正在干的一件事。
用 Stable Diffusion 或同类模型出图时,最头疼的是「画面不受控」—— 想要保持某张照片的构图和透视,只换材质、换背景、换风格,纯靠提示词几乎做不到。 ControlNet 就是干这个的:给它一张控制图,它就约束生成结果的结构。
三种常用控制方式的分工很清楚:Canny 管边缘线条,OpenPose 管人体骨架位置, Depth 管空间远近。差别在「你想让新画面忠于原图的哪一部分」。
| 控制方式 | 约束住什么 | 适合的活 |
|---|---|---|
| Canny 边缘 | 物体轮廓线 | 描边风格化、线稿上色 —— 但纹理细节多时线条会糊成一团 |
| OpenPose 姿态 | 人体 18 个关节点位置 | 换人换装、姿势迁移,只关心人物动作时最有效 |
| Depth 深度 | 每个像素的前后距离 | 保持构图与透视、换背景换材质、把实拍转成插画或 3D 渲染风 |
为什么深度控制在「换风格但保构图」这类需求上更稳:它不关心原图长什么样, 只关心「哪里近哪里远」。所以哪怕你把原图的人物换成完全不同的东西, 只要深度关系对上,画面的空间感就还是原来的 —— 这正好是边缘控制做不到的 (一旦物体形态变了,边缘就对不上了)。
很多人第一次接触深度图的目的是「能不能把视频变成 3D」。 严格说,单张深度图给不出完整的三维模型 —— 它只有「看到的那一面」的信息, 被遮挡的部分无从得知。但配上相机运动,逐帧深度序列可以做出相当好看的效果。
把深度图按亮度映射到 Z 轴,逐帧生成点云。虽然不是完整模型,但能直观看出场景的空间结构,用来给后续建模或置景当参考非常够用。
把原画面贴在深度图上,用深度值决定不同区域的位移速度 —— 相机一动,近处的东西走得快、远处走得慢,就产生了真实的空间视差感。短视频里的「照片立体化」就是这个原理。
按深度值做高斯模糊半径或加雾,比手动抠图做景深准确得多,尤其适合前景有头发、树叶这类难抠的细节。
做 NeRF、3D Gaussian Splatting 这类重建时,深度先验能显著加快收敛、减少多视角歧义,是很常见的预处理环节。
「深度动作捕捉」听起来很重,实际上用视频 + 骨架提取就能覆盖很多需求, 而且不需要穿动捕服、不需要专门的动捕棚,一段手机拍的视频就够了。
| 具体需求 | 怎么用骨架实现 |
|---|---|
| 舞蹈 / 体育教学 | 把骨架叠在原视频上,关节轨迹一目了然。学员能直接看到「手臂该抬到哪个角度」,比纯看画面更容易模仿 |
| 动作规范性比对 | 同一套动作录两次,分别提取骨架,逐帧对比关节点位置差 —— 教练复盘时不用凭记忆描述 |
| 动画参考(Rotoscope) | 真人视频提骨架当动画参考,比逐帧手绘高效得多,也方便对齐节奏 |
| 康复与体能评估 | 记录关节活动范围随时间的变化,用于训练进度跟踪(不替代医学诊断) |
| 内容创作用素材 | 「骨架 + 原片」的画面本身就有科技感,适合科技类短视频和演示 |
需要注意模型的能力边界:这里是 COCO 17 关键点的二维检测, 给出的是画面坐标系里的位置,不是三维空间坐标。做三维动作重建还需要另行解算。 另外它对「人物在画面里的占比」比较敏感 —— 远景小人物的检测率会明显下降, 这也是教程页排错一节里提到的主要问题。
训练视频生成模型、深度估计模型、或者做条件控制类模型,都需要成对数据 —— 原图配深度图,或者原图配骨架。这类数据要么靠人工标注(成本极高), 要么靠工具批量生成(就是你正在读的这个用途)。
用视频做数据源有一个单张图片比不了的优势:一段视频能同时拆出三套序列 —— 原始帧、逐帧深度图、逐帧骨架。三者天然时间对齐,标注成本几乎为零。
输出设置里可以选把每一帧存成 PNG 或 JPG。PNG 无损适合当训练标签,JPG 省空间适合当输入。可按需选。
用「分段时长」把长视频切成规整片段,避免单次处理出问题就要从头再来,也方便按片段管理数据集。
深度、姿态按「视频指纹 + 分辨率」缓存 —— 同一段素材想同时导深度数据集和骨架数据集,第二次不用重新推理。
灰度、伪彩、肤色渐变、并排对比四种样式。训练用灰度,人眼校对和展示用伪彩,同一份深度两次呈现。
这一类和内容创作者的关系最直接。深度图在这里的角色是「让平面画面有纵深」。
按深度值加雾量,远处浓、近处淡。比用渐变遮罩手工涂要自然得多,而且能跟着画面动。
靠深度做「焦点从近拉到远」的转场,或者让某层单独运动。深度图让这些效果无需逐帧抠像。
把一张静态图或一段视频做出视差位移,做成会随鼠标或陀螺仪轻微移动的壁纸,深度图是核心输入。
按深度阈值给特定距离范围的物体加发光、描边或错位色散,做出赛博感。深度做遮罩比颜色抠像稳定。
这一类和普通用户距离远一些,但在工程和科研场景里是实打实的刚需。
开发和调试机器人的视觉算法,最难的是拿到带真值的测试数据。 真实深度传感器(双目、ToF、激光雷达)贵、部署麻烦,而且换一个场景就要重采一遍。 用视频估深度是个低成本的替代路径:
| 用途 | 说明 |
|---|---|
| 算法管线联调 | 先用视频估的深度跑通障碍物检测、可通行区域分割这类流程,验证代码逻辑,再上真实传感器调优 |
| 仿真环境素材 | 给仿真器提供带深度信息的实景纹理,让仿真画面更接近真实分布 |
| 教学与实验 | 让学生直观看到「深度图长什么样、有哪些失效情况」,比只看论文插图有效 |
| 数据集扩充 | 补足某些场景类别(如夜间、雨天)的样本,缓解真实数据稀缺 |
知道什么时候不该用,比知道什么时候该用更重要。以下场景请谨慎:
单目估计是相对深度,没有真实尺度。做不了量测、标定、尺寸比对这类任务。
反射和折射会彻底打乱深度线索,模型对这类表面的判断普遍不可靠,常见把镜子里的"房间"当成真实纵深。
模糊帧缺少可靠特征,深度图容易整体平滑或错位。高速运动素材建议先降帧率或做稳像。
纯色墙面、浓雾、雪地缺少纹理线索,深度会大块趋同,看不出层次。
曝光极端时细节丢失,模型拿不到足够的结构信息。这类素材建议先做画面修复再处理。
任何要写进论文作为定量结论的场合,都应该用有标定的传感器,而不是估出来的深度。
安装包约 2.6 GB,模型权重已内置,装完即可离线使用,视频不上传。 试用版全部功能都能用,只是单段最长 10 秒 —— 正好够验证上面任意一个场景。