陳東1,2 ·徐建進3 ·鄭文兆4 ·戴高樂1 ·王億達5 ·張仁瑞6 ·王浩凡2 ·張尚航1*
1北京大學 · 2 InstantX 團隊 · 3卡內基美隆大學 · 4加州大學柏克萊分校 · 5理想汽車公司 · 6香港中文大學
擴散變壓器的免訓練區域提示(Regional-Prompting-FLUX)使擴散變壓器(即 FLUX)以免訓練的方式具有查找粒度的合成文字到影像的生成能力。根據經驗,我們表明我們的方法非常有效並且與 LoRA 和 ControlNet 相容。
我們的推理速度比基於 RPG 的實作快得多,但佔用的GPU 記憶體更少。
[2024/11/05] 代碼已發布,歡迎嘗試!
[2024/11/05] 技術報告發布!
地區面具 | 配置 | 產生結果 |
---|---|---|
紅色:雞尾酒區(xyxy:[450, 560, 960, 900]) 綠色:表格區域(xyxy:[320, 900, 1280, 1280]) 藍色:背景 | 基本提示: “日落時分,海灘木桌上的熱帶雞尾酒。” 後台提示: “一張照片” 區域提示:
| |
紅色:彩虹區(xyxy:[0, 0, 1280, 256]) 綠色:船舶區域(xyxy:[0, 256, 1280, 520]) 黃色:魚區(xyxy:[0, 520, 640, 768]) 藍色:寶藏區(xyxy:[640, 520, 1280, 768]) | 基本提示: 「一艘雄偉的船在彩虹下航行,充滿活力的海洋生物在下面水晶般的海水中滑行,體現了大自然的奇蹟,而一個古老的、生鏽的寶箱則隱藏在海底。” 區域提示:
| |
紅色:有火炬區域的女人(xyxy:[128, 128, 640, 768]) 綠色:背景 | 基本提示: 「一位古老的婦女手持熊熊的火炬,莊嚴地站著,背景是一場激烈的戰鬥,捕捉到了歷史戰爭場景中的力量和悲劇。” 後台提示: “一張照片。” 區域提示:
| |
紅色:狗區域 (assets/demo_custom_0_mask_0.png) 綠色:貓咪區域 (assets/demo_custom_0_mask_1.png) 藍色:背景 | 基本提示: “狗和貓坐在鬱鬱蔥蔥的綠草上,在陽光明媚的戶外環境中。” 後台提示: “一張照片” 區域提示:
| 注意:使用分割遮罩產生是實驗函數,產生的影像並不完全受區域約束,我們假設這是因為遮罩在下取樣過程中遭受退化。 |
地區面具 | 配置 | 產生結果 |
---|---|---|
紅色:恐龍區 (xyxy: [0, 0, 640, 1280])藍色:都市區域 (xyxy: [640, 0, 1280, 1280]) | 基本提示: “素描風格:一隻可愛的恐龍在卡通城市上空頑皮地吹著小火,呈現出歡快的場景。” 區域提示:
| |
紅色:UFO 區域(xyxy:[320, 320, 640, 640]) | 基本提示: “一個可愛的卡通風格的UFO漂浮在陽光明媚的城市街道上,藝術風格融合了現實和插畫元素” 後台提示: “一張照片” 區域提示:
|
地區面具 | 配置 | 產生結果 |
---|---|---|
紅色:第一輛車區域(xyxy:[0, 0, 426, 968]) 綠色:第二輛車區域(xyxy:[426, 0, 853, 968]) 藍色:第三輛車區域(xyxy:[853, 0, 1280, 968]) | 基本提示: “紅、藍、黃三輛高性能跑車,在城市街道上並肩競速” 區域提示:
| |
紅色:女性區域(xyxy:[0, 0, 640, 968]) 綠色:海灘區域(xyxy:[640, 0, 1280, 968]) | 基本提示: “一個女人沿著美麗的海灘散步,欣賞美麗的海岸景色。” 區域提示:
|
我們使用擴散器儲存庫之前的提交來確保可重複性,因為我們發現新的擴散器版本可能會遇到不同的結果。
# install diffusers locally git clone https://github.com/huggingface/diffusers.git cd diffusers # reset diffusers version to 0.31.dev, where we developed Regional-Prompting-FLUX on, different version may experience different results git reset --hard d13b0d63c0208f2c4c078c4261caf8bf587beb3b pip install -e ".[torch]" cd .. # install other dependencies pip install -U transformers sentencepiece protobuf PEFT # clone this repo git clone https://github.com/antonioo-c/Regional-Prompting-FLUX.git # replace file in diffusers cd Regional-Prompting-FLUX cp transformer_flux.py ../diffusers/src/diffusers/models/transformers/transformer_flux.py
請參閱 infer_flux_regional.py 中的詳細範例(包括 LoRA 和 ControlNet)。下面是一個快速入門範例。
import torchfrom pipeline_flux_regional import RegionalFluxPipeline, RegionalFluxAttnProcessor2_0pipeline = RegionalFluxPipeline.from_pretrained("black-forest-labs/FL.1-dev",UX torch_m.m. er 中的名稱。 pipeline.transformer .set_attn_processor(attn_procs)## 一般設定image_width = 1280image_height = 768num_inference_steps = 24seed = 124base_prompt = "一位古老的女子手持熊大戰力量與悲劇。著古袍的端莊女子,她的臉被她高舉的火把照亮。她的表情充滿決心和悲傷,她的服裝和外表反映了那個歷史時期。火把在她的臉上投射齣戲劇性的陰影,火焰在黑暗中充滿活力地舞動。 } }## 區域控制因子設定mask_inject_steps = 10 # 越大表示控制越強,建議在5-10 之間double_inject_blocks_interval = 1 # 1 表示最強控制single_inject_blocks_interval = 1 # 1 表示最強controlbase_ratio = 0.強controlregional_prompts = []regional_masks = []background_mask = torch.ones((image_height, image_width))對於region_idx,regional_prompt_mask_pairs.items() 區域:description = mscription' , y1, x2, y2 = maskmask = torch.zeros ((image_height, image_width))mask[y1:y2, x1:x2] = 1.0background_mask -= maskregional_prompts.append(description)regional_mask -= maskregional_prompts.append(description)regional_masks.罩沒有覆寫整個影像,則附加背景提示並maskif background_mask.sum() > 0:regional_prompts.append(background_prompt)regional_masks.append(background_mask)image = pipeline(prompt=base_prompt,widm=jid,wid. mask_inject_steps,num_inference_steps=num_inference_steps,generator=torch.Generator (“cuda”)。 inject_blocks_interval,「single_inject_blocks_interval」:single_inject_blocks_interval,「 base_ratio」:base_ratio}, ).images[0]image.save(f"output.jpg")
我們的工作由 HuggingFace 和 fal.ai 贊助。謝謝!
如果您發現 Regional-Prompting-FLUX 對您的研究和應用有用,請使用此 BibTeX 引用我們:
@article{chen2024training, title={免訓練區域提示擴散變壓器},author={Chen, Anthony and Xu,jianjin and Cheng, Wenzhao and Dai, Gaule and Wang, Yida and Zhang, Renrui and Wang, Hafan and Zhang , 上航}, 期刊={arXiv預印本arXiv:2411.02395}, 年={2024}}
如有任何疑問,請隨時透過[email protected]聯繫我們。