[1Prompt1Story] 滑動窗口機制 | 圖像生成管線 | VAE變分自編碼器 | UNet去噪神經網絡

鏈接:https://github.com/byliutao/1Prompt1Story

這個項目是一個基于單個提示生成一致文本到圖像的模型。它在ICLR 2025會議上獲得了聚焦論文的地位。該項目提供了生成一致圖像的代碼、Gradio演示代碼以及基準測試代碼。

主要功能點:

  • 使用單個提示生成一致的文本到圖像
  • 提供在線Gradio演示
  • 包含基準測試代碼

技術棧:

  • PyTorch
  • Transformers
  • Diffusers
  • OpenCV
  • Scipy
  • Gradio
    在這里插入圖片描述

docs:1Prompt1Story

1Prompt1Story項目通過AI生成圖像實現連貫敘事

該項目采用滑動窗口方法創建圖像序列,確保核心主體(ID提示詞)在不同場景中保持視覺穩定性。

這種一致性通過動態影響圖像生成過程的自定義控制實現,具體通過調節提示詞權重注意力機制達成。

可視化

在這里插入圖片描述

章節目錄

  1. 滑動窗口故事生成器
  2. 圖像生成管線
  3. 生成行為控制器
  4. 語義向量重加權(SVR)
  5. 注意力機制增強(IPCA)
  6. 去噪神經網絡(UNet)

第一章:滑動窗口故事生成器

歡迎來到1Prompt1Story的精彩世界🐻???

在本章中,我們將探索一種稱為滑動窗口故事生成器的智能技術。

該工具通過AI生成動態故事畫面,確保核心角色或對象在場景變換中保持視覺一致性。

一致性挑戰

假設我們需要創建包含連續場景的圖像故事,例如"紅狐在雪地嬉戲→進食漿果→樹下休憩"。

若將全部描述一次性輸入AI圖像生成器,可能導致畫面混亂:紅狐形象模糊或背景元素混雜。

核心問題在于:

  • AI模型擅長處理簡潔明確的指令
  • 過長或復雜的提示詞會干擾模型對重點內容的理解
  • 需要分幀敘述策略,在保持主角一致性的同時實現場景平滑過渡

解決方案:滑動窗口機制

滑動窗口故事生成器猶如智能取景器,通過動態聚焦實現分步敘事:

  1. ID提示詞(核心主體):貫穿所有畫面的固定描述(如"紅狐")
  2. 幀提示列表(場景演變):分步場景描述集合(如[“雪地嬉戲”, “進食漿果”, “樹下休憩”])
  3. 滑動窗口機制:每次僅選取幀提示列表的子集生成單幀畫面,窗口沿列表滑動推進
  4. 循環模式:窗口到達列表末端時自動回繞起始位置,形成無縫循環敘事

該機制確保:

  • 核心主體(ID提示詞)在每幀畫面中保持清晰一致
  • 場景通過漸進式切換實現流暢演變

滑動窗口工作流程

假設幀提示列表為[A, B, C, D],窗口長度為2:

在這里插入圖片描述

窗口滑動過程始終保持部分前一畫面的提示詞,通過重疊提示實現平滑過渡

使用指南

通過main.py腳本啟動生成器,示例命令如下:

python main.py \--id_prompt "紅狐寫真" \--frame_prompt_list "佩戴圍巾于草地" "雪地嬉戲" "村莊邊緣臨溪" \--window_length 2 \--seed 42 \--save_padding "狐物語"

參數解析:

  • --id_prompt:核心主體描述(每幀畫面固定出現)
  • --frame_prompt_list:場景演變描述集合(空格分隔)
  • --window_length:單次組合的幀提示詞數量
  • --seed:隨機種子(確保結果可復現)
  • --save_padding:輸出文件前綴

執行后將生成序列圖像及合成故事長圖,紅狐形象保持穩定而場景漸進變化。

技術實現解析

核心函數movement_gen_story_slide_windows位于unet/utils.py,工作流程如下:
在這里插入圖片描述

關鍵技術點:

最大窗口長度計算(防止提示詞過長)

def get_max_window_length(unet_controller, id_prompt, frame_prompt_list):combined_prompt = id_promptmax_len = 0for prompt in frame_prompt_list:combined_prompt += ' ' + promptif len(combined_prompt.split()) >= 77:  # 標準token限制breakmax_len += 1return max_len

循環窗口生成

def circular_sliding_windows(lst, w):n = len(lst)return [ [lst[(i+j)%n] for j in range(w)] for i in range(n) ]

核心生成邏輯

