cv.cm

AI · AI 圖片

圖生圖 AI 是怎麼運作的?

閱讀約 8 分鐘

簡答

圖生圖 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 證明,即使是普通的擴散模型,也能在每個去雜訊步驟把已知像素放回去來做局部重繪;用遮罩專門訓練的重繪模型,融合通常更乾淨。

  1. 遮罩比物體略大一點,讓模型有空間融合邊緣。
  2. 把遮罩邊緣羽化或模糊,避免出現明顯的接縫。
  3. 提示詞要寫被遮蓋的區域和它的上下文,例如 empty wooden bench in a park,而不只是 remove person。
  4. 替換用中到高的強度,修補用低強度。
  5. 如果要改的區域在大圖中很小,請使用裁切放大的選項(有時叫做 only masked 或 mask crop),讓模型以更高解析度處理。

擴圖(outpainting)則把圖片延伸到邊界之外。畫布被擴大,新增的空白區域被遮罩,模型填入內容讓場景延續。它適合把方形照片變成 16:9 的橫幅。每次延伸圖片的四分之一到一半;一次跳太大,容易重複物件或失去透視。

ControlNet 類型的條件控制:深度、姿勢與邊緣

ControlNet 會複製凍結圖片模型的一部分並加上可訓練的副本,讀取額外的控制圖。控制圖固定結構,提示詞則決定這個結構由什麼構成。原始論文展示了以邊緣、深度、分割圖和人體姿勢來控制,如今許多模型家族都有同樣的做法。

控制類型輸入鎖定什麼典型用途
邊緣(Canny、線稿)黑白輪廓圖輪廓與細部形狀保持產品或建築不變,同時改變材質與光線
深度灰階深度圖,近亮遠暗3D 版面與前後關係替房間或風景換風格,同時保留其空間
姿勢(OpenPose 類)由關節組成的火柴人骨架身體位置、四肢、頭的方向讓新角色擺出確切的姿勢
分割彩色區塊,每個類別一種顏色天空、道路、人物與物件的位置依區域安排場景
塗鴉/草圖粗略的手繪鬆散的構圖把隨手塗鴉變成完稿

多數工具會替每個控制設定一個權重(例如條件縮放,conditioning scale),有時還能指定在去雜訊步驟中的起點與終點。權重太高,會過於字面地複製控制圖,例如邊緣雜訊變成生硬的線條;太低則會被忽略。搭配清晰的控制圖,取中間值通常最好。你也可以組合兩種控制,例如深度加姿勢,各自給較低的權重。

要從照片產生深度圖,可以使用深度估計模型。例如 cv.cm 的深度圖工具,能在瀏覽器裡把照片轉成灰階深度圖,作為深度控制使用。

常見問題與解法

  • 臉變成別人。降低強度、只對背景做局部重繪,或使用臉部或角色參考。
  • 即使強度很高,色彩仍與原圖太接近。起始圖片仍帶著它的整體色調。先在編輯器裡調整顏色,或仰賴控制圖加更高的強度。
  • 局部重繪後有明顯接縫。放大遮罩並羽化,提示詞中也要帶入一些上下文。
  • 擴圖後物件重複或扭曲。以更小的幅度延伸,並在提示詞裡重複場景描述。
  • 結果模糊。強度可能太低,加不了細節,或圖片太小。先放大,或使用 mask crop 選項。
  • 權利問題。把不屬於你的照片換成別的風格,並不會讓它變成你的;原作的權利依然有效。

常見問題

圖生圖的去噪強度(denoising strength)是什麼?

它是模型重繪之前,加在你圖片上的雜訊量。強度低,原圖幾乎不變;強度高,模型會替換掉大部分內容。

圖生圖和局部重繪有什麼不同?

圖生圖可以改變整張圖片。局部重繪只改變你遮罩的區域,並盡量讓其餘部分維持原樣。

風格轉換一定要用 ControlNet 嗎?

單純的換風格,在低到中等強度下不需要。想要大幅度的風格轉變、又必須保留確切版面、姿勢或輪廓時,控制圖才有幫助。

為什麼擴圖會在邊緣重複物件?

模型會用最可能出現在邊界旁的東西來填補新空間,而那往往是更多相同的東西。請以更小的幅度延伸,並描述新區域應該出現什麼。

可以用真人照片當作圖生圖的輸入嗎?

技術上可以,但你必須有權使用該照片,而且在許多地方還需要當事人同意。許多服務也會封鎖可能誤導或傷害他人的真人編輯。

全部 AI 教學