Blog / Teknik

Mengapa wajah hasil restorasi AI mirip karakter video game

· diperbarui 24 Agustus dengan ablasi kuantitatif · korpus: 11 pindaian Library of Congress, 35 wajah (bench visual) + 4 potret domain publik, 120 run terukur (bench metrik)

Model restorasi wajah bisa membuat wajah dari foto yang rusak tampak seperti render dari video game lawas: kulit plastik, mata seperti dilukis, wajah yang tajam tetapi bukan benar-benar orangnya. Kami mem-benchmark delapan varian rendering pada 11 foto domain publik untuk mengisolasi penyebabnya: ada tiga, ketiganya bisa dipisahkan, dan tak satu pun diperbaiki oleh “model yang lebih baik”. Revisi ini menambahkan apa yang tidak dimiliki bench aslinya: angka. Mengukur ulang rendering yang dipilih dengan embedding pengenalan wajah[4] mengonfirmasi pemilihan dengan mata itu secara kuantitatif (setiap dial pada rendering “natural” membeli identitas yang terukur, memangkas pajak identitas restorasi hingga separuhnya), dan sapuan penuh pada kenop fidelitas menunjukkan mengapa ia dirilis pada 0,7 meski setiap kurva monoton menuju 1,0.

3penyebab tampilan plastik yang bisa dipisahkanpenggantian total, pergeseran warna, wajah kecil
0,950identitas input yang terdegradasipatokan yang harus dihadapi setiap restorasi
0,868 → 0,909identitas, render klasik → naturalablasi, diukur pada w = 0,7
−0,041pajak identitas render yang dirilisseparuh dari −0,082 renderer klasik

Setiap angka dalam catatan ini diukur pada kode pipeline produksi: model yang sama, matematika yang sama. Rekaman mentah per gambar: e2v2_face.json · e2_face.json.

Pindaian hitam putih tahun 1862 yang lembut dan berbutir, tiga pria berdiri di sebuah tendaSebelumPindaian yang sama setelah direstorasi: wajah dipertajam dan detail dipulihkan dengan warna alamiSesudah
Gambar 1. Restorasi oleh alat di situs ini pada salah satu foto korpus (Lincoln di Antietam, pindaian Library of Congress tahun 1862): wajah dibangun ulang dan seluruh gambar ditingkatkan, dengan butiran dan karakter warna foto itu sendiri dipertahankan. Agustus 2026.

1 · Tiga penyebabnya

1. Penggantian total. Pipeline standar menempelkan output model di atas wajah asli pada opasitas 100%, sehingga setiap wajah hasil restorasi seluruhnya digambar model. Butiran foto, tekstur kertas, dan karakter lensa berakhir di batas oval tak kasatmata di sekeliling setiap wajah.

2. Pergeseran warna. Model wajah mengeluarkan warnanya sendiri, bukan warna fotonya. Diukur pada bench kami, ia mengarang mata biru pada sebuah ambrotype tahun 1850-an dan mencerahkan warna kulit pada potret studio abad ke-19 seorang subjek kulit hitam, mode kegagalan yang dikenal pada model wajah yang dilatih dengan korpus foto modern yang didominasi kulit terang[2]. Pipeline mana pun yang mempertahankan kroma model mewarisi biasnya.

3. Wajah kecil adalah halusinasi. Wajah yang menempati kurang dari kira-kira 100 px mencapai model wajah 512 px sebagai perbesaran bilinear 5–13×, sebuah olesan. Model lalu mengarang wajah yang masuk akal alih-alih memulihkan wajah yang sebenarnya. Ini batas fisika, bukan batas model: wajah 40 px bisa dibuat lembut-tapi-manusiawi, tidak pernah tajam-dan-setia.

2 · Anatomi sebuah perbaikan wajah

