Vision Banana将深度估计重构为可逆图像生成任务,通过线性分段+高位优先编码实现深度值到RGB的双射映射:R表百米/十米级、G表米级、B表分米/厘米级,depth = R×100 + G×1 + B×0.01,范围限定[0.1,100]米。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Vision Banana 并不依赖传统深度估计模型中“预测深度图→转伪彩色→可视化”的单向流程,而是将深度估计任务重构为可逆图像生成任务:模型直接输出一张符合特定 RGB 编码规则的图像,该图像每个像素的 RGB 值严格对应一个物理深度值(单位:米),且可通过确定性数学公式无损还原。
深度值到RGB的映射设计原则
Vision Banana 采用一种**线性分段+高位优先编码**策略,兼顾人眼可读性与数值精度。其核心是定义一个可逆双射函数:
f: [d_min, d_max] → [0,255]³,其中 d_min=0.1m、d_max=100m(典型室内外适用范围)。
- RGB三通道被赋予明确物理含义:R = 高8位深度(百米/十米级粗粒度),G = 中8位(米级),B = 低8位(分米/厘米级细粒度)
- 实际映射为:depth = R × 100 + G × 1 + B × 0.01,再经截断与归一化约束至 [0.1, 100]
- 该设计确保任意合法 depth ∈ [0.1, 100] 对应唯一 RGB,且任意模型输出的合法 RGB(各通道∈[0,255]整数)也能唯一解出 depth
Python 可逆双射实现(含边界处理)
以下代码满足 Vision Banana 论文中所述的零损失、整数安全、端到端可微(训练时)与确定性解码(推理时)要求:
# 深度值 → RGB(编码)
def depth_to_rgb(depth: float) -> tuple[int, int, int]:
assert 0.1 RGB → 深度值(解码,严格可逆)<p>def rgb_to_depth(r: int, g: int, b: int) -> float:
assert 0 10000 + g 100 + b
depth = 0.1 + scaled / 100.0
return min(max(depth, 0.1), 100.0)</p><h1>批量张量操作(PyTorch,用于训练/推理)</h1><p>import torch
def depth_tensor_to_rgb_tensor(depth_tensor: torch.Tensor) -> torch.Tensor:</p><h1>depth_tensor: (B, H, W), range [0.1, 100.0]</h1><pre class="brush:php;toolbar:false;">scaled = ((depth_tensor - 0.1) * 100).round().long() * 10 # to 0.01m units
r = (scaled // 10000) % 256
g = (scaled // 100) % 256
b = scaled % 100
return torch.stack([r, g, b], dim=1).float() / 255.0 # 归一化为[0,1]供图像生成头使用def rgb_tensor_to_depth_tensor(rgb_tensor: torch.Tensor) -> torch.Tensor:
Veo 3.1增强了音频生成能力、提示词理解能力和角色一致性控制。支持多参考图生成、场景扩展(Scene Extension)、更长视频制作以及更精准的镜头控制,同时提升了画面真实感和叙事能力。是当前 Google 主推的旗舰视频生成模型。
rgb_tensor: (B, 3, H, W), values in [0,1] → scale to [0,255] & clamp
r, g, b = (rgb_tensor[:, 0] * 255).long().clamp(0, 255), \
(rgb_tensor[:, 1] * 255).long().clamp(0, 255), \
(rgb_tensor[:, 2] * 100).long().clamp(0, 99)
scaled = r * 10000 + g * 100 + b
depth = 0.1 + scaled.float() / 100.0
return torch.clamp(depth, 0.1, 100.0)
为什么这个双射比伪彩色更可靠?
传统伪彩色(如 matplotlib 的 'plasma')是单向映射,无法从颜色反推精确深度;而 Vision Banana 的 RGB 编码是真正意义上的数值容器:
- 每个像素 RGB 是深度值的**无损整数编码**,非近似渲染
- 模型训练时,loss 直接作用于 RGB 像素级 L1/L2,等价于对 depth 的回归误差
- 部署时无需额外解码头——只需调用
rgb_to_depth,毫秒级完成全图深度重建 - 支持跨设备一致性:同一张输出图,在任何系统上解码结果完全相同
实际使用注意事项
该双射在 Vision Banana 推理中已默认启用,但需注意三点:
- 输入 prompt 必须明确指令,例如:"Estimate depth map in centimeter-precision RGB encoding",否则模型可能按常规语义生成伪彩色图
- 模型输出 RGB 图像必须为 uint8 格式、三通道、无压缩失真(推荐 PNG 保存)
- 若原始深度超出 [0.1, 100],Vision Banana 会自动裁剪并标记边界像素(R=255,G=0,B=0 表示超远,R=0,G=0,B=0 表示无效/遮挡)










