DiffMatch:扩散模型 + 图像配对 + 密集匹配
?
提出背景
论文地址:https://arxiv.org/pdf/2305.19094.pdf
代码地址:https://ku-cvlab.github.io/DiffMatch/
?
在做一个项目,需要俩张配对图像相互转换的算法。
用 pix2pix(GAN)的效果不好。
因为 扩散模型 比 GAN模型 生成要好,那得找 扩散模型 + 配对算法,这就是 DiffMatch。
他这个很强,是密集特征匹配。
- 与仅检测和匹配少量关键点的稀疏对应不同,密集对应匹配输入图像之间的所有点。
- 密集对应的目标可以用数据项(负责直接衡量两幅图像之间特征的匹配程度)和先验项(利用我们已有的关于这些图像应有特性的知识来指导匹配过程。)来定义。
创新点:
- 为解决图像配对领域的问题 ---- 在一对图像之间建立像素级的对应关系。
- DiffMatch受到扩散模型在学习后验分布方面的成功启发,采用了条件扩散基础框架,旨在显式地模拟匹配场分布。
- 不同于仅关注最大化似然的现有学习方法,DiffMatch旨在学习在给定源图像和目标图像特征条件下的密集对应的后验分布。
比如你在一个拥挤的聚会中找一个朋友,但你只有他的模糊照片作为参考。
你的大脑不仅仅是在人群中寻找与照片相似的人(类似于最大化似然),还在考虑其他信息,比如你朋友可能的身高、他通常穿的衣服风格等(后验分布)。
DiffMatch的创新之处在于,不仅考虑图像间的直接相似性(像你寻找与照片相似的人),还考虑了其他的上下文信息(如你对朋友的其他知识),以更准确地找到匹配。
?
效果检验
-
源图像(a):这些是处理前的原始图像,作为比较的起点。
-
目标图像(b):这些图像是与源图像进行对比或匹配的对象。
-
使用现有方法估计的源图像变形(c-d):
- 这部分展示了使用现有方法(称为“最先进的方法”)将源图像与目标图像进行匹配的结果。
- “估计的对应关系”意味着系统试图弄清楚源图像的不同部分与目标图像的哪些部分相对应。
- 这些方法在某些区域可能会遇到困难,比如在没有太多纹理的地方、图案重复的地方或源图像和目标图像之间有很大差异的地方。
-
使用DiffMatch的源图像变形(e):
- 这展示了使用新技术DiffMatch进行相同匹配过程的结果。
- 这里的主张是 DiffMatch 做得更好,特别是在具有挑战性的区域,如无纹理区域、重复图案和大位移。
-
真实情况(f):
- 这是理想的或完美匹配的目标,是人们希望达到的状态。它展示了如果源图像与目标图像完美匹配,应该呈现的样子。
- 将DiffMatch的结果(e)与这个真实情况(f)进行比较,有助于理解这种新技术接近理想状态的程度。
上图比较了不同的图像匹配方法。
新方法 DiffMatch 被展示为比以前的方法更有效,尤其是在其他方法可能表现不佳的困难区域。
?
密集匹配研究
传统技术:
- 早期的密集对应技术侧重于手动设计匹配先验,即在算法中加入预先设定的规则或知识来帮助匹配过程。
比如拼一幅风景画:
- 需要手动设计的匹配先验就像是拼图时的一些基本规则或技巧。
- 如果使用“SIFT Flow”技术,首先寻找相似的颜色和纹理来拼接图像的平滑区域,以及尽量保持拼接部分之间的位移较小。
- 如果使用“DCTM”技术,在拼接时特别注意图像中的边缘和不连续区域,确保这些区域在拼图中正确对齐。
- 但可能难以仅凭规则完成整个画面,而且手动构建这些先验通常很困难。
?
近期进展:
- 最近的方法采用学习范式,设计目标函数来最大化似然(即直接从数据中学习匹配规则),希望能在大规模数据集上通过网络架构学习到最佳的匹配先验。
不使用预设规则,而是通过观察许多已经完成的拼图来“学习”如何拼图。
例如,“DGC-Net”和“GLU-Net”提出的粗到细的框架,先从大致位置开始拼接,然后逐渐细化,直到每个小片都精确放置。
例如,“COTR”使用的基于变压器的网络,能够更智能地理解各个拼图片之间的关系。
例如,“GOCor”提出的可微匹配模块,则类似于机器人在拼图过程中能够学习并解决那些难以匹配的部分。
尽管取得了一定成功,但这些方法在处理无纹理区域(单一颜色的天空)、重复图案(重复的波浪纹理)和大位移方面仍有不足,因为它们缺乏对先验的明确意识。
?