Untuk melihat di mana dial-dialnya berada, ikuti satu wajah melewati pipeline. Deteksi (SCRFD, dengan gerbang plausibilitas) menghasilkan lima landmark. Penyejajaran menyelesaikan transformasi kesebangunan kuadrat terkecil (skala s, rotasi θ, translasi t) yang memetakan titik mata dan mulut yang terdeteksi pi ke templat FFHQ yang tetap[5] qi:

argmins,θ,t Σi ‖ sR(θ)pi + t − qi ‖²(1)

sehingga setiap wajah memasuki jaringan pada 512×512 dengan mata dan mulut di posisi kanonik. Model, CodeFormer secara default[1], yang merestorasi dengan mencari wajah di sebuah codebook yang dipelajari alih-alih meregresi piksel, dan mengekspos bobot fidelitas w ∈ [0, 1] yang mengemudikan antara prior-nya (0) dan inputmu (1), menghasilkan potongan yang direstorasi. Lalu tibalah bagian yang menjadi pokok catatan ini: penempelan kembali. Resep klasik mengomposit potongan itu pada opasitas penuh dalam warna model itu sendiri. Resep kami mengembalikannya dengan warp di bawah feather radial m dan mengomposit setiap piksel sebagai

out = blend · m · faceL⊕photoab + (1 − blend · m) · photo(2)

dengan blend = 0,75, dan faceL⊕photoab berarti model hanya menyumbang luminans (L pada Lab) sementara foto mempertahankan kromanya sendiri, cermin persis dari pewarna kami, yang hanya menyumbang kroma dan mempertahankan luminans foto. Wajah kecil mendapat tahap super-resolusi ×4 khusus pada jejak sumbernya sebelum restorasi, sehingga model melihat detail yang dipulihkan alih-alih olesan bilinear.

3 · Bench visual yang memilih varian H

Delapan varian, masing-masing run pipeline penuh atas korpus, memvariasikan bobot fidelitas, opasitas penempelan kembali, sumber warna, dan SR wajah kecil. Output dibandingkan berdampingan dengan aslinya pada zoom 100%:

VarianBobotPenempelan kembaliSumber warnaSR wajah kecil
A (saat itu berlaku)0,70100%model
B0,90100%model
C0,7070%model
D0,70100%foto
E0,7075%foto
F0,8575%foto
G0,7050%foto
H (terpilih)0,7075%fotoya

H dirilis sebagai rendering default. Penempelan kembali hanya-luminans menambah kurang dari setengah detik per foto; tahap wajah kecil menambah satu sampai dua detik hanya per wajah yang memenuhi syarat. Bagian keterbatasan yang asli mengakui kelemahan yang jelas: pemilihan dilakukan lewat penilaian manusia secara berdampingan pada 35 wajah, bukan lewat metrik. Maka kami membangun bench metriknya.

4 · Baru: ablasinya, dikuantifikasi

Satu angka membingkai semuanya: input yang terdegradasi sendiri mencetak identitas 0,950 terhadap aslinya. ArcFace dilatih dengan augmentasi berat, sehingga ia menembus blur dan derau; restorasi karena itu tidak mendapat kredit karena tajam; ia hanya didebit ketika mengubah siapa yang ada di foto. Setiap renderer membayar sebagian dari pajak identitas itu. Pertanyaannya, seberapa besar:

Rendering (semua pada w = 0,7)PSNR (dB)id ArcFacepajak identitasrasio Tenengrad
Input terdegradasi (baseline)27.320.9500.217
Classic v2 (100% paste, model colour)26.680.8680.0820.373
+ luma-only (photo keeps its chroma)26.720.8820.0680.376
+ 75% blend (grain shows through)27.060.9010.0490.304
Natural (shipped: both + small-face SR)27.090.9090.0410.307

