一個LoRA實現GPT-4o級圖像編輯!浙大哈佛新模型沖上Hugging Face榜二
基于文本指令的圖像編輯任務一直都是圖像生成、編輯領域的一大熱點,從Prompt2prompt到InstructPix2Pix,從EmuEdit再到最新的GPT4o,都在不斷的拔高AI圖像編輯的水平。
總的來說,這些模型可以歸為兩大類:一種是免訓練(training-free)圖像編輯,一種是基于訓練或微調的圖像編輯。免訓練圖像編輯多通過對一個預訓練文生圖diffusion大模型進行提示詞替換、操縱注意力圖、圖像反演等操作實現,盡管省去了訓練的耗費,但其操作過程往往較為復雜且編輯效果不穩定、編輯任務種類單一。
而與之對應的基于訓練的方法,則需要通過大量的圖像編輯數據來訓練,所需數據量從幾十萬(InstructPix2Pix 300k)到上億不等(Step1X 20M),同時對diffusion模型的全量微調也要消耗大量資源!
之所以需要對文生圖擴散模型進行大量數據的訓練,其主要原因在于預訓練的文生圖模型只能理解生成式的圖像描述,而對于編輯指令,如「讓這個女人戴上墨鏡」、「讓這張圖變成吉卜力風格」這類話語無法理解,因此需要大量的編輯式指令和圖像對的微調、訓練。
最近,浙大和哈佛團隊提出了一種新的圖像編輯方法ICEdit,僅需要以往模型0.1%的訓練數據(50k)以及1%的訓練參數量(200M),就能實現多種類型高質量圖像編輯結果。
研究人員認為讓圖像編輯「降本增效」的核心要素就是充分利用文生圖模型自身的理解、生成能力,讓其理解編輯指令并直接用于圖像編輯。
論文地址:https://arxiv.org/pdf/2504.20690
項目主頁:https://river-zhang.github.io/ICEdit-gh-pages/
代碼倉庫:https://github.com/River-Zhang/ICEdit
Hugging Face演示:https://huggingface.co/spaces/RiverZ/ICEdit
ICEdit使用數據量以及編輯性能與其他SOTA模型對比;ICEdit僅用50k數據訓練就達到了和10M訓練的EmuEdit類似的性能。
ICEdit在hugging face上爆火,登上趨勢榜前五,引Twitter一眾大V轉發。
隨著Diffusion Transformer(DiT)文生圖模型(如SD3,FLUX.1 dev等)在可擴展性和長文本語義理解上展現出的極強性能以及生成結果的極高質量,越來越多的工作選擇DiT模型作為基座來完成各種圖像生成任務,這篇論文也同樣基于DiT多模態大模型來探索其圖像編輯能力。
研究人員發現,當使用一種上下文提示詞讓DiT模型來生成類似雙聯圖形式的結果時,如「一張雙聯畫,包含兩張并排的同一個男人的圖像。左邊是這個男人站立的一張照片,右邊是他抱著籃球的照片」,生成的左圖和右圖會保持極強的主體ID,這一特性也被很多工作用來制造Subject-driven generation任務的數據集,如OminiControl,UNO等。
在上下文提示詞中融入編輯指令后,模型正確理解編輯指令并生成對應結果。
而再進一步,假如有一個編輯指令是「讓這個男人抱著籃球」,直接輸入給模型他并不能理解如何生成,但是融入到這種上下文提示詞中,變成「一張雙聯畫,包含兩張并排的同一個男人的圖像。左邊是這個男人站立的一張照片,右邊是同一個男人,但 {讓這個男人抱著籃球}」時,研究人員發現模型就能夠理解指令并生成相同面貌抱著籃球的結果了。同時可視化一下「{讓這個男人抱著籃球}」的注意力圖會發現,
針對這個語句,模型確實注意到需要發生編輯的區域,說明它確實理解了編輯指令。
此外,將該方法與GPT4o等一眾商業大模型做對比,盡管在語義理解、編輯多樣性上相比還有差距,但該模型展現出了極強的人物ID保持、非編輯區域保持以及指令遵循能力,甚至一定程度上超越GPT4o、Gemini等商業大模型。
該模型與商用模型相比更開源、低成本、速度也更快(8~10s即可完成一張圖片的編輯),不可謂不強大。
ICEdit圖像編輯模型與一眾商業大模型的編輯結果對比
兩種免訓練的基于上下文理解的圖像編輯框架
如上文提到,雖然模型理解了編輯指令,但它還是在進行文生圖,并不知道輸入圖像長什么樣子,還是無法完成圖像編輯,這該如何解決呢?
基于此,作者嘗試了兩種免訓練的架構來讓DiT模型能夠既接收參考圖,又根據上下文編輯指令完成圖像編輯:
兩種免訓練指令編輯框架
第一種框架是基于文生圖DiT模型,該框架流程略微繁瑣一些,簡單來說就是將待編輯圖像先進行圖像反演(inversion),并保留反演過程中模型內部的圖像特征,用于后續注入(與RF-Solver-Edit類似)。
而完成圖像反演后獲得的噪聲圖像,會與一個相同尺寸的隨機初始化噪聲拼接,形式一個噪聲雙聯圖,用于圖像去噪。
去噪的過程中接收的提示詞便是融入了編輯指令的上下文提示詞,如「一張雙聯畫,包含兩張并排的同一個男人的圖像……同一個男人,但 {讓這個男人抱著籃球}」,同時在去噪的過程中不斷向雙聯圖左側的噪聲圖注入原始圖像反演的特征,右側噪聲則不做操作,最后生成的結果圖的左側將進行原始圖像的重建,而右側則會生成根據上下文提示詞發生編輯后的結果,即這個男人抱著籃球。
另一個免訓練框架則是基于Inpainting DiT(圖像補全,如FLUX.1 Fill),該框架則十分簡潔,只需要將待編輯圖像(source image)放置在雙聯圖左側,右側則全部設置為inpainting區域即可,輸入的提示詞依然是融入了編輯指令的上下文提示詞,可以看到輸出了編輯后的圖像。
總的來說兩種框架的目的都是為了讓模型能接收參考圖像同時基于上下文指令進行編輯,雖然其展現出了出色的編輯效果,但是從圖中可以看到抱著籃球的男人ID還是發生了一些變化,拿罐頭的女人也發生了姿勢改變,成片率依然不高。
混合專家LoRA微調與test-time scaling大幅提升性能
雖然免訓練的方法性能依舊有限且成片率不高,但它可以通過后續的微調來提升性能。
作者基于inpainting框架的簡潔性,在其基礎上使用了來自互聯網上的公共編輯數據集(MagicBrush 9k+OmniEdit 40k)進行了LoRA微調,微調策略很簡單,只需要將數據集中的編輯指令改為統一的上下文形式指令,即「一張雙聯畫,包含兩張并排的同一個場景的圖像,右邊的場景與左邊相同,但 + { 編輯指令 }」。
作者發現微調過后模型編輯的成功率大大提高,并且能泛化到許多數據集之外的圖像類型編輯上。
然而作者發現僅僅使用普通的lora在不同的編輯任務上成功率依然不夠高,并且有些任務如Remove、style等編輯效果較差。
作者認為這是由于不同的編輯任務需要不同的特征處理模式,而僅靠一個LoRA難以學習所有編輯類型的處理方法,因此采用多LoRA專家的混合訓練或許是提高編輯效果的關鍵。
于是作者借鑒了LLM領域發揮重要作用的MoE(混合專家模型)方法,將其用在DiT多模態大模型中,并將LoRA設置為不同的專家進行訓練,得到了最終的模型。
盡管采用了MoE+LoRA的形式,模型的訓練參數依然遠遠少于SOTA模型(0.2B vs 17B)。
表1:模型參數量和性能對比
表2:訓練數據量和性能對比
表3:使用LoRA微調后相比training free性能顯著提升,采用MoE架構后性能繼續上升
訓練端結束,那么推理時模型的性能還有提升的空間嗎?作者發現不同的隨機初始化噪聲會產生不同的編輯結果,而這些結果有的好有的壞,如何讓模型自動且快速的生成最佳的結果交給用戶呢?
為了解決「不同初始噪聲編輯效果不一」的問題,作者提出適用于圖像編輯任務的早篩推理時拓展策略(Early filter inference time scaling)。
簡單來說,當前最常用的FLUX、SD3等DiT架構文生圖模型多采用流匹配等技術訓練,這使得其能夠通過極少的推理步數就能快速生成高質量結果(走直線),許多工作也探索了One-step圖像生成的DiT模型。因此,作者想到利用最初的幾個step來判斷當前初始噪聲生成的效果是否滿足編輯要求,如果不滿足則直接略過考慮下一個候選。
Early filter inference time scaling
案例要求將天空變成黑夜的樣子,有的噪聲候選在前4步時是天亮的樣子,進行完整的50步推理依然是天亮的樣子,不滿足編輯的要求,因此可以用VLM作為判官在前幾步就把這個不符合的候選去除,節省推理的步數耗費。
此外,VLM還可以優中取優,即使都完成了天空變成夜晚的操作,但是一個編輯后還有星星在空中閃爍,更符合夜晚的氛圍,VLM也能將它認為是更好的結果留下。
VIE-Score測評顯示采用inference time scaling策略帶來了極大的效果提升
作者測試了采用inference-time scaling策略與直接隨機生成的效果,使用基于GPT4o的VIE-score進行測評,更符合人類偏好。可以看到采用該策略后,VIE-score大幅提升,甚至媲美SeedEdit(3月份版本)。
除了定量測評外,ICEdit與其他模型定性對比也展示了其更佳的編輯效果,無論是指令遵循、背景保持還是人物ID保持上。
此外,由于作者提出的方法是通過外接MoE-LoRA模塊實現,并未改變DiT模型原有的生成能力,因此具有很強的泛化性并且能夠借助DiT自身能力產生更加和諧自然的編輯效果,如自動添加陰影、反光、字體風格等等。
借助DiT自身生成能力能產生更加和諧的編輯效果
此外,該框架也可以看作是一種新的image-to-image框架,經過特殊數據訓練還可用于一些low level任務。作者嘗試了未經額外訓練模型就可以泛化到一些特殊任務上,如圖像光照改變、水印去除、修復等等。
該框架可以看作是一個通用的image-to-image框架,完成多種下游任務