AI से रिस्टोर किए चेहरे वीडियो गेम के किरदारों जैसे क्यों लगते हैं
फेस-रिस्टोरेशन मॉडल किसी खराब फोटो के चेहरे को पुराने वीडियो गेम के रेंडर जैसा बना सकते हैं: प्लास्टिक जैसी त्वचा, पेंट की हुई आँखें, ऐसा चेहरा जो शार्प तो है पर पूरी तरह वही व्यक्ति नहीं। हमने कारण अलग-अलग करने के लिए 11 पब्लिक-डोमेन तस्वीरों पर आठ रेंडरिंग वेरिएंट बेंचमार्क किए: कारण तीन हैं, वे अलग किए जा सकते हैं, और उनमें से कोई भी “बेहतर मॉडल” से ठीक नहीं होता। यह संशोधन वह जोड़ता है जो मूल बेंच में नहीं था: आँकड़े। चुने गए रेंडरिंग को फेस-रिकग्निशन एम्बेडिंग[4] से दोबारा मापने पर आँखों से किया चयन मात्रात्मक रूप से सही साबित होता है (“नैचुरल” रेंडरिंग का हर डायल मापने लायक आइडेंटिटी खरीदता है, और रिस्टोरेशन के आइडेंटिटी टैक्स को आधा कर देता है), और फ़िडेलिटी नॉब का पूरा स्वीप दिखाता है कि यह 0.7 पर क्यों शिप होता है, जबकि हर कर्व 1.0 की ओर एकरस बढ़ता है।
इस नोट का हर आँकड़ा प्रोडक्शन पाइपलाइन के कोड पर मापा गया: वही मॉडल, वही गणित। प्रति इमेज कच्चे रिकॉर्ड: e2v2_face.json · e2_face.json.
पहले
बाद में1 · तीन कारण
1. पूरा रिप्लेसमेंट। स्टैंडर्ड पाइपलाइन मॉडल के आउटपुट को असली चेहरे के ऊपर 100% ओपैसिटी पर चिपका देती है, इसलिए हर रिस्टोर किया चेहरा पूरी तरह मॉडल का बनाया होता है। तस्वीर का ग्रेन, कागज़ की बनावट और लेंस का चरित्र हर चेहरे के चारों ओर एक अदृश्य अंडाकार सीमा पर खत्म हो जाते हैं।
2. रंग का बहाव। फेस मॉडल अपना रंग निकालता है, फोटो का नहीं। हमारे बेंच पर मापने पर उसने 1850 के दशक के एक ऐम्ब्रोटाइप में नीली आँखें गढ़ दीं और 19वीं सदी के एक स्टूडियो पोर्ट्रेट में एक अश्वेत व्यक्ति की त्वचा का रंग हल्का कर दिया, जो आधुनिक, ज़्यादातर हल्की त्वचा वाले फोटो कॉर्पस पर ट्रेन हुए फेस मॉडलों की एक जानी-पहचानी नाकामी है[2]। जो भी पाइपलाइन मॉडल का क्रोमा रखती है, उसे उसके पूर्वाग्रह विरासत में मिलते हैं।
3. छोटे चेहरे कल्पना हैं। लगभग 100 px से कम जगह घेरने वाला चेहरा 512 px के फेस मॉडल तक 5–13× बाइलीनियर एनलार्जमेंट, यानी एक धब्बे के रूप में पहुँचता है। मॉडल फिर असली चेहरा वापस लाने के बजाय एक विश्वसनीय चेहरा गढ़ लेता है। यह भौतिकी की सीमा है, मॉडल की नहीं: 40 px के चेहरे को सॉफ्ट-मगर-इंसानी बनाया जा सकता है, शार्प-और-वफ़ादार कभी नहीं।
2 · एक चेहरे की मरम्मत की शारीरिक रचना
डायल कहाँ हैं यह देखने के लिए एक चेहरे को पाइपलाइन में पूरा फॉलो करें। डिटेक्शन (SCRFD, प्लॉज़िबिलिटी गेट के साथ) पाँच लैंडमार्क देता है। अलाइनमेंट वह लीस्ट-स्क्वेयर्स सिमिलैरिटी ट्रांसफॉर्म (स्केल s, रोटेशन θ, ट्रांसलेशन t) हल करता है जो पहचाने गए आँख और मुँह के बिंदुओं pi को तय FFHQ टेम्पलेट[5] qi पर मैप करता है:
ताकि हर चेहरा नेटवर्क में 512×512 पर, आँखें और मुँह तय जगह पर रखकर दाखिल हो। मॉडल, डिफ़ॉल्ट रूप से CodeFormer[1], जो पिक्सेल रिग्रेस करने के बजाय सीखी हुई कोडबुक में चेहरे ढूँढकर रिस्टोर करता है और एक फ़िडेलिटी वेट w ∈ [0, 1] देता है जो उसके प्रायर (0) और आपके इनपुट (1) के बीच स्टीयर करता है, एक रिस्टोर किया क्रॉप बनाता है। फिर आता है वह हिस्सा जिसके बारे में यह नोट है: पेस्ट-बैक। क्लासिक नुस्खा उस क्रॉप को मॉडल के अपने रंगों में पूरी ओपैसिटी पर कम्पोज़िट करता है। हमारा उसे रेडियल फेदर m के नीचे वापस उसकी जगह वार्प करता है और हर पिक्सेल को इस तरह कम्पोज़िट करता है
जहाँ blend = 0.75 है, और faceL⊕photoab का मतलब है कि मॉडल सिर्फ ल्यूमिनेंस (Lab का L) देता है जबकि तस्वीर अपना क्रोमा खुद रखती है, जो हमारे कलराइज़र का ठीक उल्टा है, जो सिर्फ क्रोमा देता है और फोटो का ल्यूमिनेंस रखता है। छोटे चेहरों को रिस्टोरेशन से पहले उनके सोर्स फुटप्रिंट पर एक अलग ×4 सुपर-रिज़ॉल्यूशन पास मिलता है, ताकि मॉडल को बाइलीनियर धब्बे के बजाय वापस पाई गई डिटेल दिखे।
3 · वह विज़ुअल बेंच जिसने वेरिएंट H चुना
आठ वेरिएंट, हर एक कॉर्पस पर पूरी पाइपलाइन का रन, जिनमें फ़िडेलिटी वेट, पेस्ट-बैक ओपैसिटी, रंग का स्रोत और छोटे चेहरों का SR बदला गया। आउटपुट की तुलना मूल के साथ अगल-बगल 100% ज़ूम पर की गई:
| वेरिएंट | वेट | पेस्ट-बैक | रंग का स्रोत | छोटे चेहरों का SR |
|---|---|---|---|---|
| A (तब का मौजूदा) | 0.70 | 100% | मॉडल | – |
| B | 0.90 | 100% | मॉडल | – |
| C | 0.70 | 70% | मॉडल | – |
| D | 0.70 | 100% | तस्वीर | – |
| E | 0.70 | 75% | तस्वीर | – |
| F | 0.85 | 75% | तस्वीर | – |
| G | 0.70 | 50% | तस्वीर | – |
| H (चुना गया) | 0.70 | 75% | तस्वीर | हाँ |
H डिफ़ॉल्ट रेंडरिंग के रूप में शिप हुआ। सिर्फ-ल्यूमिनेंस वाला पेस्ट-बैक प्रति फोटो आधे सेकंड से कम जोड़ता है; छोटे चेहरों का पास सिर्फ हर योग्य चेहरे पर एक से दो सेकंड जोड़ता है। मूल सीमाओं वाले हिस्से ने ज़ाहिर कमज़ोरी मानी थी: चयन 35 चेहरों पर अगल-बगल इंसानी परख से हुआ था, किसी मेट्रिक से नहीं। इसलिए हमने मेट्रिक बेंच बनाया।
4 · नया: एब्लेशन, आँकड़ों में
एक आँकड़ा सब कुछ तय करता है: खराब किया गया इनपुट खुद मूल के मुकाबले 0.950 आइडेंटिटी स्कोर करता है। ArcFace भारी ऑगमेंटेशन के साथ ट्रेन हुआ है, इसलिए वह ब्लर और नॉइज़ के आर-पार देख लेता है; इसलिए रिस्टोरेशन को शार्प होने का कोई श्रेय नहीं मिलता; उससे सिर्फ तब कटौती होती है जब वह बदल दे कि फोटो में कौन है। हर रेंडरर उस आइडेंटिटी टैक्स का कुछ हिस्सा चुकाता है। सवाल है कितना:
| रेंडरिंग (सभी w = 0.7 पर) | PSNR (dB) | ArcFace id | आइडेंटिटी टैक्स | Tenengrad अनुपात |
|---|---|---|---|---|
| खराब किया गया इनपुट (बेसलाइन) | 27.32 | 0.950 | – | 0.217 |
| Classic v2 (100% paste, model colour) | 26.68 | 0.868 | −0.082 | 0.373 |
| + luma-only (photo keeps its chroma) | 26.72 | 0.882 | −0.068 | 0.376 |
| + 75% blend (grain shows through) | 27.06 | 0.901 | −0.049 | 0.304 |
| Natural (shipped: both + small-face SR) | 27.09 | 0.909 | −0.041 | 0.307 |
मेट्रिक बेंच आँखों से सहमत है, डायल-दर-डायल। तस्वीर का क्रोमा रखना +0.014 आइडेंटिटी खरीदता है (रंग का बहाव असली था, और मापने लायक)। 75% ब्लेंड और +0.019 खरीदता है और PSNR का ज़्यादातर हिस्सा: असली चेहरे के एक चौथाई को झलकने देना लगभग उतना ही कीमती है जितनी पूरे फेस मॉडल की फ़िडेलिटी सेटिंग। मिलकर वे आइडेंटिटी टैक्स को आधा कर देते हैं, −0.082 से −0.041, और फिर भी शार्पनेस इनपुट की लगभग 1.4× रहती है। एक ईमानदार कीमत: क्लासिक रेंडर Tenengrad के हिसाब से “ज़्यादा शार्प” है (0.373 बनाम 0.307), और उस शार्पनेस का कुछ हिस्सा वह ऐसी बनावट पर खर्च करता है जो तस्वीर की नहीं है। यही परसेप्शन-डिस्टॉर्शन ट्रेडऑफ[6] है, रेंडरिंग में आ बैठा, और हम उसे आइडेंटिटी पर खर्च करते हैं।


