高煥堂



在上一期里,您已經領會Encoder 和Decoder 兩者的涵意和功能了。請您看看圖1 里,在兩者之間有個空間,通稱為:隱空間(latent space)。
本期以SD(Stable Diffusion) 模型為例,來欣賞其隱空間里的架構之美。由于Diffusion 隱空間里的主角是:UNet 模型。于是,先來細觀Diffusion 隱空間里UNet模型的訓練流程。
1 簡介UNet模型
在本專欄里,曾經詳細介紹過AE(autoencoder),相信您對AE 已經很熟悉了, 不再重復介紹AE模型。
UNet 是AE模型的延伸型式。由于典型AE 模型的特性是: 其前段的Encoder( 編碼器) 是特征提取的過程, 會過濾掉一些信息。這些被過濾掉的信息, 就沒有辦法傳遞到后段的Decoder( 解碼器) 了。
于是,UNet 就來延伸AE 模型,將原有的Encoder與Decoder 之間增加了一些連結,例如Encoder 的每一層輸出都與對映層級的譯碼器連接。因此使得編碼器每一層的信息,額外輸入到譯碼器的對映層,讓Decoder在重建的過程中,比較不會遺失掉重要的信息了。而Unet 模型的架構如其名呈現一個U 字形( 圖2)。
如此,UNet 使用對映層級的連接來保留小且精細尺度的特征。
2 Diffusion隱空間里的UNet角色
在AIGC 潮流中,SD(Stable Diffusion) 產品的推出是AIGC 圖像生成發展歷程中的一個里程碑,提供了高性能模型,能快速生成創意十足的圖像( 圖3)。
SD 提供兩項主要功能:輸入文本(Text) 提示來生成圖像( 即text2img);輸入圖像,然后根據文本描述來修改圖像( 即輸入text + img)。在SD 隱空間里,UNet 扮演關鍵性角色( 圖4)。
在SD 隱空間里, 使用了1 個UNet 模型, 并搭配1 個時間調度(scheduling) 器,來擔任圖像生成的核心任務。擴散(diffusion) 一詞描述了SD 隱空間里進行的圖像生成情形,整個過程都是在隱空間里逐步推進(stepby step) 的,每一步都會增加更多的噪音(noise)。……