宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

十個人的合影,AI為什麼總是拍不好

2026年09月01日 首頁 » 熱門科技

你有沒有試過用AI幫你生成一張多人合影?

比如你想要一張自己和九個朋友的聚會照片,結果生成出來的圖裡,有兩張臉長得一模一樣,有個人的胳膊接錯了身體,還有個人明明給了照片卻根本沒出現在畫面里。

這不是個例。事實上,就連目前最強的商業模型之一Nano Banana Pro十個人的合影AI為什麼總是拍不好,官方給出的上限也只是七個人。而大部分學術界的開源方法,處理的是一到五個人的場景。這篇來自復旦大學、騰訊混元實驗室十個人的合影AI為什麼總是拍不好和香港大學團隊的論文,把目標直接定在了五到十個人,並且在一個專門構建的測試集上,做到了比GPT-Image 2十個人的合影AI為什麼總是拍不好、Nano Banana系列、Seedream系列十個人的合影AI為什麼總是拍不好都更好的身份還原效果。

這篇論文的題目叫《WithEveryone十個人的合影AI為什麼總是拍不好》,翻譯過來大概是"與每個人在一起"。它想解決的問題很樸素:既然真實世界裡的合影經常是五個人、八個人甚至十個人一起入鏡,為什麼AI生成多人合影這件事到現在還做不好?

人一多,AI就開始"臉盲"

先說說這件事到底難在哪。

論文裡提到一個業內公認的現象:隨著參考人臉數量增加,生成圖像里每個人的身份相似度會明顯下降。這不是猜測,而是多篇此前的研究反覆驗證過的結果。想想看,如果你讓一個模型同時記住並區分十張臉,它比只記住兩三張臉要吃力得多,這符合直覺。

但這篇論文更深一層的洞察在於:問題不只是"記不住",還有"配不對"和"擺不好"。

配不對指的是身份錯位,比如你給了甲乙丙丁四張臉,生成出來的圖裡甲的臉出現在了丙應該站的位置。擺不好指的是構圖和姿勢的問題,比如人物之間的手臂穿模、身體比例錯亂、有人被完全擠出畫面。

論文提出,這三個問題背後有一個共同的技術根源,那就是當訓練一個身份保持模型時,通常需要一個"身份損失函數",用來告訴模型"生成的這張臉和參考的這張臉像不像"。

身份損失(ID Loss十個人的合影AI為什麼總是拍不好):訓練時用來衡量生成圖像中人臉與參考人臉相似程度的一種監督信號,通常通過人臉識別模型提取特徵後計算相似度得到。

這套機制在只有一兩個人的時候運作得很好,因為很容易判斷"生成圖裡的這張臉"對應"參考圖裡的哪張臉"。但當畫面里有五到十張臉擠在一起,尤其是在訓練過程中,模型還在生成的中間狀態里,這些臉往往都長得差不多、糊成一團時,現有方法只能靠"人臉特徵匹配"這種方式,去猜哪張生成的臉對應哪個參考身份。

這就好比你讓一個人去五個新生兒病房裡,憑模糊監控畫面猜哪個嬰兒是誰家的。嬰兒長得都很像,監控畫質又不清楚,猜錯的概率非常高。如果這時候還硬要用這個猜錯的結果去"糾正"某個孩子的成長記錄,那糾正的方向本身就是錯的,反而會把記錄搞得更亂。論文原話是"每一個配對錯誤的臉都會把一個身份拉向另一個身份,讓本該銳化個體差異的監督信號自己把自己抵消掉了"。這正是現有身份損失函數在群體場景下失效的核心原因。

解法一:給每個人發一張"身份證",而不是塞進一堆照片裡

WithEveryone的第一個關鍵設計,是把每個參考身份變成一個可以被"點名"的token(詞元),而不是讓模型自己從一堆參考圖里去猜誰是誰。

具體做法是,對每一個被選中的參考人物,團隊提取一個512維的ArcFace十個人的合影AI為什麼總是拍不好人臉特徵向量,通過一個輕量的多層感知機(MLP)把它映射到模型的隱藏維度,然後作為一個專屬的"ID token十個人的合影AI為什麼總是拍不好"插入到模型的序列里。

ArcFace:一種廣泛使用的人臉識別模型,能夠把一張人臉圖片轉換成一串數字(特徵向量),兩張臉越像,對應的兩串數字就越接近。

