Stable Diffusion WebUI的高分辨率深度图
这是一个为AUTOMATIC1111的Stable Diffusion WebUI设计的插件程序,用于创建深度图。它可以使用生成的或自定义的深度图来创建3D立体图像对(并排或立体)、法线贴图和3D网格。脚本的输出可以直接查看或用作3D引擎的资源。请查看wiki了解更多信息。该程序集成了Rembg。它还支持批处理、视频处理,也可以在不使用Stable Diffusion WebUI的情况下以独立模式运行。
为了从单个图像生成逼真的深度图,该脚本使用了来自Marigold仓库、英特尔ISL的MiDaS和ZoeDepth仓库,或Advanced Intelligent Machines的AdelaiDepth仓库中的LeReS的代码和模型。使用BoostingMonocularDepth实现的多分辨率合并用于生成高分辨率深度图。
立体图像是使用自定义算法创建的。
Virginia Tech Vision and Learning Lab的3D Photography using Context-aware Layered Depth Inpainting,或3D-Photo-Inpainting用于生成3D修复网格
并从该网格渲染视频
。
深度图示例
3D照片修复示例
视频由@graemeniedermayer制作,更多示例在此
立体图像SBS和立体示例
安装说明
作为扩展
可以直接从WebUI安装脚本。请导航到扩展
选项卡,然后点击可用
,加载自
,然后安装深度图
扩展。或者,可以从URL安装扩展:https://github.com/thygate/stable-diffusion-webui-depthmap-script
。
更新
在WebUI的扩展
选项卡中,在已安装
子选项卡中,点击检查更新
,然后应用并重启UI
。
独立运行
克隆仓库,从requirements.txt
安装依赖,使用main.py
启动。
模型权重将在首次使用时自动下载并保存到/models/midas、/models/leres和/models/pix2pix。Zoedepth模型存储在torch缓存文件夹中。
使用方法
在txt2img或img2img中从脚本选择框中选择"DepthMap"脚本,或在使用现有图像时转到深度选项卡。
模型可以在GPU和CPU上计算
,如果VRAM不足,请使用CPU。
模型
下拉菜单中有十个可用模型。对于第一个模型res101,请参阅AdelaiDepth/LeReS以获取更多信息。其他是midas模型:dpt_beit_large_512、dpt_beit_large_384、dpt_large_384、dpt_hybrid_384、midas_v21和midas_v21_small。有关更多信息,请参阅MiDaS仓库。最新的dpt_beit_large_512模型是在512x512数据集上训练的,但非常耗费VRAM。最后三个模型是ZoeDepth模型。
可以使用网络宽度
和网络高度
设置网络大小,或者在启用匹配输入大小
时与输入图像大小相同。关于网络大小,结构一致性和高频细节之间存在权衡(参见观察)。
增强
将启用BoostingMonocularDepth实现的多分辨率合并,这将显著改善结果,缓解上述观察到的问题,但计算时间会大大增加。使用res101效果最佳。
裁剪并重新归一化
允许在近
和远
端裁剪深度图,之间的值将被重新归一化以适应可用范围。将两个值设置为相等可以获得该值处单个深度平面的黑白掩码。此选项适用于16位深度图,允许1000个步骤来选择裁剪值。
启用时,反转深度图
将生成近处为黑色、远处为白色的深度图。
无论全局设置如何,保存深度图
都会将深度图保存在默认的txt2img或img2img目录中,文件名后缀为'_depth'。如果在设置中启用,生成参数会与图像一起保存。从深度选项卡生成的文件保存在默认的extras-images目录中。
要在webui中查看生成的输出,应启用显示深度图
。使用批量img2img时也应启用此选项。
启用合并为一张图像
时,深度图将与原始图像合并,可以使用合并轴
选择方向。禁用时,深度图将保存为16位单通道PNG,而不是启用该选项时的三通道(RGB)、每通道8位图像。
启用生成立体图
或生成立体
时,将生成立体图像对。视差
设置所需的3D效果量。眼睛之间的平衡
决定了(不可避免的)填补空白的失真最终会出现在哪里,-1左,+1右,0平衡。
不同的空隙填充技术
选项有:none(不填充空隙)、naive(原始方法)、naive_interpolating(带插值的原始方法)、polylines_soft和polylines_sharp是最新技术,最后一个质量最好但最慢。注意:所有立体图像生成都在CPU上完成。
要生成用于生成视频的网格,启用生成3D修复网格
。这可能是一个漫长的过程,小图像需要几分钟,非常大的图像可能需要一小时。此选项仅在深度选项卡上可用。启用后,将生成ply格式的网格和四个演示视频。所有文件都保存在extras目录中。
可以在深度选项卡上从PLY网格生成视频。
它需要由此扩展创建的网格,在其他地方创建的文件可能无法正常工作,因为一些额外信息存储在文件中(dolly所需的值)。大多数选项都是不言自明的,比如帧数
和帧率
。支持两种输出格式
:mp4和webm。可以使用超采样抗锯齿(SSAA)来消除锯齿边缘和闪烁。渲染大小按此因子缩放,然后进行下采样。
有三种轨迹
可供选择:圆形、直线、双直线,用于三维平移
。可以在四个边上裁剪
边框,Dolly
选项调整FOV,使中心主体保持大致相同的大小,类似于推拉变焦。
WebUI设置选项卡上的设置:
增强的最大整体大小
设置BoostingMonocularDepth论文中的r_max值,它与内部选择渲染的最大大小有关,并直接影响可能使用的最大VRAM量。论文中此值的默认值为3000,我将该值降低到1600,以便在8GB VRAM GPU上更频繁地工作。
如果在使用增强功能时在GPU上计算深度图时经常遇到内存不足错误,可以尝试降低此值。注意使用增强功能时输出的'正在处理的整体图像:xxxx',此数字永远不会大于r_max,但可以随着较大的r_max而变大。有关更多详细信息,请参阅论文。
💡 以PNG以外的任何格式保存总是产生8位、3通道RGB图像。只有在保存为PNG时才支持单通道16位图像。
常见问题
我可以在现有图像上使用它吗?
- 是的,您可以使用深度选项卡轻松处理现有图像。
- 另一种方法是将去噪强度设为0来使用img2img。这实际上会跳过稳定扩散,直接使用输入图像。你仍然需要设置正确的尺寸,并在输入图像分辨率与设置尺寸不完全匹配时选择"裁剪并调整大小"而不是"仅调整大小"。
-
"我可以在Google Colab上运行这个吗?"
- 你可以在他们这里链接的colab上运行MiDaS网络 https://pytorch.org/hub/intelisl_midas_v2/
- 你可以在他们这里链接的colab上运行BoostingMonocularDepth : https://colab.research.google.com/github/compphoto/BoostingMonocularDepth/blob/main/Boostmonoculardepth.ipynb
- 在Colab上运行此程序未得到官方支持,但可能可行。请寻找更合适的运行方式。如果你仍决定尝试,独立安装可能更易于管理。
-
"我还可以查看哪些其他与深度相关的项目?"
- 查看@Tremeschin的DepthFlow,可以非常快速地从图像生成2.5D视频(无需事先创建网格!)
- 查看@Extraltodeus使用深度图的几个脚本。
- 查看geo-11、Depth3D和Geo3D,用于在3D中玩现有游戏。
- (欢迎在讨论中提议更多项目!)
-
"如何知道脚本新版本中有什么变化?"
- 你可以查看git历史日志或参考
CHANGELOG.md
文件。
- 你可以查看git历史日志或参考
寻求帮助!
需要开发者!请通过创建合并请求帮助我们修复错误并添加新功能。 所有帮助都非常感谢。 欢迎在讨论中发表评论和分享,并提交问题。
致谢
本项目依赖于以下论文的代码和信息:
MiDaS :
@article {Ranftl2022,
author = "Ren\'{e} Ranftl and Katrin Lasinger and David Hafner and Konrad Schindler and Vladlen Koltun",
title = "Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-Shot Cross-Dataset Transfer",
journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
year = "2022",
volume = "44",
number = "3"
}
Dense Prediction Transformers, DPT-based model :
@article{Ranftl2021,
author = {Ren\'{e} Ranftl and Alexey Bochkovskiy and Vladlen Koltun},
title = {Vision Transformers for Dense Prediction},
journal = {ICCV},
year = {2021},
}
AdelaiDepth/LeReS :
@article{yin2022towards,
title={Towards Accurate Reconstruction of 3D Scene Shape from A Single Monocular Image},
author={Yin, Wei and Zhang, Jianming and Wang, Oliver and Niklaus, Simon and Chen, Simon and Liu, Yifan and Shen, Chunhua},
journal={TPAMI},
year={2022}
}
@inproceedings{Wei2021CVPR,
title = {Learning to Recover 3D Scene Shape from a Single Image},
author = {Wei Yin and Jianming Zhang and Oliver Wang and Simon Niklaus and Long Mai and Simon Chen and Chunhua Shen},
booktitle = {Proc. IEEE Conf. Comp. Vis. Patt. Recogn. (CVPR)},
year = {2021}
}
Boosting Monocular Depth Estimation Models to High-Resolution via Content-Adaptive Multi-Resolution Merging :
@inproceedings{Miangoleh2021Boosting,
title={Boosting Monocular Depth Estimation Models to High-Resolution via Content-Adaptive Multi-Resolution Merging},
author={S. Mahdi H. Miangoleh and Sebastian Dille and Long Mai and Sylvain Paris and Ya\u{g}{\i}z Aksoy},
journal={Proc. CVPR},
year={2021},
}
3D Photography using Context-aware Layered Depth Inpainting :
@inproceedings{Shih3DP20,
author = {Shih, Meng-Li and Su, Shih-Yang and Kopf, Johannes and Huang, Jia-Bin},
title = {3D Photography using Context-aware Layered Depth Inpainting},
booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2020}
}
U2-Net:
@InProceedings{Qin_2020_PR,
title = {U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection},
author = {Qin, Xuebin and Zhang, Zichen and Huang, Chenyang and Dehghan, Masood and Zaiane, Osmar and Jagersand, Martin},
journal = {Pattern Recognition},
volume = {106},
pages = {107404},
year = {2020}
}
IS-Net:
@InProceedings{qin2022,
author={Xuebin Qin and Hang Dai and Xiaobin Hu and Deng-Ping Fan and Ling Shao and Luc Van Gool},
title={Highly Accurate Dichotomous Image Segmentation},
booktitle={ECCV},
year={2022}
}
ZoeDepth :
@misc{https://doi.org/10.48550/arxiv.2302.12288,
doi = {10.48550/ARXIV.2302.12288},
url = {https://arxiv.org/abs/2302.12288},
author = {Bhat, Shariq Farooq and Birkl, Reiner and Wofk, Diana and Wonka, Peter and Müller, Matthias},
keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {ZoeDepth: Zero-shot Transfer by Combining Relative and Metric Depth},
publisher = {arXiv},
year = {2023},
copyright = {arXiv.org perpetual, non-exclusive license}
}
Marigold - 重新利用基于扩散的图像生成器进行单目深度估计:
@misc{ke2023repurposing,
title={Repurposing Diffusion-Based Image Generators for Monocular Depth Estimation},
author={Bingxin Ke and Anton Obukhov and Shengyu Huang and Nando Metzger and Rodrigo Caye Daudt and Konrad Schindler},
year={2023},
eprint={2312.02145},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Depth Anything: 释放大规模未标记数据的力量
@misc{yang2024depth,
title={Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data},
author={Lihe Yang and Bingyi Kang and Zilong Huang and Xiaogang Xu and Jiashi Feng and Hengshuang Zhao},
year={2024},
eprint={2401.10891},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Depth Anything V2
@article{depth_anything_v2,
title={Depth Anything V2},
author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
journal={arXiv:2406.09414},
year={2024}
}