景AI繪畫角色漂移抑制實(shí)戰(zhàn):從LoRA到特征緩存的全鏈路調(diào)優(yōu))
最近我集中精力做了一件事把 StarVerse-AI 的無限畫布功能拉到極限場(chǎng)景里跑測(cè)試“角色漂移抑制”到底壓不壓得住。簡(jiǎn)單說就是我在一張很大的畫布里搭了一個(gè)開放場(chǎng)景讓同一個(gè)角色在不同位置重復(fù)出現(xiàn)看它會(huì)不會(huì)長(zhǎng)得“越來越不像自己”。這個(gè)問題在獨(dú)立畫一張圖的時(shí)候很難暴露但一旦畫布變大、角色反復(fù)登場(chǎng)漂移就像傳染病一樣擴(kuò)散。這篇文章我把整個(gè)測(cè)試過程、方案設(shè)計(jì)、參數(shù)調(diào)校和踩坑記錄都整理出來適合正在做 AI 概念場(chǎng)景、漫畫分鏡、游戲角色多視角設(shè)定的人參考。我不聊理論里那些花架子只講我在實(shí)操中驗(yàn)證過什么、廢掉了哪幾種方案、最后哪套組合能穩(wěn)定收斂。如果你正被“角色一多就崩”折磨這篇應(yīng)該能幫你少走幾條彎路。1. 為什么大場(chǎng)景里的角色會(huì)漂移問題拆解與測(cè)試目標(biāo)1.1 “漂移”到底漂在哪四類典型表現(xiàn)角色漂移不是一種單一現(xiàn)象。我在測(cè)試中把肉眼能感知到的“不對(duì)勁”拆成了四類因?yàn)槊恳活惖某梢蚝鸵种剖侄瓮耆煌煸谝黄鹛幚碜⒍〞?huì)來回翻車。第一類是外觀漂移。這是最普遍的同一個(gè)角色臉型變了、發(fā)型卷曲方向變了、衣服紋理細(xì)節(jié)改了。在單張圖里你可能只覺得“風(fēng)格不太統(tǒng)一”但放到大場(chǎng)景里就會(huì)出現(xiàn)“明明叫同一個(gè)名字看起來卻是兩個(gè)演員”的詭異感。外觀漂移主要來自生成模型的隨機(jī)采樣和上下文信息衰減。第二類是位置與尺度漂移。角色在場(chǎng)景里的站位、身高比例、與環(huán)境的透視關(guān)系不穩(wěn)定。比如第一次出現(xiàn)在廣場(chǎng)中央時(shí)身高占畫布高度的四分之一跑到小巷里突然變成了侏儒或者站在同一個(gè)地標(biāo)前位置偏了幾十像素。無限畫布的分塊生成機(jī)制會(huì)放大這種誤差因?yàn)槊恳粔K環(huán)境的局部坐標(biāo)系和全局坐標(biāo)系之間缺少?gòu)?qiáng)綁定。第三類是姿態(tài)漂移。肢體動(dòng)作、朝向、重心不穩(wěn)定。同一個(gè)角色在重復(fù)出現(xiàn)時(shí)右手持劍還是左手持劍、面朝鏡頭還是背朝鏡頭經(jīng)常會(huì)變。這類漂移多半來自文本提示詞對(duì)姿態(tài)的約束力不足注意力機(jī)制被場(chǎng)景中的復(fù)雜元素稀釋了。第四類是光影漂移。角色身上接受的光源方向、色溫、陰影強(qiáng)度和環(huán)境不協(xié)調(diào)。大場(chǎng)景通常由多個(gè)分塊拼合而成不同分塊生成時(shí)的光照預(yù)設(shè)不一致就會(huì)讓角色像是被不同燈光師分別打光。這四類漂移不是獨(dú)立發(fā)生的它們經(jīng)常疊在一起。但測(cè)試時(shí)如果不拆開量化就沒有辦法判斷一個(gè)抑制方案到底解決了什么問題。漂移類型典型表現(xiàn)主要成因外觀漂移五官、發(fā)型、服裝特征不一致隨機(jī)采樣變化ID特征未被穩(wěn)定傳遞位置尺度漂移站位漂移比例失衡局部坐標(biāo)系與全局坐標(biāo)系脫節(jié)姿態(tài)漂移動(dòng)作、朝向、重心變動(dòng)文本對(duì)姿態(tài)約束力弱注意力被稀釋光影漂移光源、色溫、陰影不統(tǒng)一分塊生成時(shí)環(huán)境條件各自獨(dú)立1.2 大場(chǎng)景如何放大漂移源無限畫布和固定尺寸畫布的本質(zhì)差異在于它通過分塊擴(kuò)展來維持“無限”的體驗(yàn)。生成新區(qū)域時(shí)模型看到的不是整張畫布只是以當(dāng)前視口為中心的一塊局部上下文。這種機(jī)制讓畫布在尺寸上無限同時(shí)也讓角色特征被限制在了一個(gè)局部傳播半徑內(nèi)。我用一個(gè)粗糙的類比解釋一群人站成一排第一個(gè)人看著角色A的全身照描述給第二個(gè)人聽第二個(gè)人再傳給第三個(gè)人傳到最后一個(gè)人那里他描述出來的角色可能只剩下“一個(gè)穿外套的人”。大場(chǎng)景生成也是這樣特征每跨過一個(gè)分塊就會(huì)衰減一點(diǎn)傳到超過幾個(gè)分塊后角色I(xiàn)D信息就基本丟失了。這時(shí)候新生成的區(qū)域就會(huì)用文本提示詞里的模糊描述重新“腦補(bǔ)”一個(gè)角色漂移就此產(chǎn)生。除了上下文衰減大場(chǎng)景還會(huì)放大隨機(jī)性帶來的影響。Stable Diffusion 系模型的生成過程本質(zhì)上是帶噪聲的采樣即使用同一個(gè)提示詞重復(fù)生成結(jié)果也會(huì)存在細(xì)節(jié)波動(dòng)。單圖創(chuàng)作時(shí)這種波動(dòng)可以當(dāng)作“風(fēng)格變化”接受但在需要角色重復(fù)出現(xiàn)的場(chǎng)景里波動(dòng)就是不能被容忍的漂移。場(chǎng)景密度也會(huì)添亂。一張畫布上角色越多、交互越復(fù)雜注意力機(jī)制就越難把“角色A的特征”穩(wěn)定路由到正確位置角色之間的特征會(huì)互相污染。這一點(diǎn)到了多人場(chǎng)景尤為致命我后面會(huì)專門講踩坑過程。1.3 本次測(cè)試的核心目標(biāo)基于上面這些現(xiàn)象我給自己定了三個(gè)明確目標(biāo)。第一建立一套可復(fù)現(xiàn)的漂移測(cè)試方法。不能光靠肉眼判斷“像不像”需要把漂移轉(zhuǎn)成數(shù)字指標(biāo)用相似度、距離偏差、色差這些可量化的值來評(píng)估方案好壞。第二驗(yàn)證一套組合抑制方案的效果。我的基本判斷是不存在一個(gè)萬(wàn)能開關(guān)能一鍵壓住所有漂移關(guān)鍵是找出各類漂移分別用什么工具壓制再按正確順序疊加。目標(biāo)是把外觀漂移的相似度穩(wěn)定壓到 0.7 以上姿態(tài)漂移的關(guān)鍵點(diǎn)抖動(dòng)幅度降低 40% 以上接縫色差控制在肉眼不可見的范圍。第三輸出一組可以復(fù)用的參數(shù)檔位。測(cè)試不能只停留在“這次效果好”還要沉淀出什么場(chǎng)景用多大注入強(qiáng)度、mask 羽化多少像素、上下文窗口開多大這些細(xì)節(jié)讓下一次跑類似項(xiàng)目時(shí)可以直接抄作業(yè)。2. 測(cè)試環(huán)境搭建場(chǎng)景設(shè)計(jì)、指標(biāo)定義與工具選型2.1 場(chǎng)景設(shè)計(jì)一個(gè)典型的“大而全”測(cè)試場(chǎng)測(cè)試場(chǎng)景我特意設(shè)計(jì)成一張約 6000×4000 像素的示意圖包含五個(gè)區(qū)域中央廣場(chǎng)、環(huán)形街巷、高臺(tái)區(qū)、水池區(qū)和一片開闊荒地。主角色A在八個(gè)位置上出現(xiàn)兩個(gè)配角色B、C各出現(xiàn)四次一共十六個(gè)角色點(diǎn)位。這樣設(shè)計(jì)的邏輯很簡(jiǎn)單點(diǎn)位之間既有近距離相鄰的也有跨度很大的能同時(shí)考察短距離和長(zhǎng)距離下的漂移情況。主角色A的定位是一個(gè)衣著特征明顯的冒險(xiǎn)者紅披風(fēng)、銀白短發(fā)、右肩甲有金色紋章。選這種特征的目的是讓漂移發(fā)生時(shí)更容易被肉眼和算法同時(shí)捕捉。如果選一個(gè)黑發(fā)黑衣服的角色外觀漂移的判定難度會(huì)大幅上升不利于測(cè)試判斷。場(chǎng)景中還加入了幾個(gè)固定地標(biāo)比如廣場(chǎng)中心的噴泉、高臺(tái)上的旗幟、水池邊的石橋。這些地標(biāo)的作用是給位置漂移的檢測(cè)提供一個(gè)參考系。角色出現(xiàn)在噴泉左側(cè)還是右側(cè)、離石橋有幾個(gè)身位這些都是可以測(cè)量的位置信息。光照方面整張畫布統(tǒng)一為日景沒有劇烈的時(shí)間變化。這是我刻意做的簡(jiǎn)化避免黃昏和夜晚的光照差異與角色光影漂移混在一起干擾判斷。2.2 把“漂移”變成可測(cè)量的數(shù)字人眼判斷漂移不可靠必須用數(shù)字說話。我使用了四個(gè)指標(biāo)。第一個(gè)是 ID 向量余弦相似度。先用角色A的參考圖提取一個(gè)身份特征向量再對(duì)畫布上每一個(gè)角色A的出現(xiàn)位置扣出區(qū)域、提取特征向量計(jì)算二者之間的余弦相似度。相似度越接近 1說明外觀越一致低于 0.6 基本就可以判定為漂移。實(shí)際操作中我還會(huì)在角色周圍多取幾個(gè)窗口尺寸防止裁剪邊界影響特征提取。第二個(gè)是關(guān)鍵點(diǎn)抖動(dòng)標(biāo)準(zhǔn)差。用姿態(tài)估計(jì)算法對(duì)每個(gè)角色點(diǎn)位做骨架關(guān)鍵點(diǎn)提取然后計(jì)算同一個(gè)角色在不同點(diǎn)位的關(guān)鍵點(diǎn)坐標(biāo)標(biāo)準(zhǔn)差。標(biāo)準(zhǔn)差值越大說明姿態(tài)越不穩(wěn)定。這個(gè)指標(biāo)主要針對(duì)姿態(tài)漂移。第三個(gè)是服裝區(qū)域 SSIM。我會(huì)提前給角色的衣服區(qū)域畫一個(gè)大致的 mask在參考圖和生成圖上分別截取該區(qū)域計(jì)算結(jié)構(gòu)相似度。SSIM 對(duì)亮度變化不敏感正好能獨(dú)立于光影因素單獨(dú)考察服裝紋理的一致性。第四個(gè)是接縫色差。相鄰分塊的邊緣像素上用 RGB 歐氏距離計(jì)算色差均值。這個(gè)指標(biāo)用來量化光影漂移和整體色調(diào)分裂。色差低于 5 基本肉眼不可見高于 15 就會(huì)看到明顯的接縫。每次生成后我都會(huì)在固定的文件路徑下保存一張標(biāo)注了角色編號(hào)的檢測(cè)圖方便后續(xù)回溯。測(cè)試數(shù)據(jù)只有可復(fù)現(xiàn)才有真正的參考價(jià)值。2.3 抑制工具與參數(shù)選型工具鏈上StarVerse-AI 的無限畫布本身提供基礎(chǔ)的擴(kuò)展生成能力但角色漂移抑制還需要組合外圍技術(shù)我把它整理成四層。第一層是角色I(xiàn)D綁定工具。我用的是角色 LoRA 加 IP-Adapter 參考圖。LoRA 負(fù)責(zé)把角色的固定畫風(fēng)與辨識(shí)特征注入模型IP-Adapter 負(fù)責(zé)在生成過程中接收一張參考圖讓模型把參考圖的 ID 特征當(dāng)作條件融合進(jìn)注意層。這兩者的組合基本能鎖住外觀漂移。第二層是姿態(tài)約束工具。ControlNet 的姿態(tài)骨骼圖可以給角色站位和動(dòng)作提供硬約束。在大場(chǎng)景里我先用一套骨骼模板指定角色出現(xiàn)時(shí)的姿態(tài)再把骨骼圖作為 ControlNet 輸入讓生成結(jié)果不會(huì)在動(dòng)作上隨意發(fā)揮。第三層是區(qū)域鎖定工具。無限畫布生成新區(qū)域時(shí)已有區(qū)域里的角色很容易被二次生成覆蓋掉。我會(huì)給每個(gè)已定稿角色生成一塊保護(hù) mask在擴(kuò)畫布時(shí)把 mask 內(nèi)的區(qū)域設(shè)為重繪禁用區(qū)防止已生成角色被污染。mask 邊緣加羽化避免出現(xiàn)生硬邊界。第四層是采樣穩(wěn)定性控制。無限畫布沒有天然的全局 seed但可以在分塊擴(kuò)展時(shí)給每一個(gè)分塊手動(dòng)指定局部 seed并把 seed 記錄在元數(shù)據(jù)里。這樣做的好處是同一次測(cè)試?yán)锏姆謮K可以局部復(fù)現(xiàn)出了問題能定位到具體塊。這套選型的核心思路是“一個(gè)工具管一種漂移”LoRA 加 IP-Adapter 管外觀ControlNet 管姿態(tài)mask 管區(qū)域污染局部 seed 管復(fù)現(xiàn)。把各自職責(zé)劃清楚后面調(diào)參才有方向。漂移類型對(duì)應(yīng)抑制方案方案作用機(jī)制外觀漂移角色 LoRA IP-Adapter注入身份特征條件約束生成外觀姿態(tài)漂移ControlNet 骨骼約束以骨骼圖作為硬條件限制姿態(tài)位置尺度漂移地標(biāo)參考系 局部seed錨定空間關(guān)系提供局部確定性區(qū)域污染角色保護(hù) mask禁掉已定稿角色的重繪光影漂移后處理全局統(tǒng)一染色合并分塊后對(duì)齊色調(diào)與光照3. 三輪實(shí)操漂移抑制方案從翻車到收斂3.1 第 1 輪裸提示詞生成漂移率嚇人第一輪測(cè)試我故意不使用任何抑制手段純粹用提示詞生成整張畫布為的是拿到一個(gè)漂移基線。主角色A的提示詞寫得很詳細(xì)包括發(fā)型、披風(fēng)、肩甲紋章這些特征但跑完之后的結(jié)果讓我倒吸一口涼氣。角色A在八個(gè)點(diǎn)位里只有兩個(gè)點(diǎn)位看起來還像是“同一個(gè)人”其余六個(gè)點(diǎn)位的外觀都出現(xiàn)了明顯變異。ID 向量余弦相似度平均只有 0.51最低的位置甚至掉到了 0.43。姿態(tài)方面也徹底失控明明是同樣的骨骼模板預(yù)設(shè)生成后有的點(diǎn)位是正面站立有的變成了側(cè)身拔劍關(guān)鍵點(diǎn)抖動(dòng)標(biāo)準(zhǔn)差高得離譜。位置漂移同樣明顯。按設(shè)計(jì)角色A第二次應(yīng)該出現(xiàn)在噴泉右側(cè)約 60 像素處實(shí)際生成出來卻跑到了噴泉左側(cè)位置偏差超過 150 像素。檢查后發(fā)現(xiàn)提示詞里的位置信息其實(shí)已經(jīng)寫清楚了但大場(chǎng)景里畫面元素太多注意力機(jī)制分配給位置信息的權(quán)重被嚴(yán)重稀釋模型實(shí)際上是在“盲猜”角色該在哪。這一輪用一個(gè)詞總結(jié)翻車。但它翻得有價(jià)值因?yàn)樗C明了一個(gè)核心觀點(diǎn)提示詞在大場(chǎng)景里的信息傳遞能力非常有限角色特征和空間位置都靠提示詞表達(dá)是不可靠的。3.2 第 2 輪參考圖綁定區(qū)域鎖定外觀漂移大幅收斂第二輪我上主力方案加上角色 LoRA、IP-Adapter 參考圖同時(shí)對(duì)場(chǎng)景中已定稿的角色區(qū)域生成保護(hù) mask禁止后續(xù)分塊重繪覆蓋。具體操作分三步走。第一步把角色A的參考圖丟進(jìn) IP-Adapter同時(shí)啟用角色 LoRA提示詞里的描述詞可以縮減因?yàn)?LoRA 已經(jīng)承擔(dān)了大部分特征表達(dá)責(zé)任。第二步先生成整張場(chǎng)景底圖把底圖中角色A出現(xiàn)過的位置用 mask 標(biāo)注出來設(shè)為保護(hù)區(qū)域。第三步擴(kuò)畫布生成新分塊時(shí)啟動(dòng) mask 保護(hù)防止新塊的生成干擾舊塊里已經(jīng)定稿的角色。這輪效果提升非常顯著。角色A的外觀相似度平均值從 0.51 拉到了 0.73最低點(diǎn)位也從 0.43 升到了 0.61。換句話說原來只有四分之一點(diǎn)位像同一個(gè)角色現(xiàn)在超過七成的點(diǎn)位保持了外觀一致。但這一輪暴露了一個(gè)新問題mask 保護(hù)雖然保住了舊角色卻也造成了“斷景”。擴(kuò)畫布時(shí)新生成的區(qū)域和舊區(qū)域之間會(huì)出現(xiàn)明顯的硬切邊像是兩張不同圖拼在一起。原因是我做 mask 時(shí)把邊緣處理得太硬生成模型在新的分塊里又沒有足夠的歷史上下文去銜接舊畫面。解決這個(gè)問題的思路不是放棄 mask而是給 mask 加上羽化過渡同時(shí)把重繪幅度從默認(rèn)值往上調(diào)一點(diǎn)讓新塊在邊緣處有機(jī)會(huì)做融合。這輪的教訓(xùn)是保護(hù)舊角色和保護(hù)畫面連續(xù)性必須同時(shí)考慮不能顧此失彼。3.3 第 3 輪接縫融合跨區(qū)域特征緩存遠(yuǎn)距離漂移穩(wěn)定第二輪解決的是“近距離角色一致”和“舊角色不被覆蓋”的問題但遠(yuǎn)距離漂移依然存在。角色A在中央廣場(chǎng)和荒地之間的距離跨越了好幾個(gè)分塊新增塊在生成時(shí)只能看到局部的上下文無法訪問之前塊里的角色特征。遠(yuǎn)距離點(diǎn)位上的外觀相似度又掉回了 0.6 以下。針對(duì)這個(gè)問題我在第三輪引入了跨區(qū)域特征緩存機(jī)制。思路是先單獨(dú)為角色A生成一張“身份基準(zhǔn)圖”也就是讓角色在干凈背景下做出標(biāo)準(zhǔn)姿態(tài)把這張圖的特征向量緩存下來。之后生成任何新分塊時(shí)把這份緩存特征注入到生成模型的注意力層相當(dāng)于給新分塊“遠(yuǎn)程投送”角色特征繞開上下文衰減。這個(gè)思路落地后遠(yuǎn)距離點(diǎn)位的外觀相似度直接越過了 0.75 的門檻平均穩(wěn)定在 0.76 左右。更關(guān)鍵的是姿態(tài)也穩(wěn)了。因?yàn)樯矸莼鶞?zhǔn)圖自帶標(biāo)準(zhǔn)姿態(tài)特征注入注意力層后模型的姿態(tài)輸出會(huì)不自覺地靠近標(biāo)準(zhǔn)姿態(tài)。另一個(gè)針對(duì)接縫斷裂的手段是全局染色。所有分塊生成完成后我會(huì)對(duì)整張畫布跑一次統(tǒng)一的光照校正選擇一張最“順眼”的分塊作為色調(diào)基準(zhǔn)把其他分塊的亮度、色溫向它對(duì)齊。這一步對(duì)光影漂移的抑制效果立竿見影接縫區(qū)平均色差從 12 降到了 4.5肉眼基本看不到接縫了。3.4 三輪結(jié)果的橫向?qū)Ρ热喿鱿聛頂?shù)據(jù)對(duì)比很直觀。輪次采用方案外觀相似度均值最低點(diǎn)位相似度接縫平均色差結(jié)論第1輪裸提示詞0.510.4315.2完全不可用第2輪LoRAIP-Adapter區(qū)域mask0.730.6111.8近距離穩(wěn)了遠(yuǎn)景和接縫仍差第3輪第二輪方案特征緩存全局染色0.760.694.5基本達(dá)到可用標(biāo)準(zhǔn)第三輪的數(shù)據(jù)說明一個(gè)事實(shí)角色漂移抑制是一個(gè)系統(tǒng)性問題單點(diǎn)方案只能解決單類漂移。外觀、姿態(tài)、位置、光影四類漂移要在不同階段分別壓制最后統(tǒng)合。真正讓效果收斂的不是某一個(gè)技術(shù)環(huán)節(jié)的突破而是整條鏈路的閉環(huán)。4. 大場(chǎng)景漂移抑制的細(xì)節(jié)參數(shù)與避坑清單4.1 三個(gè)需要反復(fù)調(diào)的參數(shù)ID注入強(qiáng)度、上下文窗口、mask羽化參數(shù)是這套方案里最容易被低估的部分。調(diào)好了一套參數(shù)效果能上一個(gè)臺(tái)階參數(shù)不對(duì)再好的方案也白搭。我挑三個(gè)最關(guān)鍵的展開說。ID 注入強(qiáng)度指的是 IP-Adapter 參考圖特征在注意力層中的權(quán)重。強(qiáng)度設(shè)得太高角色外觀會(huì)穩(wěn)定但姿態(tài)會(huì)僵化角色會(huì)反復(fù)出現(xiàn)同一個(gè)構(gòu)圖好像被參考圖“粘住”了強(qiáng)度設(shè)得太低外觀漂移又會(huì)回潮。我的經(jīng)驗(yàn)是先從 0.6 起步然后以 0.05 為步長(zhǎng)微調(diào)。如果外觀相似度達(dá)標(biāo)但構(gòu)圖單一就向下調(diào)兩檔如果相似度不夠就向上調(diào)兩檔。上下文窗口是生成新分塊時(shí)模型能參考的已有畫布范圍。窗口太小特征傳播距離短遠(yuǎn)距離角色穩(wěn)不住窗口太大計(jì)算開銷成倍增長(zhǎng)而且注入過多的背景信息反而會(huì)稀釋角色特征。我用的是 128 窗口即新分塊生成時(shí)能回看 128 像素范圍的舊畫面。如果把窗口開到 256外觀相似度能再提升一點(diǎn)但生成速度慢得讓人失去耐心性價(jià)比很低。mask 羽化是保護(hù)區(qū)域邊緣的過渡像素寬度。羽化太小會(huì)出現(xiàn)硬邊羽化太大則保護(hù)失效角色容易被新分塊的生成過程“滲色”污染。實(shí)際操作中我用的羽化值是 15 像素保護(hù)強(qiáng)度和畫面融合之間平衡得最好。調(diào)試順序我建議固定下來先調(diào) ID 注入強(qiáng)度鎖外觀再調(diào)上下文窗口解決遠(yuǎn)距離最后用 mask 羽化解決邊緣質(zhì)量。跳躍式調(diào)參會(huì)讓問題互相糾纏很難判斷是哪個(gè)參數(shù)影響的結(jié)果。4.2 我踩過的坑接下來是我最想分享的部分這些坑在文檔里永遠(yuǎn)找不到。第一個(gè)坑是多個(gè)角色互相污染。場(chǎng)景里同時(shí)有主角色A和配角色B、C時(shí)如果一股腦全部生成角色之間的特征會(huì)在注意力層里混合。A 的金色紋章會(huì)跑到 B 身上C 的披風(fēng)顏色會(huì)跑到 A 的肩甲上。我的解決方案非常土但有效改成逐角色分區(qū)生成。畫布上先只生成角色A的區(qū)塊再生成區(qū)域B的區(qū)塊最后合并。雖然流程變長(zhǎng)但每個(gè)角色的特征干凈很多。多人場(chǎng)景想靠一次生成搞定目前來看不現(xiàn)實(shí)。第二個(gè)坑是局部重繪把角色修壞。有段時(shí)間我覺得某個(gè)點(diǎn)位的角色臉部不夠像就單獨(dú)切出臉部區(qū)域做局部重繪。結(jié)果重繪后臉是像了但原本整齊的短發(fā)直接變成了長(zhǎng)發(fā)整張臉像是被摳圖貼在角色身上。原因是我畫的 mask 范圍太小只包住了臉沒有包住頭發(fā)和領(lǐng)口。模型在重繪時(shí)缺乏外部上下文只能靠隨機(jī)想象補(bǔ)齊。解決辦法是把 mask 向外擴(kuò) 20 到 30 像素把頭發(fā)、領(lǐng)口一起包進(jìn)去讓模型重繪時(shí)有足夠的上下文。第三個(gè)坑是固定 seed 被當(dāng)成萬(wàn)能藥。我最初以為給分塊固定 seed 就能解決所有漂移后來發(fā)現(xiàn) seed 只能保證同一個(gè)分塊在重復(fù)生成時(shí)結(jié)果相同并不能保證角色特征跨分塊一致??鐗K的相似度還是要靠特征緩存和注入機(jī)制來維持。seed 的角色是“可復(fù)現(xiàn)”不是“可一致”。這個(gè)認(rèn)知轉(zhuǎn)變很關(guān)鍵。第四個(gè)坑是全局染色把角色沖淡。全局染色確實(shí)能統(tǒng)一光照但如果直接把整張畫布都丟進(jìn)染色處理器角色身上的固有顏色也會(huì)被“統(tǒng)一”掉尤其是特色鮮明的披風(fēng)顏色和紋章會(huì)被染成和環(huán)境一致的灰調(diào)。解決方法是染色時(shí)給角色區(qū)域再加一層高優(yōu)先級(jí) mask讓角色的本色特征不受影響只調(diào)整角色以外場(chǎng)景的光影。4.3 問題排查速查表測(cè)試過程中我整理了一張排查速查表遇到問題可以直接對(duì)照。異常現(xiàn)象可能原因解決辦法同一角色近距離點(diǎn)位也崩ID注入強(qiáng)度過低提高IP-Adapter注入強(qiáng)度確認(rèn)參考圖特征清晰遠(yuǎn)距離點(diǎn)位外觀不一致上下文窗口過小特征未傳播啟用跨區(qū)域特征緩存增大上下文窗口角色動(dòng)作僵化、構(gòu)圖單一ID注入強(qiáng)度過高下調(diào)注入強(qiáng)度適當(dāng)提高原始提示詞姿態(tài)權(quán)重新塊與舊塊出現(xiàn)硬接縫mask邊緣過硬分塊色調(diào)不一致增加mask羽化新增分塊時(shí)參考舊塊邊緣像素角色周圍出現(xiàn)滲色光暈mask羽化過大減小羽化值收縮保護(hù)區(qū)域多角色相互串特征注意力層特征耦合按角色分區(qū)單獨(dú)生成最后合并局部重繪后角色臉被“換頭”mask未包含頭發(fā)領(lǐng)口等上下文擴(kuò)大mask范圍包住關(guān)鍵外圍特征全局染色后角色失去辨識(shí)度染色階段未保護(hù)角色區(qū)域染色時(shí)使用角色高優(yōu)先級(jí)mask保護(hù)排查時(shí)要記住一個(gè)原則先定位漂移類型再選擇對(duì)應(yīng)手段不要用一個(gè)方案試圖解決所有現(xiàn)象。我看到太多人因?yàn)椤斑h(yuǎn)距離漂移”去調(diào) mask 羽化調(diào)半天毫無效果實(shí)際上應(yīng)該去加特征緩存。5. 這套方案的適用范圍與后續(xù)想做的事5.1 能用在哪從概念場(chǎng)景到漫畫分鏡這套“分層抑制”的思路不只是為了 StarVerse-AI 的無限畫布稍微改造一下就能遷移到其他 AI 工作流里。開放世界游戲的概念設(shè)計(jì)是最直接的應(yīng)用場(chǎng)景。游戲場(chǎng)景美術(shù)經(jīng)常需要在同一張超大畫布上反復(fù)繪制同一個(gè) NPC、怪物角色在不同地形中的出現(xiàn)狀態(tài)。有了這套方案角色可以在不同地形中反復(fù)出現(xiàn)且保持辨識(shí)度后期不需要逐張修臉。長(zhǎng)篇漫畫或圖像小說的分鏡創(chuàng)作也很受益。漫畫里同一個(gè)角色會(huì)在多個(gè)格子里出場(chǎng)有些格子之間跨度很大。如果整個(gè)頁(yè)面在一個(gè)無限畫布里繪制角色跨格子的漂移會(huì)直接毀掉敘事連貫性。用特征緩存加上區(qū)域保護(hù)可以讓角色在“上一格”和“下一格”之間無縫銜接。另一個(gè)被低估的場(chǎng)景是虛擬拍攝預(yù)演。導(dǎo)演希望看到一個(gè)角色在同一個(gè)場(chǎng)景中不同位置行走的預(yù)演畫面之前只能用視頻生成或者反復(fù)手動(dòng)合成。現(xiàn)在用無限畫布配合這套方案可以直接生成一條角色多站位走位的“地圖”為正式拍攝提供空間參考。5.2 后續(xù)想做的改良方向這一輪測(cè)試收斂了效果但問題并沒有完全解決。遠(yuǎn)距離點(diǎn)位的外觀相似度平均 0.76對(duì)概念設(shè)計(jì)夠用對(duì)特寫級(jí)別的要求還是不夠。我接下來的計(jì)劃是把角色身份嵌入層級(jí)再往底層走一步嘗試訓(xùn)練一個(gè)統(tǒng)一的身份編碼器把角色的多個(gè)參考圖融合成一個(gè)更穩(wěn)定的 ID 表示替代現(xiàn)在的單圖特征緩存這應(yīng)該能解決參考圖角度單一帶來的特征偏差。另一個(gè)方向是給無限畫布增加“角色檔案圖層”的概念。每個(gè)角色在畫布中有一個(gè)獨(dú)立的邏輯圖層記錄它的掩碼、參考特征和出現(xiàn)點(diǎn)位。這樣在擴(kuò)展畫布時(shí)新生成的分塊可以自動(dòng)查詢這份檔案而不是靠人工維護(hù)特征緩存。這個(gè)概念如果做成產(chǎn)品功能會(huì)比現(xiàn)在這套手工操作順暢很多。還有一個(gè)想法是把漂移抑制的效果可視化。目前只能通過相似度數(shù)字和肉眼判斷如果有辦法把整張畫布的漂移情況生成一張“漂移熱力圖”綠色表示穩(wěn)定、紅色表示漂移嚴(yán)重就能快速定位質(zhì)量薄弱的區(qū)域而不是靠人眼一塊一塊地找。最后分享一個(gè)小經(jīng)驗(yàn)我在三輪測(cè)試?yán)镒钍芤娴囊粋€(gè)習(xí)慣是把每一個(gè)角色獨(dú)立的參考圖和最終生成圖單獨(dú)存檔。存檔時(shí)把參考圖、方案參數(shù)、相似度指標(biāo)都記錄在文件名里。后續(xù)所有對(duì)比分析都能直接調(diào)用不需要重新生成這在長(zhǎng)周期測(cè)試?yán)锸×舜罅繒r(shí)間。如果你也要跑類似的測(cè)試建議從一開始就按這個(gè)標(biāo)準(zhǔn)做得規(guī)整一些。