UNO:字節跳動開發的一個多主體條件圖像生成模型
UNO是什么?
UNO是由字節跳動研究團隊開發的多主體條件圖像生成模型,通過擴散變換器的上下文生成能力,生成高一致性的多主體配對數據。
UNO核心特點
多圖像條件生成:支持單主體和多主體驅動的圖像生成,能夠根據一張或多張參考圖像生成新的圖像。
漸進式跨模態對齊:通過逐步對齊不同模態(如文本和圖像)來提高生成一致性,分為兩個階段。第一階段使用單主體上下文生成數據來微調預訓練的文本到圖像模型,使其成為一個主體到圖像模型;第二階段繼續在生成的多主體數據對上進行訓練。
通用旋轉位置嵌入:支持多種分辨率和長寬比的圖像生成,能夠有效緩解在擴展視覺主體控制時出現的屬性混淆問題。
UNO關鍵機制:
漸進式跨模態對齊(Progressive Cross-Modal Alignment):分為兩個階段。第一階段使用單主體上下文生成的數據微調預訓練的文本到圖像模型,使其成為一個主體到圖像模型;第二階段繼續在生成的多主體數據對上進行訓練。
通用旋轉位置嵌入(Universal Rotary Position Embedding,UnoPE):能夠有效緩解在擴展視覺主體控制時出現的屬性混淆問題,支持多種分辨率和長寬比的圖像生成。
UNO工作原理
UNO利用擴散變換器的上下文生成能力,生成高一致性的多主體配對數據。它從一個文本到圖像模型迭代訓練而來,通過其獨特的漸進式跨模態對齊和通用旋轉位置嵌入等機制,實現了在單主體和多主體驅動生成中既能保持高一致性又能確保可控性。
UNO應用場景
單主體生成:根據一張參考圖像生成圖像,例如可以根據一張時鐘的圖片生成一個時鐘在海灘上的圖像。
多主體生成:根據多張參考圖像生成圖像,比如將一個玩偶的圖片和水晶球的圖片作為參考,生成玩偶在水晶球中的圖像。
上下文生成:通過上下文提示生成高一致性的圖像,比如給出“一個帶有紅色太陽傘的海灘上的時鐘”這樣的提示,結合時鐘的參考圖像,生成符合描述的圖像。
UNO使用方法
環境配置:
創建虛擬環境并安裝依賴:
python -m venv uno_env source uno_env/bin/activate pip install -r requirements.txt
下載模型權重:自動下載(運行推理腳本時代碼自動下載),或手動使用huggingface-cli下載權重到指定目錄。
推理示例:運行以下命令生成圖像:
python inference.py --prompt "A clock on the beach is under a red sun umbrella" --image_paths "assets/clock.png" --width 704 --height 704
訓練:運行訓練腳本:
accelerate launch train.py
相關鏈接
項目主頁:https://bytedance.github.io/UNO
GitHub倉庫:https://github.com/bytedance/UNO
arXiv論文:https://arxiv.org/abs/2504.02160
演示:https://huggingface.co/spaces/bytedance-research/UNO-FLUX