def movement_gen_story_slide_windows(id_prompt, frame_list, pipe, window_len, seed, controller, save_dir):# 計算可用窗口長度max_win = get_max_window_length(controller, id_prompt, frame_list)window_len = min(window_len, max_win)# 生成提示窗口prompt_windows = circular_sliding_windows(frame_list, window_len)story_images = []for idx, window in enumerate(prompt_windows):# 配置提示詞權重controller.frame_prompt_express = window[0]controller.frame_prompt_suppress = window[1:]# 生成組合提示詞full_prompt = f"{id_prompt} {' '.join(window)}"# 調用生成管線image = pipe(full_prompt, generator=torch.Generator().manual_seed(seed)).images[0]story_images.append(image)# 合成輸出return combine_story(story_images)

code:https://github.com/lvy010/AI-exploration/tree/main/AI_image/1Prompt1Story

結語

本章揭示了滑動窗口故事生成器如何通過智能提示詞管理實現連貫敘事

在后續章節中,我們將深入解析圖像生成管線的技術細節,揭示AI如何將結構化提示轉化為視覺盛宴。


第二章:圖像生成管線

在第一章中,我們學習了滑動窗口故事生成器如何巧妙編排文本提示序列,實現連貫的動畫敘事。

但精心設計的文本提示如何轉化為可見圖像?這正是圖像生成管線的核心使命。

圖像工廠:從文本構思到視覺現實

想象一個高科技工廠的運作場景:滑動窗口機制交付生產訂單(如"紅狐雪地嬉戲"的文本提示),這些訂單需經過專業設備處理才能轉化為成品(圖像)。

圖像生成管線正是這個智能工廠的全自動化產線與中央控制系統,負責將文本構思轉化為最終視覺呈現。

管線核心組件

我們的圖像工廠包含四大核心設備:

  1. 文本編碼器(語言翻譯器)
    將人類可讀的提示(如"紅狐")轉化為AI可理解的數值化"思維向量"

  2. VAE(變分自編碼器)

    一種生成模型,通過壓縮圖像到潛在空間(低維表示)再重建,適合生成模糊但結構合理的圖像。

    • 圖像壓縮:將真實圖像編碼為抽象潛在表征
    • 圖像解壓:將潛在空間數據解碼為可視圖像
  3. UNet(去噪神經網絡)
    一種帶跳躍連接的對稱網絡,能保留圖像細節,常用于圖像分割或擴散模型中逐步去噪生成高清圖

    作為核心畫師,從隨機噪聲(類似電視雪花屏)起步,在文本引導下通過多步去噪逐步揭示隱藏圖像

  4. 調度器(藝術指導)
    精確控制UNet在各去噪步驟中的噪聲消除量,確保圖像生成過程平滑自然

在這里插入圖片描述

管線使用方法

通過StableDiffusionXLPipeline實例(來自Diffusers庫的定制版本)實現核心交互:

# 摘自main.py(簡化版)
from unet.pipeline_stable_diffusion_xl import StableDiffusionXLPipeline
import torch# 初始化管線(加載模型與分詞器)
pipe = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")  # 啟用GPU加速# 接收滑動窗口生成的提示詞
story_prompt = "紅狐雪地嬉戲寫真"# 配置可復現的隨機種子
story_generator = torch.Generator().manual_seed(42)# 執行圖像生成
# unet_controller參數用于高級控制(第三章詳解)
generated_images = pipe(prompt=story_prompt,generator=story_generator,unet_controller=None  # 基礎模式設為None
).images# 保存首張生成圖像
generated_images[0].save("fox_snow.jpg")

參數解析

  • generator:確保相同種子生成確定性結果
  • unet_controller:實現跨幀一致性的高級控制接口(第三章詳解)
  • .images:返回PIL圖像對象列表

管線工作原理

在這里插入圖片描述

1. 提示詞編碼(encode_prompt)
def encode_prompt(self, prompt: str, ..., unet_controller=None):# 分詞處理text_inputs = self.tokenizer(prompt, padding="max_length", truncation=True, return_tensors="pt")# 生成嵌入向量prompt_embeds = self.text_encoder(text_input_ids, output_hidden_states=True)# 提取UNet專用嵌入層input_prompt_embeds = prompt_embeds.hidden_states[-2] return input_prompt_embeds

該過程將文本轉化為AI可理解的數值化表征,為后續生成提供語義指引

2. 潛在空間初始化(prepare_latents)
def prepare_latents(self, ..., same=False):# 生成隨機噪聲矩陣latent_shape = (batch_size, num_channels, height//8, width//8)latents = torch.randn(latent_shape, generator=generator)# 批量生成時保持噪聲一致性if same: latents[1:] = latents[0]  return latents * self.scheduler.init_noise_sigma

創建初始噪聲空間時,same參數可實現跨幀噪聲一致性,為動畫連貫性奠定基礎

