六年、六屆學生接力,共鑄上交大圖像合成工具箱libcom
機器之心報道
機器之心編輯部
如果你對 arXiv 的版本號有所瞭解,你就知道這篇論文已經更新了 4 次,現在已經來到了第 5 個版本。實際上,這個 arXiv 編號屬於上海交通大學牛力團隊一篇持續更新了四年的綜述報告。
該綜述介紹了圖像合成(image composition)領域需要解決的問題和應運而生的子任務,總結了各個子任務的數據集、傳統方法、深度學習方法和實驗現象,從鴻蒙初闢寫到塵埃落地。
除了持續更新這份關於圖像合成的綜述,牛力團隊還在持之以恆地研發和迭代一個圖像合成工具箱:libcom。而這項工作更是已經持續了六年!
該團隊自 2018 年底就開始從事圖像合成領域的研究,從數據(10 + 原創數據集)到模型(30 + 原創模型)、論文(20 + 已發表論文),再到工具箱(libcom),歷時六年,耗資數百萬,由六屆學生接力完成。
其中,所有數據集的每張圖片都經過 2~3 人檢查,以嚴格保證數據集的質量。所有模型的代碼都經過 2~3 人檢查,以確保沒有嚴重的 bug。該團隊打趣地表示:「如果有嚴重的 bug 請儘快打臉。」
在多年研究積累的基礎上,該實驗室於 2023 年底推出了儘量無需訓練微調、對任意圖片開箱即用的圖像合成工具箱 libcom。並且牛力老師表示:「該工具箱的形式也是我們首創的,體現了我們對 image composition 領域的理解。」
截至 2024 年 10 月,libcom 已被下載安裝了 1.2 萬次。
可以看到,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 的功能中有的基於串行流程,有的基於並行流程。
圖像合成人才留步,團隊在召喚
經過多年迭代發展的 libcom 功能雖多,但也有不少地方有待改進和補充。牛力老師表示,目前有待改進地方包括數據集擴充、模型調優、添加新功能、支持任意分辨率、工程優化、推理加速、跨平臺遷移、版本升級迭代、用戶界面等。
爲了進一步推進這個項目的發展,牛力團隊在此發出了誠摯邀請:「誠邀對圖像合成感興趣的大佬們指導工作,共鑄 libcom,提供資金、數據、人力、技術等方面的支持。」貢獻特別突出的人甚至可以獲得 libcom 項目的冠名權,比如 JackLibcom、PonyLibcom。如有合作意向,請發送郵件到ustcnewly@sjtu.edu.cn。