這裡有一個很值得琢磨的設計理由。論文類比了ViT和VAE兩種不同層次的圖像特徵表示,認為參考圖像本身提供的是"低層次"的像素級資訊,而這個專門提取的ID token提供的是"高層次"的身份專屬資訊,兩者是互補的,不是誰替代誰。

但光把這張"身份證"塞進模型的輸入序列,並不代表模型在生成的時候真的會去看它。

論文指出一個很現實的問題:整個輸入序列有一萬到兩萬個token,一個身份就只對應其中一個token,這個token很容易被淹沒在噪聲里,注意力會變得很分散。

這就像你參加一個幾百人的大型招聘會,你的簡歷只是桌上厚厚一沓資料里的一張紙。如果不做點什麼,招聘官很可能壓根沒翻到你那頁就把整沓資料合上了。如果不專門設計一個機制讓模型"記得回頭看"這張身份證,那這張身份證放進去和不放進去,效果可能相差無幾,因為模型的注意力根本沒有機制被強制引導過去。

為了解決這個問題,團隊引入了一個叫做ID Representation Forcing十個人的合影AI為什麼總是拍不好(身份表徵強制)的機制。

具體來說,在生成目標圖像之前,模型要為每一個被選中的參考身份,先"預測"一次它應該長什麼樣,用一個專門的表徵token去計算,然後拿這個預測結果去和真實的ArcFace特徵向量做餘弦相似度比對,構成一個損失函數強迫模型對齊。

這有點像考試前的"抽查提問"。老師不會等到最後交卷才發現你根本沒記住知識點,而是在做題過程中隨堂點名讓你複述一遍這道題涉及的關鍵公式。如果答不上來,說明你沒有真正把這個知識點放進腦子裡,得當場糾正。這個"隨堂提問"環節逼著模型在正式畫圖之前,先確認自己有沒有真的把每個身份的資訊調取出來。

論文的消融實驗顯示,單獨加入ID token能帶來一些提升,尤其是在"生成人數是否正確"這個指標上從0.771提升到了0.827。再加上Representation Forcing之後,身份相似度又進一步提高,Sim(Ref)從0.351漲到0.364,Sim(Tgt)十個人的合影AI為什麼總是拍不好從0.313漲到0.328。團隊還專門去看了注意力圖,發現在被監督的身份預測位置上,模型確實會優先關注對應的那個ID token,對角線上的注意力權重明顯高於其他不相關身份,這說明這個機制確實在起作用,只是提升幅度不算特別驚人。

解法二:先"畫草圖"再"上色",把排版決策挪到理解階段

多人合影另一個大麻煩是構圖。

十個人站在哪裡、誰挨著誰、誰的手搭在誰肩上、每個人擺什麼姿勢,這些空間和肢體關係,人數一多就會變成組合爆炸的問題。論文裡說得挺直白:一個人站錯位置,會像多米諾骨牌一樣把周圍的構圖全帶崩,導致重疊、肢體錯亂、畫面擁擠。

WithEveryone的解決思路,是把這部分"排版決策"從生成圖像這個環節,提前挪到模型的"理解"和"推理"階段去做。

這個設計叫做Layout Chain of Thought,簡稱Layout CoT(布局思維鏈)。

Layout CoT:模型在真正生成圖像之前,先用文字加坐標的形式,一步步推理並寫出這張合影里應該有幾個人、每個人的臉和身體應該出現在畫面的哪個位置、擺出什麼姿勢、以及每個位置對應哪個參考身份,最後把這份"計劃書"渲染成一張草圖,作為條件圖像交給生成模組。

從論文展示的例子看,這個過程非常具體。模型會先用自然語言推理"這是一個輕鬆的自拍合影,重點表現靠近和探出頭的動態感",然後逐步給出每張臉的坐標框、每個身體的坐標框、骨骼關鍵點,還要寫清楚哪個參考身份綁定到哪個位置編號,甚至連"背景里有個沒有參考圖的路人"這種細節都會考慮進去,並且標註為不需要綁定身份。

這套流程最後會有一個專門的渲染步驟,把這份文字加坐標的計劃,變成一張實際的畫布圖像,畫上臉部框、身體框、骨架線,把預先粘貼好的參考頭像也擺上去,再交給生成模型作為視覺條件。

這就好比裝修房子之前先出一份施工圖紙。圖紙上標好了每面牆、每扇窗戶、每根管線的位置,施工隊照著圖紙幹活,而不是走一步看一步現場發揮。如果沒有圖紙,讓十個工人各自憑感覺去砌牆,那大概率會出現牆體對不齊、水管走位衝突這類問題。論文的消融實驗證實了這一點:加入模型自己預測的布局後,人數準確率(Count)從0.771提升到0.828,身份覆蓋率(Coverage)從0.741提升到0.813。