噪聲空間

是圖像生成過程中模型隨機添加的干擾信號,通過逐步調整這些噪聲最終生成清晰的圖像。類似于“從模糊的電視雪花屏逐漸修復成完整畫面”。

3. 去噪循環(call
for i, t in enumerate(self.timesteps):# UNet預測噪聲分布noise_pred = self.unet(latent_model_input,t,encoder_hidden_states=prompt_embeds,unet_controller=unet_controller  # 接受高級控制)# 調度器更新潛在空間latents = self.scheduler.step(noise_pred, t, latents)[0]

每次迭代逐步清除噪聲,unet_controller在此注入定制化生成邏輯

4. 圖像解碼(vae.decode)
image = self.vae.decode(latents, return_dict=False)[0]

將優化后的潛在空間數據解碼為768x768像素的RGB圖像

技術價值

1Prompt1Story是ICLR 2025聚焦論文項目,通過AI實現單提示詞驅動的連貫圖像敘事。

核心創新在于滑動窗口機制,將ID提示詞(如"紅狐")與幀提示列表(場景描述)動態組合,在保持主體一致性的同時實現場景平滑過渡

技術實現結合PyTorch框架與Diffusers庫,通過文本編碼器、VAE、UNet等組件構建圖像生成管線,支持Gradio在線演示。

項目提供完整的代碼實現與基準測試方案,解決了傳統文本到圖像生成中主體漂移的難題。

該管線架構實現三大創新:

  1. 分層控制:通過UNet控制器實現提示詞權重動態調整
  2. 潛在空間復用:批量生成時共享噪聲基底確保跨幀一致性
  3. 自適應調度:根據硬件資源動態調整去噪步長

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93583.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【GitHub開源AI精選】Sitcom-Crafter:北航聯合港中文等高校打造的劇情驅動3D動作生成系統

系列篇章💥 No.文章1【GitHub開源AI精選】LLM 驅動的影視解說工具:Narrato AI 一站式高效創作實踐2【GitHub開源AI精選】德國比勒費爾德大學TryOffDiff——高保真服裝重建的虛擬試穿技術新突破3【GitHub開源AI精選】哈工大(深圳)…

智和信通全棧式運維平臺落地深圳某學院,賦能運維管理提質提效

深圳某學院校園內信息化設備眾多,網絡環境復雜,使得網絡管理工作面臨著諸多難題與挑戰。為保障校園網絡能夠穩定、高效地運行,學院亟須構建一套集高效、智能、協同于一體的網絡運維平臺。 對運維平臺的期望包括: 實現校園內教學…

開疆智能Ethernet轉ModbusTCP網關連接測聯無紙記錄儀配置案例

本案例是通過Ethernet轉ModbusTCP網關將記錄儀數據傳送到歐姆龍PLC,具體操作過程如下。歐姆龍PLC配置首先打開主站組態軟件“Sysmac Studio”并新建項目。設置PLC的IP地址點擊工具-Ethernet/IP連接設置,在彈出的選個框內選擇顯示EDS庫添加網關eds文件開始…

Eureka故障處理大匯總

#作者:Unstopabler 文章目錄1. Eureka 服務啟動故障處理1.1 端口占用導致啟動失敗1.2 配置文件錯誤導致啟動失敗1.3 依賴沖突與類加載錯誤2. 服務注冊與發現異常2.1 服務無法注冊到 Eureka2.2 Eureka 控制臺看不到注冊的服務2.3 服務注冊后立即被剔除3. Eureka 集群…

基于Transformer的機器翻譯——模型篇

1.模型結構 本案例整體采用transformer論文中提出的結構,部分設置做了調整。transformer網絡結構介紹可參考博客——入門級別的Transformer模型介紹,這里著重介紹其代碼實現。 模型的整體結構,包括詞嵌入層,位置編碼,…

上位機TCP/IP通信協議層常見問題匯總

以太網 TCP 通信是上位機開發中常用的通信方式,西門子 S7 通信、三菱 MC 通信以及 MQTT、OPC UA、Modbus TCP 等都是其典型應用。為幫助大家更好地理解 TCP 通信,我整理了一套常見問題匯總。一、OSI參考模型與TCP/IP參考模型基于TCP/IP的參考模型將協議分…

搭建ktg-mes

項目地址 該安裝事項,基于當前最新版 2025年8月16日 之前的版本 下載地址: 后端JAVA 前端VUE 后端安裝: 還原數據表 路徑:根目錄/sql/ry_20210908.sql、根目錄/sql/quartz.sql、根目錄/doc/實施文檔/ktgmes-202505180846.sql.g…

uniapp純前端繪制商品分享圖

效果如圖// useMpCustomShareImage.ts interface MpCustomShareImageData {canvasId: stringprice: stringlinePrice: stringgoodsSpecFirmName: stringimage: string }const CANVAS_WIDTH 500 const CANVAS_HEIGHT 400 const BG_IMAGE https://public-scjuchuang.oss-cn-ch…

醋酸鑭:看不見的科技助力

雖然我們每天都在使用各種科技產品,但有些關鍵的化學物質卻鮮為人知。醋酸鑭,就是這樣一種默默為科技進步貢獻力量的“幕后英雄”。它不僅是稀土元素鑭的一種化合物,還在許多高科技領域中發揮著重要作用。今天,讓我們一起來了解這…

蒼穹外賣日記

day 1 windows系統啟動nginx報錯: The system cannot find the path specified 在啟動nginx的時候報錯: /temp/client_body_temp" failed (3: The system cannot find the path specified) 解決辦法: 1.檢查nginx的目錄是否存在中文 ,路…

樓宇自控系統賦能建筑全維度管理,實現環境、安全與能耗全面監管

隨著城市化進程加速和綠色建筑理念普及,現代樓宇管理正經歷從粗放式運營向精細化管控的轉型。樓宇自控系統(BAS)作為建筑智能化的核心載體,通過物聯網、大數據和人工智能技術的深度融合,正在重構建筑管理的全維度框架&…

【HarmonyOS】Window11家庭中文版開啟鴻蒙模擬器失敗提示未開啟Hyoer-V

【HarmonyOS】Window11家庭中文版開啟鴻蒙模擬器失敗提示未開啟Hyoer-V一、問題背景 當鴻蒙模擬器啟動時,提示如下圖所示:因為Hyper-V 僅在 Windows 11 專業版、企業版和教育版中作為預裝功能提供,而家庭版(包括中文版&#xff09…

vscode遠程服務器出現一直卡在正在打開遠程和連接超時解決辦法

項目場景: 使用ssh命令或者各種軟件進行遠程服務器之后,結果等到幾分鐘之后自動斷開連接問題解決。vscode遠程服務器一直卡在正在打開遠程狀態問題解決。問題描述 1.連接超時 2.vscode遠程一直卡在正在打開遠程...原因分析:需要修改設置超時斷…

Maven下載和配置-IDEA使用

目錄 一 MAVEN 二 三個倉庫 1. 本地倉庫(Local Repository) 2. 私有倉庫(Private Repository,公司內部倉庫) 3. 遠程倉庫(Remote Repository) 依賴查找流程(優先級&#xff09…

Dify實戰應用指南(上傳需求稿生成測試用例)

一、Dify平臺簡介 Dify是一款開源的大語言模型(LLM)應用開發平臺,融合了“Define(定義) Modify(修改)”的設計理念,通過低代碼/無代碼的可視化界面降低技術門檻。其核心價值在于幫助…

學習日志35 python

1 Python 列表切片一、切片完整語法列表切片的基本格式: 列表[start:end:step]start:起始索引(包含該位置元素,可省略)end:結束索引(不包含該位置元素,可省略)step&#…

Linux -- 文件【下】

目錄 一、EXT2文件系統 1、宏觀認識 2、塊組內部構成 2.1 Data Block 2.2 i節點表(Inode Table) 2.3 塊位圖(Block Bitmap) 2.4 inode位圖(Inode Bitmap) 2.5 GDT(Group Descriptor Table) 2.6 超…

谷歌手機刷機和面具ROOT保姆級別教程

#比較常用的谷歌輸入root面具教程,逆向工程師必修課程# 所需工具與材料清單 真機設備 推薦使用 Google Pixel 4 或其他兼容設備,確保硬件支持刷機操作。 ADB 環境配置 通過安裝 Android Studio 自動配置 ADB 和 Fastboot 工具。安裝完成后,需在系統環境…

平衡二叉搜索樹 - 紅黑樹詳解

文章目錄一、紅黑樹概念引申問題二、紅黑樹操作一、紅黑樹概念 紅黑樹是一棵二叉搜索樹,它在每個節點上增加了一個存儲位用來表示節點顏色(紅色或者黑色),紅黑樹通過約束顏色,可以保證最長路徑不超過最短路徑的兩倍,因而近似平衡…

從0開始跟小甲魚C語言視頻使用linux一步步學習C語言(持續更新)8.14

第十六天 第五十二,五十三,五十四,五十五和五十六集 第五十二集 文件包含 一個include命令只能指定一個被包含文件 文件允許嵌套,就是一個被包含的文件可以包含另一個文件。 文件名可以用尖括號或者雙引號括起來 但是兩種的查找方…