Bench metrik sependapat dengan mata, dial demi dial. Mempertahankan kroma foto membeli +0,014 identitas (pergeseran warna itu nyata, dan terukur). Pembauran 75% membeli +0,019 lagi dan sebagian besar PSNR: membiarkan seperempat wajah asli tembus bernilai hampir sebesar seluruh pengaturan fidelitas model wajah. Bersama-sama keduanya memangkas pajak identitas hingga separuh, dari −0,082 ke −0,041, sambil tetap sekitar 1,4× ketajaman input. Satu-satunya biaya yang jujur: render klasik “lebih tajam” menurut Tenengrad (0,373 vs 0,307), ketajaman yang sebagian dibelanjakannya pada tekstur yang bukan milik foto. Itulah tarik-ulur persepsi–distorsi[6] yang dipindahkan ke dalam rendering, dan kami membelanjakannya pada identitas.

Empat panel wajah Florence Owens Thompson: asli yang tajam, salinan terdegradasi, render klasik dengan kulit plastik dan warna bergeser, dan render natural yang mempertahankan butiran dan nada
Gambar 2. Ablasi secara langsung: Migrant Mother (Lange 1936). Klasik v2 (ketiga): kulit plastik dan semburat warna yang tidak pernah dimiliki fotonya. Natural (keempat): detail model di bawah butiran dan nada foto itu sendiri. Identitas: 0,868 vs 0,909 terhadap aslinya.
Empat panel potret Lincoln: asli, terdegradasi, render klasik dengan pergeseran warna dingin, dan render natural yang mempertahankan nada hangat pelat
Gambar 3. Ablasi yang sama, Lincoln O-77 (1863). Render klasik (ketiga) menguras nada hangat pelat dan mendinginkan seluruh wajah: penyebab 2, pergeseran warna, dalam sekali lihat. Render natural mempertahankan warna foto secara konstruksi: model hanya diizinkan menyumbang luminans.

5 · Kenop fidelitas, disapu dari ujung ke ujung

Bobot w pada CodeFormer mengemudikan antara prior codebook (0) dan kepatuhan pada inputmu (1)[1]. Kami menyapunya dalam sebelas langkah di bawah renderer natural:

0.60.70.80.9100.250.50.71bobot fidelitas CodeFormer wkosinus ArcFace vs asliinput terdegradasiproduksi
Gambar 4. Identitas ArcFace vs bobot fidelitas di bawah renderer yang dirilis, rata-rata empat potret, degradasi ×4. Monoton dari 0,710 (orang asing yang masuk akal) ke 0,932, dan tidak pernah mencapai baseline input bergaris putus-putus pada 0,950: kenop mengatur tarif pajak identitas, ia tidak bisa membuat pajaknya negatif. PSNR (25,5 → 27,3 dB) dan SSIM monoton dengan cara yang sama.

Kami masuk dengan harapan menemukan kurva tarik-ulur dengan optimum di bagian dalam yang akan membenarkan 0,7 sebagai “lututnya”. Datanya menolak: berdasarkan angka, w = 1,0 mendominasi, pada setiap tingkat keparahan:

×2 (mild)×4 (standard)×8 (severe)
0.50.60.70.80.9100.30.50.71bobot fidelitas CodeFormer wkosinus ArcFace vs asliproduksi
Gambar 5. Interaksi keparahan: identitas vs bobot pada degradasi ×2 / ×4 / ×8, renderer natural. w yang lebih tinggi menang di mana-mana, bahkan pada ×8 ketika baseline input sendiri sudah jatuh ke 0,826. Pada pengaturan produksi, pajak identitasnya −0,042 (ringan), −0,041 (standar), −0,068 (parah); pada w = 0 ia mencapai −0,27: ketika hanya sedikit informasi yang bertahan, prior mengisi kekosongan dengan pendapatnya sendiri.