更有意思的是,如果直接給模型一份"標準答案"級別的布局(也就是從真實目標圖像里反推出來的完美布局),身份相似度還能進一步提升到0.412,幾乎每一項指標都在漲。這說明布局質量本身對最終的身份還原效果有實打實的貢獻,而模型自己預測的布局和這份"完美答案"之間還有差距,這個差距也就成了論文裡明確指出的、當前系統還沒解決好的短板。

解法三:用畫好的框,而不是用猜的臉,來做身份監督

如果說前兩個設計解決的是"記住誰、擺在哪",那麼這篇論文裡被認為貢獻最大的一個改動,解決的是"生成過程中怎麼盯住每個人的臉不放"。

這就是Layout-Grounded ID Loss,簡稱LG-ID Loss(布局錨定身份損失)。

前面提到過,現有的身份損失函數依賴"猜哪張生成的臉對應哪個參考身份",人數一多就容易猜錯。這篇論文沒有去改進這個"猜"的算法,而是乾脆繞開了猜測這一步。

因為在訓練數據里,每個參考身份原本就有一個明確標註好的、對應到目標圖像里的臉部坐標框。既然這份標註本來就存在,那為什麼還要靠猜?直接從這個已知位置去裁剪、去比對不就行了。

具體來說,在訓練過程中,模型對當前這一步的噪聲圖像做一次"一步預測",估算出一張接近完成的清晰圖像,然後按照標註好的坐標框,把預測圖像和目標圖像里對應位置的人臉裁剪下來,兩兩配對送進ArcFace編碼器算相似度。因為這個坐標框是提前標註好的,所以每一對裁剪出來的臉必然是同一個人,不存在猜錯的可能。

這就好比開學分班的時候,與其讓老師憑印象去猜哪個學生該坐哪個位置(認錯人的概率不低),不如直接按照提前排好的座位表來對號入座。座位表上寫清楚了三號位置是張三,那張三就該坐在三號位,不需要老師現場辨認。

這個設計帶來的效果非常顯著。在消融實驗裡,單獨加入這個損失函數,身份相似度Sim(Ref)從0.339直接跳到0.506,Sim(Tgt)從0.304跳到0.435,這是所有單項改動里提升幅度最大的一個。而且很有意思的是,這個損失函數不只是讓臉更像了,它還順帶把構圖也理順了:人數準確率從0.771漲到0.845,身份覆蓋率從0.741漲到0.947。

論文對此給出的解釋是,因為每個身份是在它自己標註好的框內被監督的,所以模型要想降低這個損失,唯一的辦法就是把正確的人放在正確的位置上,這個損失函數天然攜帶了空間資訊,不只是身份資訊。

不過這個設計也有一個隱藏前提。裁剪預測圖像里某個標註區域時,得假設生成的臉真的落在了那個區域附近,否則裁出來的就是背景或者別的東西,監督也就失效了。論文裡提到,這個前提能夠成立,是因為flow matching過程本身會較早地讓構圖收斂,也就是說布局這件事本身,是比身份精修更早達成一致的,這個觀察也呼應了前面Layout CoT部分提到的"規劃"和"執行"的分工。

flow matching(流匹配):一種訓練圖像生成模型的技術路線,通過學習如何把隨機噪聲逐步轉變為目標圖像的"速度場"來實現生成,是目前主流圖像擴散模型背後的數學框架之一。

值得一提的是,這個損失函數只在噪聲水平低於某個閾值時才生效,論文裡定的這個閾值是0.85。原因很直接:噪聲太大的時候,那個"一步預測"出來的圖像壓根看不出是張臉,這時候硬要去比對相似度,監督信號本身就是錯的,不如乾脆不算。

數據說話:五到十人場景下,它比誰都穩

團隊專門構建了一個包含210個真實合影樣本的測試集,覆蓋五到十個參考身份,並且確保這些身份和訓練集完全不重疊,測的是模型對陌生人臉的泛化能力,而不是死記硬背。

在這個測試集上,WithEveryone對比了三類模型:學術界的身份保持方法(比如WithAnyone、UMO)、開源通用模型(比如Qwen-Image-Edit、BAGEL)、以及商業系統(GPT-Image 2、Nano Banana系列、Seedream系列)。

