一张图里同时有画面和距离:开源模型第一次把「深度」塞进生图模型的同一条去噪链,但许可证不是 Apache 2.0
3分钟看懂
11 月 11 日晚,西班牙两人团队 Speridlabs 在 Hugging Face 上传了一个叫 Iris-Z 的图像模型。它的特别之处不是画得更好看,而是一套权重同时会做四件事:
- 文生图(prompt → 图)
- 文生图 + 深度图(prompt → 图 + 灰度深度图)
- 照片 → 深度图(单张照片,不需要第二台相机或深度传感器)
- 深度图 → 成图(给定空间布局,反推画面)
它有两个尺寸:Iris-Z-big 32.2B 参数、Iris-Z-small 9.1B 参数,都基于 Black Forest Labs 的 FLUX.2。
为什么这件事值得看:过去你要出图,用 FLUX 或 Stable Diffusion;要估深度,另装一个专用模型,比如 MoGe-3 或 Marigold。两套模型、两次前向、还得自己对齐坐标。Iris-Z 把深度当成"另一种图"塞进同一条去噪序列,让画面和几何在每一步相互修正。官方自测的深度精度,第一次超过了专用模型 MoGe-3。
但有三句必须提前说清楚:
- 不是 Apache 2.0。 模型卡写的是
license_name: flux-non-commercial-license,只有代码是 Apache-2.0。这是本轮中文稿集体写错的地方。 - 显存门槛高。 big 版跑全部任务约 112 GB,small 版约 33 GB。24 GB 的消费卡跑不了全任务。
- 它慢。 同一张图出深度,MoGe-3 要 0.4 秒,Iris-Z-small 要 4.8 秒,big 要 15 秒。
它「合」的到底是什么
多数"多任务模型"的做法是:一个主干加几个头,或者两个网络串起来。Iris-Z 没这么做。
项目页的原话是:「One sequence, one backbone」。具体做法是把深度存成归一化的对数射线距离,编码成一张图,再交给同一个 VAE,然后和画面 token 放进同一条序列。没有 depth head,没有第二个网络。
这样带来的差别是:深度不是生成完再算的后处理,而是在去噪的每一步都跟画面互相约束。你让它画一间屋子,它同时得决定墙离你多远;这两个判断必须自洽,否则早期步就会互相拉扯。团队的说法是「image and depth condition each other at every step of denoising」。
这也是它能超过专用模型的结构性原因:专用深度模型只看一张已经画好的图,是"事后猜";Iris-Z 是在"画的时候就知道"。
跑分:整体赢了,但单项会输
官方给了两张表,分别按 MoGe-3 和 Marigold 两套评测协议。指标是 AbsRel×100,越低越好。
MoGe-3 协议(7 个数据集,relative-error L1 对齐):
- MoGe-3(团队自己复现):平均 3.70
- Iris-Z-small:3.84
- Iris-Z-big:3.56
Marigold 协议(5 个数据集,RANSAC log 深度对齐):
- MoGe-3(复现):平均 3.12
- Marigold V2(复现):4.10
- Iris-Z-small:3.11
- Iris-Z-big:2.92
看出来了吗——small 版在 MoGe-3 协议上其实输了(3.84 vs 3.70)。真正全面领先的是 32B 的 big 版。
还有一个细节值得指出:在 MoGe-3 协议表的 DIODE 这一列,Iris-Z-big 是 3.18,MoGe-3 是 2.65,官方自己把加粗给了 MoGe-3。这说明它是"平均分赢、个别数据集输",不是全面压制。
团队自己在项目页写了一句很实在的话:「a specialist is still much cheaper per image」(专用模型单张图的成本还是低得多)。这句话比任何跑分都值得记住。
速度与显存:真正的门槛在这里
以下全部是单张 H200、SDK 默认参数的数字,不是你手上那张卡的数字。
- 文生图(50 步):big 512² 33.2 秒 / big 1024² 122.8 秒 / small 512² 10.2 秒 / small 1024² 38.3 秒
- 文生图 + 深度(50 步):big 34.6 / 128.2 秒;small 10.8 / 40.3 秒
- 图 → 深度(只要 4 步):big 1.44 / 5.29 秒;small 0.52 / 1.92 秒
- 深度 → 图(50 步):big 33.3 / 123.0 秒;small 10.3 / 38.5 秒
显存:big 跑全部任务约 112 GB,small 约 33 GB。
翻译成实际硬件:
- big 基本是 1 张 H200(141 GB)或 2 张 H100 80G。
- small 的 33 GB 卡在 A100 40G 之下、4090 24G 之上——单卡 A100 40G 能跑,消费级 24 GB 卡跑不了全任务。
- 分辨率只支持 512 和 1024,没有更高档。
对比一下:MoGe-3 用 ViT-G 一次前向 0.4 秒;Iris-Z 的精度是用 8 到 40 倍的时间换来的。
许可证:这是本轮所有中文稿都写错的地方
先看官方字段。Hugging Face 模型卡的 YAML 头写得很清楚:
license: otherlicense_name: flux-non-commercial-licenselicense_link:指向black-forest-labs/FLUX.2-dev的 LICENSE.txtbase_model:black-forest-labs/FLUX.2-dev、black-forest-labs/FLUX.2-klein-base-9B
而 SDK 仓库 README 的 License 段落只有一句:「The code is licensed under the Apache License 2.0」。
也就是说:代码 Apache-2.0,权重继承 FLUX 非商用许可。 这两件事被传播时被合成了一句"权重、代码、demo 全部 Apache 2.0",这是错的。
还有第二层坑:Iris-Z 还要读 FLUX.2 的 autoencoder,而这个仓库是 gated 的。你必须先去 black-forest-labs/FLUX.2-dev 页面接受条款、再 hf auth login,才能跑起来。也因为这个门禁,我在未登录状态下无法读到 LICENSE.txt 原文(返回 "Access to model is restricted"),所以具体商用条款我不做解读——想商用的人必须自己走一遍这个流程去读。
顺带说一句:今天的中文 AI 日报(比如 RecsysFrontier 的 11-12 期)把这句"全部 Apache 2.0"写进去了。基于多家媒体转述整理的信息里,这一条是错的,以官方模型卡字段为准。
怎么用:三条路径,按你的硬件选
路径一:只想看看效果(零门槛)
HF Space 已经在线:speridlabs/iris-z,跑在 zero-a10g 上,状态是 RUNNING。上传一张照片就能看图→深度。
路径二:本地跑全套
git clone https://github.com/speridlabs/iris-z-sdk.gitcd iris-z-sdkuv sync(Python 3.10 / PyTorch 2.9.1 / CUDA 13.0)
环境要求写得很硬:NVIDIA 驱动 580 或更新(因为 PyTorch 是 CUDA 13.0 构建)。Apple Silicon 和 AMD 卡目前没有路径。
然后要先登录:
hf auth login(要先在 HF 上接受black-forest-labs/FLUX.2-dev的条款)
四条命令对应四个任务:
uv run python -m iris_z.sample image --prompt "a lighthouse at dusk"—— 纯文生图uv run python -m iris_z.sample rgbd --prompt "a lighthouse at dusk"—— 图 + 深度uv run python -m iris_z.sample depth --image photo.jpg—— 照片 → 深度uv run python -m iris_z.sample paint --depth-map depth.png --prompt "a snowy village"—— 深度 → 成图
路径三:只做深度,省显存
image_to_depth 不需要文本编码器。关掉它,只加载 transformer + autoencoder:
用 Python 直接调,两行就够:
from iris_z import IrisZPipelinep = IrisZPipeline.from_pretrained("speridlabs/iris-z", variant="big", load_text_encoder=False)depth = p.image_to_depth("photo.jpg", seeds=range(10))
CLI 上就是 --model small --resolution 512。
适用场景:谁该用
- 3D 重建的前处理:需要"图和几何严格对应"的时候,同一条去噪链比两个模型拼起来更稳。
- 机器人与具身智能:单目深度是抓取、避障的输入,而且这里要的是几何精度不是画面好看。
- 合成训练数据:一次拿到成对的 RGB + 深度,标注成本近乎零。
- ControlNet 式控图:
depth → image这条路径本质就是"给定布局生成",比外部 ControlNet 更紧。 - 需要深度但只有一张照片:不用双目、不用 LiDAR。
不适用场景:谁别碰
- 只想出好看的图:直接用 FLUX 或 SD,单张成本低一到两个数量级。
- 只有 24 GB 消费卡:small 要 33 GB,big 要 112 GB,都跑不了全任务。
- 要商用又不想读许可:权重是 FLUX 非商用许可继承,先别规划产品化。
- 要 2K/4K:只支持 512 和 1024。
- 要绝对尺度深度:它输出的是相对对数深度,要米制得自己标定。
- 要实时:1024 深度 5.29 秒是 H200 上的数字。
避坑:五个容易踩的地方
- 别按"Apache 2.0"做商业规划。 代码开源 ≠ 权重开源。模型卡字段才是准的。
- 别忘了 gated 仓库。 没
hf auth login也没接受 FLUX.2-dev 条款,第一次跑会直接 401。 - 深度是相对值,不是米。 输出
.npy是 relative log depth,另外给你一张上色的 PNG(近红远蓝)。要真实距离,得自己做尺度标定。 - 单次结果会抖,论文口径是十次中位数。 官方基准用的是
seeds=range(10)逐像素取中位数。拿单次结果去对比别人的论文数字会失真。 - 分辨率不要混搭。
--resolution auto的规则是:图像小于 0.5 MP 用 512,大于用 1024。你要拿 512 的深度去配 1024 的图,得显式指定,别让它自动选。
成本和时间:算一笔实在账
- 权重:免费下载,但要 gated 权限。
- 硬件:big ≈ 1×H200 或 2×H100 80G;small ≈ 1×A100 40G。
- 出图:1024² 一张,big 约 2 分钟,small 约 38 秒(H200)。文生图+深度几乎不额外加时间(128.2 对 122.8 秒)。
- 出深度:1024² 一张,big 5.29 秒,small 1.92 秒。
- 云端折算:按 H200 小时租价摊到单张图,成本明显高于直接调 FLUX 接口。它的价值在"顺带拿到几何",不在"更便宜的图"。
一句话:如果你本来就要深度,这套是省事;如果你只要图,这套是浪费。
行动建议
第一步,什么卡都不用准备:打开 HF Space,传一张你自己拍的、有头发和玻璃的照片。这两个是深度模型最容易崩的地方——头发会糊成一片,玻璃会判成实墙。看一眼就知道它值不值得你投入。
第二步,如果你已经在用 MoGe-3 或 Marigold 做 3D 重建,拿同一批图跑一遍 Iris-Z 的深度,比下游重建质量,不要只比 AbsRel。AbsRel 赢 5% 不代表网格就好看。
第三步,商用之前,走一遍 black-forest-labs/FLUX.2-dev 的 gated 流程,把 LICENSE.txt 逐条读完。这一步没人能替你做。
参考来源
- Hugging Face 权重页:https://huggingface.co/speridlabs/iris-z
- 官方项目页(含论文与完整跑分):https://speridlabs.com/research/iris-z
- 官方 SDK:https://github.com/speridlabs/iris-z-sdk
- 官方 Demo:https://huggingface.co/spaces/speridlabs/iris-z
- Tokenstrom 报道(11-11):https://tokenstrom.com/posts/iris-z-open-flux-2-based-model-generates-images-and-their-depth-maps-i/
- adsimple KI-Update(11-12,德文):https://www.adsimple.at/ki-update-12-november-2026/