Lalu mengapa merilis 0,7 alih-alih 1,0? Karena metrik itu perlu, tetapi tidak cukup. ArcFace mengukur siapa; ia nyaris buta terhadap usia dan tekstur; pelatihan yang membuatnya tangguh terhadap blur juga membuatnya memaafkan penghalusan. Pengamatan asli bench berdiri di atas buktinya sendiri: pada 0,5 yang lazim untuk model ini, kerutan di sudut mata tampak melunak pada Migrant Mother: Florence Owens Thompson berusia 32 dan memikul Depresi Besar di wajahnya, dan prior lebih suka kalau tidak begitu. Pada w = 1,0 codebook begitu tunduk pada input yang rusak sehingga sampah kompresi mulai ikut bertahan. 0,7 mempertahankan hampir seluruh nilai metriknya (0,909 vs 0,932) sementara gambarnya mempertahankan usianya. Dan panel s8 di bawah adalah argumen untuk tidak pernah membiarkan w mendekati 0 pada foto warisan yang rusak:

Tiga panel: Lincoln yang terdegradasi parah, wajah halus lebih muda yang nyaris tak dikenali pada bobot nol, dan kemiripan yang lebih dekat pada bobot satu
Gambar 6. Degradasi ×8, Lincoln. Dari input ini (kiri), w = 0 (tengah) dengan percaya diri merekonstruksi pria yang lebih halus, lebih muda, dan berbeda: identitas 0,585, mendekati lempar koin. w = 1 (kanan) tetap dikenali sebagai Lincoln pada 0,788. Ketika buktinya tipis, pendapat prior mendominasi, persis ketika kamu ingin kenopnya tinggi.

6 · Model lainnya, renderer yang sama

Model wajahPSNR (dB)id ArcFacerasio Tenengradms / wajah*
CodeFormer (w = 0.7, default)27.090.9090.3077200
GFPGAN 1.427.130.9100.3286046
GPEN-BFR-25626.680.9270.3222633

*Median wall-clock satu tahap penuh (termasuk deteksi) pada mesin bench 2-vCPU. Di bawah renderer natural, ketiga model[1][2][3] konvergen dalam rentang 0,02 identitas satu sama lain: renderer, bukan model, kini menjadi suku yang dominan, yang dengan sendirinya merupakan sebuah temuan: tampilan “video game” tidak pernah benar-benar soal jaringan mana yang kamu jalankan. CodeFormer tetap menjadi default karena ketangguhannya pada kerusakan parah dan karena kenop yang baru saja dibahas dua bagian dalam catatan ini; GPEN tetap pilihan tercepat pada 2,6 s per wajah.

7 · Keterbatasan

  • Bench visualnya 35 wajah; bench metriknya 4 potret × 120 run. Bentuk monoton bertahan pada setiap potret secara individual; itulah klaim yang kami andalkan; nilai absolutnya akan bergeser menurut subjek dan pindaian.
  • ArcFace adalah satu wasit, wasit standar, dengan peringatan toleransi-blur yang kami manfaatkan sebagai baseline. Studi perseptual manusia atas ribuan wajah adalah instrumen yang masih hilang, dan pengamatan soal garis usia bertumpu pada mata, bukan embedding.
  • Degradasi sintetis. Kerusakan kotak sepatu sungguhan menambahkan goresan dan pemerakan yang tidak dimodelkan tumpukan korupsi; tahap kerusakan menanganinya secara terpisah.
  • Batas wajah kecil tetap berlaku: di bawah kira-kira 40 px wajah, tidak ada pengaturan yang menghasilkan wajah tajam yang setia, dan output yang jujur adalah yang lembut.

Referensi

  1. 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
  2. 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
  3. 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
  4. Deng, J., Guo, J., Xue, N., & Zafeiriou, S. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition. CVPR. arXiv:1801.07698. arxiv.org
  5. 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
  6. Blau, Y., & Michaeli, T. (2018). The Perception-Distortion Tradeoff. CVPR. arXiv:1711.06077. arxiv.org
  7. FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
  8. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  9. Gardner, A. (1863). Abraham Lincoln, portrait O-77. Public domain, via Wikimedia Commons. commons.wikimedia.org
  10. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai