iris-z

speridlabs/iris-z

作者
speridlabs
任务
图像生成
下载量
0
点赞数
25
趋势分
25
许可证
other
收录时间
2026/11/13

license: other license_name: flux-non-commercial-license license_link: https://huggingface.co/black-forest-labs/FLUX.2-dev/blob/main/LICENSE.txt library_name: iris-z pipeline_tag: depth-estimation base_model:

  • black-forest-labs/FLUX.2-dev
  • black-forest-labs/FLUX.2-klein-base-9B tags:
  • depth-estimation
  • text-to-image
  • rgbd
  • flux

Iris-Z

One generative model for images and their depth

Iris-Z is a general image generator that produces appearance and geometry together. The same weights turn a prompt into an image, a prompt into an image with its depth, a photo into depth, and a depth map into an image. On the standard depth benchmarks it is more accurate than the best specialist depth models, and it still generates images like the model it started from.

Project page GitHub Hugging Face Spaces Python 3.10+

Model

Iris-Z-bigIris-Z-small
Parameters32.2B9.1B
Resolution512 and 1024512 and 1024
Guidance3.54.0
GPU memory, all tasks~112 GB~33 GB
WeightsIris-Z-big/Iris-Z-small/

Install

git clone https://github.com/speridlabs/iris-z-sdk.git
cd iris-z-sdk
uv sync                       # Python 3.10, PyTorch 2.9.1 (CUDA 13.0), an NVIDIA GPU

The weights are downloaded from Hugging Face on first use. Iris-Z also reads the FLUX.2 autoencoder, which is gated: accept the terms of black-forest-labs/FLUX.2-dev first, then log in with hf auth login.

The PyTorch build is for CUDA 13.0, which needs an NVIDIA driver 580 or newer.

Inference

uv run python -m iris_z.sample depth --image photo.jpg                       # image -> depth
uv run python -m iris_z.sample depth --image photos/ --model small           # a folder, with Iris-Z-small
uv run python -m iris_z.sample image --prompt "a lighthouse at dusk"         # prompt -> image
uv run python -m iris_z.sample rgbd  --prompt "a lighthouse at dusk"         # prompt -> image + depth
uv run python -m iris_z.sample paint --depth-map depth.png --prompt "a snowy village"   # depth -> image

Depth results are written as <name>_depth.npy (relative log depth), <name>_depth.png (coloured, near = red, far = blue) and <name>_input.png (the image as the model saw it).

flagdefault
--modelbigbig (Iris-Z-big) or small (Iris-Z-small)
--resolutionauto512 or 1024; depth auto = 512 for images under 0.5 MP, 1024 above
--width, --height1024generation size, multiples of 16
--steps4 (depth), 50 (generation)sampling steps
--guidance3.5 (big), 4.0 (small)classifier-free guidance
--seed0just a seed 🌱!
--depth-formatdepthpaint: depth (bright = far), disparity (bright = near) or colours (our colouring)
--weightssperidlabs/iris-za Hugging Face repo or a local folder

Python API

from iris_z import IrisZPipeline

pipeline = IrisZPipeline.from_pretrained("speridlabs/iris-z", variant="big")

depth = pipeline.image_to_depth("photo.jpg")                    # DepthOutput
depth.colourized().save("photo_depth.png")
depth.log_depth, depth.sky_mask                                  # at the photo's own size
depth.log_depth_internal                                         # at the resolution the model worked at

image = pipeline.text_to_image("a lighthouse at dusk", width=1024, height=1024, seed=0)
rgbd = pipeline.text_to_rgbd("a lighthouse at dusk", seed=0)     # rgbd.image, rgbd.depth
painted = pipeline.depth_to_image(depth, prompt="the same street in winter")

Image → depth alone does not need the text encoder: IrisZPipeline.from_pretrained(..., load_text_encoder=False) loads only the transformer and the autoencoder.

Ten seeds, the setting behind the benchmarks, run only in the image → depth pipeline (loaded without the text encoder) and take the per-pixel median:

depth_pipeline = IrisZPipeline.from_pretrained("speridlabs/iris-z", variant="big", load_text_encoder=False)
depth = depth_pipeline.image_to_depth("photo.jpg", seeds=range(10))

Benchmark

AbsRel × 100, lower is better. Check the paper for more information.

MoGe-3's benchmarks and protocol (relative-error L1 alignment, seven of its nine sets):

ModelNYUv2KITTIETH3DiBims-1SintelHAMMERDIODEMean
Depth Pro3.675.124.973.2315.83.304.665.82
InfiniDepth3.975.134.623.1314.43.774.945.71
Pixel-Perfect Depth3.294.663.272.9414.12.993.955.03
UniDepth V22.963.852.942.6413.42.484.044.62
UniK3D2.813.812.982.5413.62.473.574.54
MoGe-22.883.742.802.3713.42.723.124.43
MoGe-3 (paper)2.623.422.032.0810.92.342.653.72
Marigold V2 (our run)3.344.964.832.8114.882.804.185.40
MoGe-3 (our run)2.633.412.012.0710.852.302.653.70
Iris-Z-small2.403.532.182.2011.502.222.883.84
Iris-Z-big2.282.981.871.9910.671.933.183.56

Marigold V2's benchmarks and protocol (RANSAC alignment in log depth):

ModelNYUv2ETH3DScanNetKITTIDIODEMean
InfiniDepth4.36.14.78.76.46.04
MoGe-23.15.03.16.99.65.54
PPD (1024)4.14.34.67.06.85.36
Lotus-23.74.14.06.76.55.00
FE2E3.83.84.36.55.64.80
Marigold V2 (paper)3.62.83.75.45.24.14
π³2.92.92.1†5.94.43.64†
Marigold V2 (our run)3.582.783.655.415.074.10
MoGe-3 (our run)2.652.062.863.984.033.12
Iris-Z-small2.072.122.564.584.223.11
Iris-Z-big1.901.762.254.164.502.92

† π³ trains on ScanNet.

Speed

One H200, SDK defaults (image → depth: one seed).

TaskMethodStepsIris-Z-big 512Iris-Z-big 1024Iris-Z-small 512Iris-Z-small 1024
Prompt → imagetext_to_image5033.2 s122.8 s10.2 s38.3 s
Prompt → image + depthtext_to_rgbd5034.6 s128.2 s10.8 s40.3 s
Image → depthimage_to_depth41.44 s5.29 s0.52 s1.92 s
Depth → imagedepth_to_image5033.3 s123.0 s10.3 s38.5 s

License

The code is licensed under the Apache License 2.0.

Acknowledgements

Iris-Z builds on FLUX.2 by Black Forest Labs.

Made with ❤️ by speridlabs.com

内容来源:Hugging Face 模型卡

在 Hugging Face 查看