ComfyUI DepthAnything V2 深度处理效果测试

🧶背景

最近了解depth模型的时候,了解到DepthAnything V2模型的发布,据介绍是对于深度的估算达到了很不错的效果,所以这里简单做一下研究和测试。

如果对你有帮助的话,还请帮忙点个赞哈~

原论文地址:https://arxiv.org/pdf/2406.09414

github地址:https://github.com/DepthAnything/Depth-Anything-V2?tab=readme-ov-file

论文的开头,作者是这样介绍的:

这项工作介绍了Depth Anything V2。

我们不追求花哨的技术,而是旨在揭示关键的发现,为构建一个强大的单目深度估计模型铺平道路。值得注意的是,与V1 相比,这个版本通过三个关键实践产生了更精细、更鲁棒的深度预测:

  1. 用合成图像替换所有标记的真实图像,
  2. 扩大我们教师模型的容量,
  3. 通过大规模伪标记真实图像的桥梁教授学生模型。

与基于Stable Diffusion构建的最新模型相比,我们的模型在效率上显著更高(速度超过10倍)且更准确。我们提供不同规模的模型(从25M到1.3B参数),以支持广泛的应用场景。得益于它们强大的泛化能力,我们通过度量深度标签对它们进行微调,以获得我们的度量深度模型。除了我们的模型,考虑到当前测试集的多样性有限和频繁的噪声,我们构建了一个具有精确注释和多样化场景的多功能评估基准,以促进未来的研究。

接下来展示了与之前深度估计的王者marigold模型的估计效果对比:

第一组,也就是上边这行,是一张视错觉图片,本身就比较复杂,甚至人眼都容易看错,然后marigold也就顺利成章的估计错了,甚至把图像上的花纹估算成了深度。相比之下,depth anything V1模型,额可以比较好的估计画面的实际深度。

第二组,可以重点关注篮筐右侧的部分,marigold模型把杆子后边的深度估计错了,而depth anything V1模型可以正确的估计该图的深度。

我们再看V1和V2的变化:

可以看出效果还是有明显的提升的,尤其是画面的细节,以及一些透明的地方,这个效果,可以说相当拔群了。

那么他是如何实现的呢?

Depth Anything V2的核心训练思路包括以下几个关键步骤,这些步骤共同作用使得模型在效果上优于其他模型:

  1. 使用合成图像

    • 替代真实图像:所有标记的真实图像被高精度的合成图像替代。合成图像的深度标签非常精确,能够提供包括细微结构和透明、反射物体在内的完整深度信息。
    • 解决标签噪声:真实图像的深度标签可能存在噪声,而合成图像可以避免这些问题。
  2. 扩大教师模型的容量

    • 教师模型:首先训练一个基于DINOv2-G的教师模型,仅使用高质量的合成图像。这个模型作为基础,用于后续步骤中的伪标签生成。
  3. 利用大规模伪标记真实图像

    • 伪标签生成:使用教师模型为大规模未标记的真实图像生成伪深度标签。这些伪标签具有高度的多样性和精确性。
    • 学生模型训练:最终的学生模型仅在这些伪标记的真实图像上进行训练,以实现鲁棒的泛化能力。
  4. 解决合成图像的局限性

    • 分布偏移:合成图像与真实图像在风格和颜色分布上存在差异,可能导致模型在真实图像上的泛化能力下降。通过伪标签,模型能够更好地适应真实世界的分布。
    • 场景覆盖限制:合成图像的场景类型有限,通过引入大规模未标记的真实图像,可以扩展模型的场景覆盖范围。
  5. 知识蒸馏

    • 从大模型到小模型:通过伪标签,小型学生模型能够学习并模仿教师模型的高质量预测,类似于知识蒸馏的过程,但发生在标签级别而非特征或对数级别。
  6. 构建多功能评估基准

    • DA-2K:为了更好地评估模型性能,作者构建了一个具有精确注释和多样化场景的评估基准DA-2K。这有助于验证模型在不同场景下的表现。
  7. 优化损失函数

    • 梯度匹配损失:在合成图像训练中使用梯度匹配损失(Lgm),有助于提高深度预测的锐度和细节。
  8. 测试时分辨率扩展

    • 分辨率扩展:模型在测试时可以自由地提高图像分辨率,以生成更精细的深度图。

这些训练思路的结合使得Depth Anything V2在多个方面表现出色,包括鲁棒性、细节捕捉、泛化能力以及在多样化场景中的表现。通过这种方式,模型能够更好地处理真实世界中的复杂性和多样性。

更多内容,大家可以关注最上方的论文。

🎁效果测试

我们搭建一个简单的工作流来测试对比下,默认的zoe 深度估计(比较早期的方法)和depth anything V2的实际效果:

细节层面,尤其是尾巴的羽毛部分,depth anything v2的确好很多

同种子的情况下,生成效果对比:

深度图的精细程度,在生成结果上明显的体现了出来。

换个卡通模型,也有类似的表现

我们切换一张原图:

深度图方面,zoe对细节的区分能力差很多:

生成效果:

细节的还原方面,depth anything v2 也是明显的胜者,不过对于大场景的还原方面,比如说后边的树和岛屿,深度好像zoe更强一点。

(瓶子本身质感的问题,估计是反推提示词的问题,这里没有仔细调整,重点看深度)

人物测试:

复杂场景测试:

 

👓测试结论

总体来说,如果你需要使用深度图来控制画面,强烈建议直接使用 anything depth v2,对于画面细节的保留很强,而且对于大模型的兼容性也很高。

如果你对AI绘画和AI绘画变成生产力这件事感兴趣的话,记得关注我吼,会持续更新更多有价值的内容~

✨写在最后

如果对comfyui还不熟悉的话,最近面向ComfyUI的新手,开了一门图文课程,现在已经更新完成了,如果大家在学习过程中遇到什么问题,也可以直接文章下留言,会持续更新相关答疑内容哈。欢迎订阅哦~

https://blog.csdn.net/jumengxiaoketang/category_12683612.html

​​

感谢大家的支持~

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 17:02:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 17:02:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 17:02:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 17:02:01       55 阅读

热门阅读

  1. Node.js 路由

    2024-07-20 17:02:01       18 阅读
  2. JDK版本详解

    2024-07-20 17:02:01       18 阅读
  3. Zookeeper是什么,为什么要用,怎么用?

    2024-07-20 17:02:01       23 阅读
  4. 【c++】用c++类做一个猜数字游戏

    2024-07-20 17:02:01       18 阅读
  5. execjs._exceptions.ProgramError: SyntaxError: 语法错误

    2024-07-20 17:02:01       18 阅读
  6. MySQL自增主键出现不连续的原因?

    2024-07-20 17:02:01       19 阅读
  7. C++案例四:简易记事本程序

    2024-07-20 17:02:01       17 阅读
  8. DNS解析过程

    2024-07-20 17:02:01       17 阅读
  9. axios

    axios

    2024-07-20 17:02:01      23 阅读
  10. 使用Spring Boot和RabbitMQ实现消息驱动微服务

    2024-07-20 17:02:01       19 阅读
  11. postgresql 大于当前时间升序,小于当前时间降序

    2024-07-20 17:02:01       18 阅读