| 模型 | Sim(Tgt)身份相似度 | Copy-Paste拷貝痕跡 | Coverage覆蓋率 | Dup重複率 |

|---|---|---|---|---|

| GPT-Image 2 | 0.462 | 0.169 | 0.905 | 0.075 |

| Nano Banana 2 | 0.451 | 0.045 | 0.884 | 0.099 |

| Seedream 5.0 Pro | 0.436 | 0.114 | 0.913 | 0.065 |

| WithAnyone | 0.405 | 0.096 | 0.957 | 0.045 |

| **WithEveryone** | **0.499** | **0.055** | **0.973** | **0.028** |

Sim(Tgt):生成的人臉與其在目標場景中真實呈現效果的相似度,衡量的是"這張臉在這個語境下像不像本人",而不是簡單粗暴地和原始參考照片比對。

這裡有一個特別值得展開說的指標,叫Copy-Paste(拷貝痕跡)。

Copy-Paste拷貝痕跡:衡量生成的人臉是不是顯得像直接把參考照片"貼"上去的,而沒有根據新場景的光線、角度、表情做出自然調整。數值越高,說明越像生硬的複製粘貼。

GPT-Image 2的身份相似度Sim(Ref)其實是所有模型里最高的,達到0.583,但它的Copy-Paste分數也是最高的,0.169,比WithEveryone的0.055高了三倍還多。這說明什麼?說明GPT-Image 2那種"高相似度",很大一部分是靠生硬地把參考照片懟進畫面里實現的,而不是真正理解了這張臉在新場景里該怎麼呈現。

這就好比拼貼畫和寫生畫的區別。拼貼畫把照片剪下來貼到新畫布上,五官輪廓當然和原圖一模一樣,但衣服褶皺、光影方向、臉部朝向都對不上背景。寫生畫是畫師重新看著模特、結合當前光線畫出來的,可能不是每個細節都跟照片分毫不差,但整體看起來更自然、更像"這個人真的在這個場景里"。WithEveryone想追求的就是後者。

再看覆蓋率(Coverage)和重複率(Dup)這兩項,這兩個指標反映的是"要求的人有沒有都出現,出現的人有沒有撞臉"。WithEveryone覆蓋了97.3%的參考身份,重複率只有2.8%,兩項都是所有對比模型里最好的。相比之下,很多開源通用模型的覆蓋率甚至不到42%,論文解釋說這些模型傾向於只編輯提示詞裡明確提到的少數幾個人,而不是把整個團體都畫出來。

人越多,掉分越慢

論文還專門做了一個很紮實的分析,把身份相似度按參考人數從五到十分別拆開看。

結果顯示,隨著人數增加,WithEveryone的分數從五人時的0.629降到十人時的0.571,降幅是0.058。而GPT-Image 2從0.593降到0.496,降幅是0.097。UMO從0.412降到0.330,降幅是0.082。

也就是說,人越多,WithEveryone掉分掉得最慢,而且分布也更集中,不像GPT-Image 2那樣忽高忽低的情況更明顯。

團隊接著追問了一個更深的問題:這個掉分是不是純粹因為人多了,每張臉占的畫面比例變小了,識別起來自然更難?

他們專門做了一個控制實驗,把人臉在畫面中的相對大小單獨拎出來分析。結果發現,幾個商業模型的身份相似度和人臉尺寸強相關,人臉每縮小一個百分點,相似度就掉0.016到0.019左右。而WithEveryone幾乎不受人臉尺寸影響,斜率接近於零,只有負0.002。

這意味著,即便把人臉尺寸這個因素控制住了,GPT-Image 2和Seedream的掉分大部分能被"人臉變小"解釋掉,但WithEveryone本身的掉分幅度基本不變。換句話說,WithEveryone的這點掉分,不是因為臉小了看不清,而可能來自別的因素,比如身份之間的相互干擾、遮擋、構圖複雜度的提升。這也是論文自己坦承還沒完全解決的問題。

有意思的是,當人臉在112像素這個特定尺寸(這正好是ArcFace編碼器的標準輸入尺寸)以下時,WithEveryone的優勢最明顯。112到150像素區間內,WithEveryone達到0.611,同區間GPT-Image 2隻有0.561,Seedream 5.0 Pro只有0.388。這個規律很實用:小臉場景,恰恰是WithEveryone最擅長的地方,而這也正是十人合影里最常出現的情況,因為人越多,每張臉自然就越小。

規劃得好不好,比執行得好不好更重要

