AI · AI 圖片
圖生圖 AI 是怎麼運作的?
簡答
圖生圖 AI 從你的圖片而不是純雜訊出發。它先加入指定份量的雜訊,再依提示詞去除雜訊,因此重繪幅度低就保留原圖,高就大幅改變。遮罩可把改動限制在某個區域(局部重繪,inpainting)或新增的邊框(擴圖,outpainting);深度圖、姿勢或邊緣等控制圖,則能在風格改變時鎖定版面。
開啟深度圖產生器核心概念:先加一部分雜訊,再去雜訊
擴散模型通常是從純隨機雜訊開始,一步步去除雜訊來構成圖片。圖生圖則跳過這段旅程的前半部:它拿你的圖片,加雜訊直到畫面被部分遮蔽,再用你的提示詞執行剩下的去雜訊步驟。這個方法出自 SDEdit 論文,該論文證明擴散模型不需任何額外訓練,就能把粗略的草圖或編輯過的照片變成寫實的圖片。
雜訊量是最重要的單一設定,依工具不同,叫做強度(strength)、去噪強度(denoise)或圖片權重(image weight)。雜訊少時,只有細微紋理會改變;雜訊多時,形狀幾乎消失,模型會發明一張新圖,只是鬆散地參考舊圖的色彩與版面。
在許多實作中,強度也決定實際執行幾個步驟。如果工具設定 50 步、強度為 0.8,圖片就會被加上約 40 步份量的雜訊,再用這 40 步去雜訊。
怎麼選強度值
確切數值依模型而異,但下列範圍可作為使用 0 到 1 刻度的工具的起點。採用圖片權重刻度的工具常常相反:權重越高,保留的原圖越多。
| 強度 | 原圖保留什麼 | 適合用於 |
|---|---|---|
| 0.1 到 0.3 | 幾乎全部:形狀、臉、色彩 | 輕微修整、加顆粒、小幅度的紋理變化 |
| 0.3 到 0.5 | 構圖與大部分細節 | 改變光線或調色、輕微的風格轉換 |
| 0.5 到 0.7 | 版面與主要形狀;細節會重畫 | 照片轉插畫、草圖變成完稿 |
| 0.7 到 0.9 | 粗略的色塊與位置 | 只把圖片當作鬆散的版面提示 |
| 1.0 | 幾乎什麼都不留 | 等同於文字生成圖片 |
強度請以約 0.1 的小幅度逐步提高,並固定種子,這樣才看得出單獨由強度造成的效果。如果人物的臉在風格還沒改夠之前就變太多,單靠強度就是用錯工具:請加上控制圖,或只對背景做局部重繪。
參考圖與風格轉換
你給模型的圖片不一定都是起點。許多工具也接受參考圖,它引導結果但不會被加雜訊,而是被轉成特徵,與文字提示詞並行運作。IP-Adapter 是知名的開源方法:它為凍結的文字生成圖片模型加上一個小模組,其中有專門處理圖片特徵的注意力層,讓你能同時給圖片提示與文字提示。託管工具常把這個功能稱為圖片提示(image prompt)、風格參考(style reference)或角色參考(character reference)。
幫圖片換風格有兩種常見方式:
- 圖生圖加風格提示詞。你的照片是起始圖片,提示詞指明新風格,例如
watercolor illustration, loose brush strokes, white paper。簡單,但強度較高時,臉和小細節會漂移。 - 結構來自一張圖,風格來自另一張。控制圖(深度或邊緣)保留照片的版面,風格參考或提示詞則決定外觀。這樣即使強度很高,構圖也能保持穩定。
Start image: photo of a street market at dusk
Strength: 0.55
Prompt: gouache painting of a street market at dusk, flat shapes,
warm lantern light, limited palette of orange, teal and cream
Negative: photo, text, watermark請描述你希望圖片呈現的樣子,而不是下達指令。Gouache painting of a street market 比 make this a painting 有效,因為提示詞是拿去和圖片說明文字比對,而不是當成命令執行。有些以編輯配對資料訓練的新模型確實看得懂指令;請確認你的工具期待什麼。
局部重繪與擴圖
局部重繪(inpainting)只改動遮罩涵蓋的區域。你在要替換的區域畫上遮罩,通常白色代表改、黑色代表保留,模型會填入同時符合提示詞與周圍像素的內容。RePaint 證明,即使是普通的擴散模型,也能在每個去雜訊步驟把已知像素放回去來做局部重繪;用遮罩專門訓練的重繪模型,融合通常更乾淨。
- 遮罩比物體略大一點,讓模型有空間融合邊緣。
- 把遮罩邊緣羽化或模糊,避免出現明顯的接縫。
- 提示詞要寫被遮蓋的區域和它的上下文,例如
empty wooden bench in a park,而不只是remove person。 - 替換用中到高的強度,修補用低強度。
- 如果要改的區域在大圖中很小,請使用裁切放大的選項(有時叫做 only masked 或 mask crop),讓模型以更高解析度處理。
擴圖(outpainting)則把圖片延伸到邊界之外。畫布被擴大,新增的空白區域被遮罩,模型填入內容讓場景延續。它適合把方形照片變成 16:9 的橫幅。每次延伸圖片的四分之一到一半;一次跳太大,容易重複物件或失去透視。
ControlNet 類型的條件控制:深度、姿勢與邊緣
ControlNet 會複製凍結圖片模型的一部分並加上可訓練的副本,讀取額外的控制圖。控制圖固定結構,提示詞則決定這個結構由什麼構成。原始論文展示了以邊緣、深度、分割圖和人體姿勢來控制,如今許多模型家族都有同樣的做法。
| 控制類型 | 輸入 | 鎖定什麼 | 典型用途 |
|---|---|---|---|
| 邊緣(Canny、線稿) | 黑白輪廓圖 | 輪廓與細部形狀 | 保持產品或建築不變,同時改變材質與光線 |
| 深度 | 灰階深度圖,近亮遠暗 | 3D 版面與前後關係 | 替房間或風景換風格,同時保留其空間 |
| 姿勢(OpenPose 類) | 由關節組成的火柴人骨架 | 身體位置、四肢、頭的方向 | 讓新角色擺出確切的姿勢 |
| 分割 | 彩色區塊,每個類別一種顏色 | 天空、道路、人物與物件的位置 | 依區域安排場景 |
| 塗鴉/草圖 | 粗略的手繪 | 鬆散的構圖 | 把隨手塗鴉變成完稿 |
多數工具會替每個控制設定一個權重(例如條件縮放,conditioning scale),有時還能指定在去雜訊步驟中的起點與終點。權重太高,會過於字面地複製控制圖,例如邊緣雜訊變成生硬的線條;太低則會被忽略。搭配清晰的控制圖,取中間值通常最好。你也可以組合兩種控制,例如深度加姿勢,各自給較低的權重。
要從照片產生深度圖,可以使用深度估計模型。例如 cv.cm 的深度圖工具,能在瀏覽器裡把照片轉成灰階深度圖,作為深度控制使用。
常見問題與解法
- 臉變成別人。降低強度、只對背景做局部重繪,或使用臉部或角色參考。
- 即使強度很高,色彩仍與原圖太接近。起始圖片仍帶著它的整體色調。先在編輯器裡調整顏色,或仰賴控制圖加更高的強度。
- 局部重繪後有明顯接縫。放大遮罩並羽化,提示詞中也要帶入一些上下文。
- 擴圖後物件重複或扭曲。以更小的幅度延伸,並在提示詞裡重複場景描述。
- 結果模糊。強度可能太低,加不了細節,或圖片太小。先放大,或使用 mask crop 選項。
- 權利問題。把不屬於你的照片換成別的風格,並不會讓它變成你的;原作的權利依然有效。
常見問題
圖生圖的去噪強度(denoising strength)是什麼?
它是模型重繪之前,加在你圖片上的雜訊量。強度低,原圖幾乎不變;強度高,模型會替換掉大部分內容。
圖生圖和局部重繪有什麼不同?
圖生圖可以改變整張圖片。局部重繪只改變你遮罩的區域,並盡量讓其餘部分維持原樣。
風格轉換一定要用 ControlNet 嗎?
單純的換風格,在低到中等強度下不需要。想要大幅度的風格轉變、又必須保留確切版面、姿勢或輪廓時,控制圖才有幫助。
為什麼擴圖會在邊緣重複物件?
模型會用最可能出現在邊界旁的東西來填補新空間,而那往往是更多相同的東西。請以更小的幅度延伸,並描述新區域應該出現什麼。
可以用真人照片當作圖生圖的輸入嗎?
技術上可以,但你必須有權使用該照片,而且在許多地方還需要當事人同意。許多服務也會封鎖可能誤導或傷害他人的真人編輯。