编辑:编辑部 HYZ
【新智元导读】研发6年,耗资数百万,六届学霸接力,上交牛力团队首创的图像合成工具箱libcom,论文、代码、数据集全开源。团队欢迎各位大佬共铸libcom,贡献突出者可享冠名权。在AIGC 的浪潮中,对已有图片做编辑的图像编辑(image editing)技术受到了越来越多的关注。图像编辑(image editing)的原子操作包括增、删、改。
「增」是指在图像中添加元素,该研究方向叫做图像合成(image composition)「删」是指从图像中擦除元素,该研究方向叫做图像填充(image inpainting)「改」是指改变图像中元素的属性,该研究方向叫做属性编辑(attribute manipulation)其余复杂的图像编辑操作皆可转化为「增」、 「删」、「改」这三个原子操作的组合,通过按照一定顺序执行这些原子操作完成。
因此,图像合成(image composition)在图像编辑的版图中三分天下居其一,在虚拟现实、艺术创作、电商广告、数据增广等领域有着广泛应用。

图像合成(image composition)的通常用法是把一个前景物体插入到一张背景图片中,得到一张合成图。
但是通过简单的剪切粘贴得到的合成图会存在诸多问题,皆可视为前景和背景之间的不一致性,包括外观不一致性、几何不一致性、语义不一致性。三种不一致性可进一步分解成若干子问题(边界、光照、阴影、放置、遮挡、视角等等)。
为了解决这些子问题,很多子任务(图像融合、图像和谐化、阴影生成、物体放置等等)被相继提出,用于解决一个或多个子问题。
在图像合成中,不一致性(inconsistency)、子问题(issue)、子任务(sub-task)三者之间的关系如下图所示。

上述这些子任务可以串行(sequential pipeline)或者并行(parallel pipeline)执行,以解决前景和背景之间的不一致性,得到高质量合成图。
串行流程和并行流程如下图所示,绿勾和红叉表示是否执行该子任务。
给定一对背景图片和前景物体,串行流程先在背景中寻找前景物体的合理放置,通过图像混合解决边界不自然的问题,通过图像和谐化解决前背景光照不和谐的问题,通过阴影生成为前景物体在背景上生成合理的阴影。而并行流程在一个模型中同时执行多个子任务,直接输出最终的合成图。
并行流程也叫做生成式图像合成,近两年随着扩散模型的爆火而进入大众的视野。

在这一领域,上海交通大学牛力团队从2018年底就开始从事图像合成(image composition)领域的研究,从数据(10+原创数据集)到模型(30+原创模型)、论文(20+已发表论文),再到工具箱(libcom),历时六年,耗资数百万,由六届学生接力完成。
所有数据集的每张图片都经过2~3人检查,以严格保证数据集的质量。所有模型的代码都经过2~3人检查,以确保没有严重的bug(如果有严重的bug请尽快打脸)。

实验室项目主页:github.com/bcmi
2023年底,团队推出了尽量无需训练微调、对任意图片开箱即用的图像合成工具箱libcom,该工具箱的形式也是首创的,体现了他们对image composition领域的理解。
截至2024年10月,libcom已经下载安装1.2万次。

工具箱地址:github.com/bcmi/libcom
因为图像合成旨在融合不同的图片元素,所以libcom的logo采用了半人马的形象,即人和马的融合,并添加了装饰性的蓝圈和黄圈的融合。由于蓝色和黄色的过渡色是绿色,因此半人马系上了一条绿色的腰带。

Libcom集成了图像合成的十几项功能,对图像合成实现全方位覆盖,每个功能选择了一到两个简单有效的方法。
经过近一年的迭代,大多数功能的效果还凑合。并且,每一个功能都有对应的仓库,仓库里有训练代码。
如果你发现某项功能在你的数据集上表现欠佳,很有可能是数据差异导致,用你收集的训练数据微调模型,替换掉原来的checkpoint即可。
和libcom一同打包赠送的还有awesome-image-composition(汇总了该领域的论文、代码、数据集),在线demo(很久没更新了,不是最新模型)、以及一篇写了四年的survey(一年一更)。

十二大功能全解
接下来依次介绍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还有很多不足,还有很多事情要做,比如数据集扩充、模型调优、添加新功能、支持任意分辨率、工程优化、推理加速、跨平台迁移、版本升级迭代、用户界面等等。
团队表示,欢迎对图像合成(image composition)感兴趣的大佬们指导工作,共铸libcom,提供资金、数据、人力、技术等方面的支持,并加入贡献者名单。如果贡献特别突出,可以享有冠名权(比如JackLibcom, PonyLibcom)。
合作邮箱:
ustcnewly@sjtu.edu.cn
参考资料:
github.com/bcmi/libcom