論文的最後一部分分析很值得單獨說一說,因為它誠實地指出了這個系統目前最大的瓶頸在哪。

團隊設計了一個叫Plan IoU(計劃執行度)的指標,專門衡量"生成出來的圖像,有沒有忠實執行模型自己規劃好的布局"。

Plan IoU:把模型預測的人臉位置框和最終生成圖像里檢測到的實際人臉框做重疊度比對,重疊度越高,說明生成過程越忠實地按照計劃來執行。

結果發現,如果用模型自己預測的布局,Plan IoU能達到0.773,這個數字已經相當高了,說明生成這一步基本上很聽話,會按照規划去執行。但如果換成"標準答案"級別的完美布局,身份相似度和覆蓋率還能進一步大幅提升。

這個對比說明了什麼?說明瓶頸不在"執行"這一步,而在"規劃"這一步。模型已經很擅長照著自己寫的施工圖去蓋房子了,問題是這份施工圖本身,還沒畫到最好。

這就像一個學生已經養成了認真按照大綱複習的好習慣,大綱寫什麼他就學什麼,執行力沒問題。真正拖後腿的,是大綱本身還有遺漏,某些該考的重點沒寫進去。補課的重點不該放在"逼他更認真執行大綱",而應該放在"幫他寫一份更完整的大綱"。

論文裡還有個細節佐證了這個判斷:在訓練過程中,"執行計劃"這項能力收斂得比"身份保持"更早,說明生成模組很快就學會了乖乖聽話,真正需要打磨的是理解側那份規劃能力。

寫在後面

讀這篇論文的過程中,最觸動我的其實不是任何一個具體的技術模組,而是它反覆強調的一個判斷:身份保持在多人場景下失效,根本原因往往不是"記不住臉",而是"配不上號"。

這個洞察挺反直覺的。大部分人第一反應會覺得,AI畫不好多人合影,是因為它"腦容量不夠",裝不下那麼多張臉。但論文告訴我們,真正的瓶頸可能是配對機制本身在噪聲環境下會失靈,導致本該精準的監督信號自己把自己攪亂了。這就好比你以為一個人記性不好,其實是他每次記東西的時候都被人在旁邊故意打亂順序。

另一個讓我反覆琢磨的地方是LG-ID Loss這個設計的哲學。它沒有去優化"猜測"這件事本身,而是直接質疑了"為什麼非要猜"。這種思路在工程問題里其實很常見,很多時候我們花大量精力去優化一個環節,卻沒意識到這個環節本身根本不該存在,答案早就擺在那裡,只是沒人願意直接用。

這篇論文也留了一個挺誠實的口子沒關上:當用戶給的提示詞本身就很模糊的時候,比如只說"給我們拍張合照",卻沒說誰站左邊誰站右邊,那麼理論上存在無數種同樣合理的排布方式。這時候"布局對不對"這個問題該怎麼評判,論文自己也承認目前還沒有很好的答案。

如果一張合影本來就沒有唯一正確的構圖,那"規劃能力"這件事,最終追求的究竟是逼近某個標準答案,還是學會在無數種合理可能里,選出一種讓所有人看著都舒服的那一種?這個問題,可能比論文裡任何一個技術模組都更難回答。

Q&A

Q1:WithEveryone是什麼?

A:WithEveryone是由復旦大學、騰訊混元實驗室和香港大學團隊提出的一個統一多模態框架,能夠根據五到十張參考人臉生成一張連貫的多人合影。它的核心創新是把身份識別、布局規劃和圖像生成放進同一個模型的一次推理過程里完成,而不是拆成幾個獨立模組分別處理。

Q2:WithEveryone和GPT-Image 2、Nano Banana比誰更強?

A:在論文構建的210個樣本、五到十人的測試集上,WithEveryone的目標場景身份相似度(Sim(Tgt))達到0.499,高於GPT-Image 2的0.462;拷貝痕跡分數只有0.055,遠低於GPT-Image 2的0.169;身份覆蓋率達到97.3%,是所有對比模型中最高的。

Q3:LG-ID Loss解決了什麼問題?

A:傳統的身份損失函數需要先"猜測"生成圖像里哪張臉對應哪個參考身份,人一多、圖像噪聲大的時候這個猜測經常出錯,反而會把監督信號搞亂。LG-ID Loss直接利用訓練數據里已經標註好的人臉坐標框來做裁剪比對,跳過了猜測這一步,是論文裡帶來身份提升最大的單項改動。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新