如果你对 arXiv 的版本号有所了解,你就知道这篇论文已经更新了 4 次,现在已经来到了第 5 个版本。实际上,这个 arXiv 编号属于上海交通大学牛力团队一篇持续更新了四年的综述报告。
该综述介绍了图像合成(image composition)领域需要解决的问题和应运而生的子任务,总结了各个子任务的数据集、传统方法、深度学习方法和实验现象,从鸿蒙初辟写到尘埃落地。
- 论文标题:Making Images Real Again: A Comprehensive Survey on Deep Image Composition
- 论文地址:https://arxiv.org/abs/2106.14490v5
除了持续更新这份关于图像合成的综述,牛力团队还在持之以恒地研发和迭代一个图像合成工具箱:libcom。而这项工作更是已经持续了六年!
该团队自 2018 年底就开始从事图像合成领域的研究,从数据(10 + 原创数据集)到模型(30 + 原创模型)、论文(20 + 已发表论文),再到工具箱(libcom),历时六年,耗资数百万,由六届学生接力完成。
其中,所有数据集的每张图片都经过 2~3 人检查,以严格保证数据集的质量。所有模型的代码都经过 2~3 人检查,以确保没有严重的 bug。该团队打趣地表示:「如果有严重的 bug 请尽快打脸。」
在多年研究积累的基础上,该实验室于 2023 年底推出了尽量无需训练微调、对任意图片开箱即用的图像合成工具箱 libcom。并且牛力老师表示:「该工具箱的形式也是我们首创的,体现了我们对 image composition 领域的理解。」
截至 2024 年 10 月,libcom 已被下载安装了 1.2 万次。
- 项目地址:https://github.com/bcmi/libcom
可以看到,libcom 的 logo 是一个半人马的形象,实际上这正是为了体现图像合成的目标:融合不同的图像元素。这个半人马就是人和马的融合,同时 logo 中还添加了装饰性的蓝圈和黄圈的融合。另一个有趣的细节是,由于蓝色和黄色的过渡色是绿色,因此半人马系上了一条绿色的腰带。
具体能力上,libcom 集成了十几项图像合成功能(每个功能都有一到两个简单有效的方法),实现了对图像合成的全方位覆盖,并且每一个功能都有对应的仓库。牛力老师谦虚地说:「经过近一年的迭代,大多数功能的效果还凑合。」
另外值得一提的是,每个功能对应的仓库中都有训练代码。这是该团队专门为用户微调准备的:如果用户发现某项功能在自己的数据集上表现欠佳,原因很可能是数据差异,因此用户只需用自己收集的训练数据微调模型,替换掉原来的 checkpoint,就能让这些功能发挥出自己的完整实力。
libcom 的功能
在介绍 libcom 的十几项功能之前,我们首先要了解什么是图像合成(image composition)。
图像合成是图像编辑(image editing)技术的一种,而图像编辑的原子操作包括增、删、改。其中「增」这个研究方向就叫做图像合成,指的是在图像中添加元素。另外,「删」是指从图像中擦除元素,该研究方向叫做图像填充(image inpainting)。「改」是指改变图像中元素的属性,该研究方向叫做属性编辑(attribute manipulation)。其余复杂的图像编辑操作皆可转化为「增」、「删」、「改」这三个原子操作的排列组合。
因此,可以说图像合成在图像编辑的版图中三分天下居其一,并且其在虚拟现实、艺术创作、电商广告、数据增广等领域有着广泛应用。
libcom 的十几项功能涵盖了图像合成的方方面面,从评估合成图的质量到得到高质量合成图:
1. get_composite_image:通过剪切粘贴、alpha 融合和泊松融合混合前景背景,如下图所示。这些是最简单的传统图像融合方法。
2. OPAScoreModel:输入合成图和前景掩码,判断前景物体的放置(位置、大小)是否合理。输出的分数介于 [0,1] 之间,1 表示合理,0 表示不合理。在下图中,左边的合成图分数为 1,右边的合成图分数为 0。
3. FOPAHeatMapModel: 输入一对背景图片和前景物体,输出该物体按照不同尺寸放在背景图片不同位置得到的合成图的合理性分数。假设有 K 个离散的前景物体尺寸,背景图片大小为 H*W, 则输出 H*W*K 的热力图。热力图上的每个像素对应一个放置的合理性分数,因此根据热力图可以获取合理的前景物体放置框。下图展示了单个前景物体尺寸的热力图以及根据热力图得到的前景物体放置框。
4. color_transfer: 传统的颜色迁移方法,用于将背景的颜色迁移到前景,适用于简单场景的图像和谐化。下图是合成图和颜色迁移后的结果。
5. ImageHarmonizationModel:输入合成图和前景掩码,图像和谐化模型调整前景的光照使其与背景和谐,输出和谐化结果。
6. PainterlyHarmonizationModel:艺术图像和谐化与图像和谐化类似,区别在于背景是艺术图片。输入合成图和前景掩码,艺术图像和谐化模型调整前景的风格 (颜色、纹理、笔触等) 使其与背景一致,输出和谐化结果。
7. HarmonyScoreModel: 输入合成图和前景掩码,判断前景和背景的光照是否匹配,输出前景与背景的和谐化分数。分数介于 [0,1] 之间,1 表示和谐,0 表示不和谐。在下图中,左边的合成图分数为 0.25,右边的合成图分数为 0.72。
8. InharmoniousLocalizationModel: 输入一张图片,输出该图片不和谐区域的掩码。下图展示了合成图和模型预测的不和谐区域。
9. FOSScoreModel: 输入一张合成图,预测前景和背景在几何和语义上的适配性分数,包括前景和背景的透视角度是否一致、前景物体的语义上下文是否合理等等。输出的适配性分数介于 [0,1] 之间,1 表示适配,0 表示不适配。
10. ShadowGenerationModel: 输入一张合成图和前景掩码,为前景物体在背景上生成合理的阴影。该功能不是很稳定,通常每随机生成 5 张会有 1~2 张的阴影形状较好。下图展示了随机采样 5 次生成的结果。
11. ControlComModel:输入一对背景图片和前景物体,把前景物体插入背景图片指定位置(黄色边界框),保持前景物体的姿态不变,做图像融合或者图像和谐化。两者的区别在于图像和谐化需要进一步调整前景物体的光照使其与背景和谐。
12. MureObjectStitchModel: 输入一对背景图片和前景物体 (支持多张参考图),把前景物体插入背景图片指定位置(黄色边界框),调整前景物体的姿态和光照,得到合理的合成图。模型对于细节简单的物体和常见物体效果较好。对于细节复杂的物体,该团队建议用前景物体的 5~10 张图片花 10 分钟微调模型,这样一来,该模型的细节保留能力会大幅提升。该团队也提供了微调模型的代码。微调模型之后替换原来的 checkpoint 即可。
libcom 背后的技术
通常而言,图像合成的用法是把一个前景物体插入到一张背景图片中,得到一张合成图。但是通过简单的剪切粘贴得到的合成图会存在诸多问题,我们可以将这些问题都看作是前景和背景不一致问题,其中包括外观不一致性、几何不一致性、语义不一致性。三种不一致性又可进一步分解成若干子问题(边界、光照、阴影、放置、遮挡、视角等)。
为了解决这些子问题,研究社区又提出了很多子任务(如图像融合、图像和谐化、阴影生成、物体放置等)。在图像合成中,不一致性(inconsistency)、子问题(issue)、子任务(sub-task)三者之间的关系如下图所示。
上述这些子任务可以串行(sequential pipeline)或者并行(parallel pipeline)执行,以解决前景和背景之间的不一致性,得到高质量合成图。
串行流程和并行流程如下图所示,绿勾和红叉表示是否执行该子任务。
给定一对背景图片和前景物体,串行流程是先在背景中寻找前景物体的合理放置,通过图像混合解决边界不自然的问题,通过图像和谐化解决前背景光照不和谐的问题,通过阴影生成为前景物体在背景上生成合理的阴影。
而并行流程则是在一个模型中同时执行多个子任务,直接输出最终的合成图。并行流程也叫做生成式图像合成,近两年随着扩散模型的爆火而进入大众的视野。
libcom 的功能中有的基于串行流程,有的基于并行流程。