耗資數百萬,六年磨一劍!上交開源首創圖像合成神器libcom,下載量破萬

新智元報導  

編輯:編輯部 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實驗室項目主頁:github.com/bcmi

2023年底,團隊推出了儘量無需訓練微調、對任意圖片開箱即用的圖像合成工具箱libcom該工具箱的形式也是首創的,體現了他們對image composition領域的理解。

截至2024年10月,libcom已經下載安裝1.2萬次

工具箱地址:github.com/bcmi/libcom工具箱地址: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左邊的合成圖分數為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左邊的合成圖分數為0.25,右邊的合成圖分數為0.72

8. InharmoniousLocalizationModel

輸入一張圖片,輸出該圖片不和諧區域的掩碼。

合成圖和模型預測的不和諧區域合成圖和模型預測的不和諧區域

9. FOSScoreModel

輸入一張合成圖,預測前景和背景在幾何和語義上的適配性分數,包括前景和背景的透視角度是否一致、前景物體的語義上下文是否合理等等。輸出的適配性分數介於[0,1]之間,1表示適配,0表示不適配。

10. ShadowGenerationModel

輸入一張合成圖和前景掩碼,為前景物體在背景上生成合理的陰影。該功能不是很穩定,通常隨機生成5張會有1~2張的陰影形狀較好。

隨機采樣5次生成的結果隨機采樣5次生成的結果

11. ControlComModel

輸入一對背景圖片和前景物體,把前景物體插入背景圖片指定位置(黃色邊界框),保持前景物體的姿態不變,做圖像融合或者圖像和諧化。兩者的區別在於圖像和諧化需要進一步調整前景物體的光照使其與背景和諧。

12. MureObjectStitchModel

輸入一對背景圖片和前景物體(支持多張參考圖),把前景物體插入背景圖片指定位置(黃色邊界框),調整前景物體的姿態和光照,得到合理的合成圖。

模型對於細節簡單的物體和常見物體效果較好。對於細節複雜的物體,建議用前景物體的5~10張圖片花10分鐘微調模型,細節保留能力會有大幅提升。

同時,團隊還提供了微調模型的代碼,微調模型之後替換原來的checkpoint即可。

未來展望

總結來說,Libcom還有很多不足,還有很多事情要做,比如數據集擴充、模型調優、添加新功能、支持任意解像度、工程優化、推理加速、跨平台遷移、版本升級迭代、用戶界面等等。

團隊表示,歡迎對圖像合成(image composition)感興趣的大佬們指導工作,共鑄libcom,提供資金、數據、人力、技術等方面的支持,並加入貢獻者名單。如果貢獻特別突出,可以享有冠名權(比如JackLibcom, PonyLibcom)。