🧶背景
最近了解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 相比,这个版本通过三个关键实践产生了更精细、更鲁棒的深度预测:
- 用合成图像替换所有标记的真实图像,
- 扩大我们教师模型的容量,
- 通过大规模伪标记真实图像的桥梁教授学生模型。
与基于Stable Diffusion构建的最新模型相比,我们的模型在效率上显著更高(速度超过10倍)且更准确。我们提供不同规模的模型(从25M到1.3B参数),以支持广泛的应用场景。得益于它们强大的泛化能力,我们通过度量深度标签对它们进行微调,以获得我们的度量深度模型。除了我们的模型,考虑到当前测试集的多样性有限和频繁的噪声,我们构建了一个具有精确注释和多样化场景的多功能评估基准,以促进未来的研究。
接下来展示了与之前深度估计的王者marigold模型的估计效果对比:
第一组,也就是上边这行,是一张视错觉图片,本身就比较复杂,甚至人眼都容易看错,然后marigold也就顺利成章的估计错了,甚至把图像上的花纹估算成了深度。相比之下,depth anything V1模型,额可以比较好的估计画面的实际深度。
第二组,可以重点关注篮筐右侧的部分,marigold模型把杆子后边的深度估计错了,而depth anything V1模型可以正确的估计该图的深度。
我们再看V1和V2的变化:
可以看出效果还是有明显的提升的,尤其是画面的细节,以及一些透明的地方,这个效果,可以说相当拔群了。
那么他是如何实现的呢?
Depth Anything V2的核心训练思路包括以下几个关键步骤,这些步骤共同作用使得模型在效果上优于其他模型:
使用合成图像:
- 替代真实图像:所有标记的真实图像被高精度的合成图像替代。合成图像的深度标签非常精确,能够提供包括细微结构和透明、反射物体在内的完整深度信息。
- 解决标签噪声:真实图像的深度标签可能存在噪声,而合成图像可以避免这些问题。
扩大教师模型的容量:
- 教师模型:首先训练一个基于DINOv2-G的教师模型,仅使用高质量的合成图像。这个模型作为基础,用于后续步骤中的伪标签生成。
- 教师模型:首先训练一个基于DINOv2-G的教师模型,仅使用高质量的合成图像。这个模型作为基础,用于后续步骤中的伪标签生成。
利用大规模伪标记真实图像:
- 伪标签生成:使用教师模型为大规模未标记的真实图像生成伪深度标签。这些伪标签具有高度的多样性和精确性。
- 学生模型训练:最终的学生模型仅在这些伪标记的真实图像上进行训练,以实现鲁棒的泛化能力。
解决合成图像的局限性:
- 分布偏移:合成图像与真实图像在风格和颜色分布上存在差异,可能导致模型在真实图像上的泛化能力下降。通过伪标签,模型能够更好地适应真实世界的分布。
- 场景覆盖限制:合成图像的场景类型有限,通过引入大规模未标记的真实图像,可以扩展模型的场景覆盖范围。
知识蒸馏:
- 从大模型到小模型:通过伪标签,小型学生模型能够学习并模仿教师模型的高质量预测,类似于知识蒸馏的过程,但发生在标签级别而非特征或对数级别。
构建多功能评估基准:
- DA-2K:为了更好地评估模型性能,作者构建了一个具有精确注释和多样化场景的评估基准DA-2K。这有助于验证模型在不同场景下的表现。
优化损失函数:
- 梯度匹配损失:在合成图像训练中使用梯度匹配损失(Lgm),有助于提高深度预测的锐度和细节。
测试时分辨率扩展:
- 分辨率扩展:模型在测试时可以自由地提高图像分辨率,以生成更精细的深度图。
这些训练思路的结合使得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
感谢大家的支持~