5 · फ़िडेलिटी नॉब, शुरू से आखिर तक स्वीप किया हुआ
CodeFormer का वेट w कोडबुक के प्रायर (0) और आपके इनपुट के प्रति झुकाव (1) के बीच स्टीयर करता है[1]। हमने इसे नैचुरल रेंडरर के तहत ग्यारह कदमों में स्वीप किया:
हम एक ऐसा ट्रेडऑफ कर्व उम्मीद कर रहे थे जिसमें बीच में कोई ऑप्टिमम हो जो 0.7 को “घुटना” साबित कर दे। डेटा ने मना कर दिया: आँकड़ों में w = 1.0 हावी है, हर गंभीरता पर:
तो 1.0 के बजाय 0.7 क्यों शिप करें? क्योंकि मेट्रिक ज़रूरी हैं, पर्याप्त नहीं। ArcFace कौन मापता है; उम्र और बनावट के प्रति वह लगभग अंधा है; जो ट्रेनिंग उसे ब्लर के प्रति मज़बूत बनाती है, वही उसे स्मूदिंग के प्रति उदार बनाती है। बेंच का मूल अवलोकन अपने सबूत पर खुद खड़ा है: मॉडल के आम 0.5 पर Migrant Mother में आँखों की झुर्रियाँ साफ़ नरम पड़ जाती हैं: Florence Owens Thompson 32 साल की थीं और महामंदी को अपने चेहरे पर ढो रही थीं, और प्रायर को यह मंज़ूर नहीं। w = 1.0 पर कोडबुक बर्बाद इनपुट की ओर इतना झुक जाती है कि कम्प्रेशन का कचरा बचने लगता है। 0.7 मेट्रिक की लगभग पूरी कीमत रखता है (0.909 बनाम 0.932) जबकि तस्वीरें अपनी उम्र रखती हैं। और नीचे का s8 पैनल इस बात की दलील है कि खराब विरासती फोटो पर w को कभी 0 के पास न जाने दें:

6 · बाकी मॉडल, वही रेंडरर
| फेस मॉडल | PSNR (dB) | ArcFace id | Tenengrad अनुपात | ms / चेहरा* |
|---|---|---|---|---|
| CodeFormer (w = 0.7, default) | 27.09 | 0.909 | 0.307 | 7200 |
| GFPGAN 1.4 | 27.13 | 0.910 | 0.328 | 6046 |
| GPEN-BFR-256 | 26.68 | 0.927 | 0.322 | 2633 |
*2-vCPU बेंच बॉक्स पर फुल-पास वॉल-क्लॉक का मीडियन (डिटेक्शन समेत)। नैचुरल रेंडरर के तहत तीनों मॉडल[1][2][3] एक-दूसरे से 0.02 आइडेंटिटी के भीतर आ जाते हैं: अब मॉडल नहीं, रेंडरर हावी पद है, जो अपने आप में एक निष्कर्ष है: “वीडियो गेम” लुक कभी असल में इस बारे में था ही नहीं कि आप कौन सा नेटवर्क चलाते हैं। CodeFormer गंभीर नुकसान पर अपनी मज़बूती और उस नॉब के लिए डिफ़ॉल्ट बना रहता है जिस पर इस नोट ने अभी दो हिस्से खर्च किए; GPEN 2.6 s प्रति चेहरे पर रफ्तार का विकल्प बना रहता है।
7 · सीमाएँ
- विज़ुअल बेंच 35 चेहरे है; मेट्रिक बेंच 4 पोर्ट्रेट × 120 रन। एकरस आकार हर पोर्ट्रेट पर अलग-अलग भी कायम रहे; यही वह दावा है जिस पर हम टिके हैं; निरपेक्ष मान विषय और स्कैन के साथ बदलेंगे।
- ArcFace एक ही रेफरी है, स्टैंडर्ड वाला, ब्लर-सहिष्णुता की उस चेतावनी के साथ जिसे हम बेसलाइन के रूप में इस्तेमाल करते हैं। हज़ारों चेहरों पर इंसानी परसेप्चुअल अध्ययन वह उपकरण है जो अभी नहीं है, और उम्र की लकीरों वाला अवलोकन आँखों पर टिका है, एम्बेडिंग पर नहीं।
- सिंथेटिक डिग्रेडेशन। असली डिब्बे वाला नुकसान खरोंचें और सिल्वरिंग जोड़ता है जिन्हें करप्शन स्टैक मॉडल नहीं करता; डैमेज स्टेज उन्हें अलग से संभालता है।
- छोटे चेहरों की सीमा कायम है: लगभग 40 px से छोटे चेहरे पर कोई भी सेटिंग वफ़ादार शार्प चेहरा नहीं देती, और ईमानदार आउटपुट सॉफ्ट चेहरा है।
संदर्भ
- Zhou, S., Chan, K. C. K., Li, C., & Loy, C. C. (2022). Towards Robust Blind Face Restoration with Codebook Lookup Transformer. NeurIPS 35. arXiv:2206.11253. arxiv.org
- Wang, X., Li, Y., Zhang, H., & Shan, Y. (2021). Towards Real-World Blind Face Restoration with Generative Facial Prior. CVPR. arXiv:2101.04061. arxiv.org
- Yang, T., Ren, P., Xie, X., & Zhang, L. (2021). GAN Prior Embedded Network for Blind Face Restoration in the Wild. CVPR. arXiv:2105.06070. arxiv.org
- Deng, J., Guo, J., Xue, N., & Zafeiriou, S. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition. CVPR. arXiv:1801.07698. arxiv.org
- Karras, T., Laine, S., & Aila, T. (2019). A Style-Based Generator Architecture for Generative Adversarial Networks (the FFHQ alignment template). CVPR. arXiv:1812.04948. arxiv.org
- Blau, Y., & Michaeli, T. (2018). The Perception-Distortion Tradeoff. CVPR. arXiv:1711.06077. arxiv.org
- FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
- Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
- Gardner, A. (1863). Abraham Lincoln, portrait O-77. Public domain, via Wikimedia Commons. commons.wikimedia.org
- ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai