Saydam PNG'ler yapay zeka büyütücüleri bozar: koyu hale hatası
Saydamlık içeren bir PNG'yi (kesilmiş bir fotoğraf, bir çıkartma dışa aktarımı) neredeyse herhangi bir yapay zeka büyütücüsüne ver, belirli bir kusur ortaya çıkar: her saydam kenardan özneye doğru birkaç piksel sızan bir koyu hale ve arkasında soluk, parlak bir aşım halkası. Koyu önizlemelerde saklanır, beyaz sayfalarda göze batar. Bunu kendi hattımızda yeniden ürettik, tam şeklini ölçtük (−94 luma'lık, üç model pikseli genişliğinde bir hendek), web platformunun önçarpılmış alfa gidiş dönüşüne kadar izini sürdük ve yayınladığımız düzeltmeyi ölçtük: model daha çalışmadan hatanın %98'ini kaldıran O(n) bir taşkın doldurma.
Bu nottaki her sayı üretim hattının kodunda ölçüldü: aynı modeller, aynı matematik. Görüntü başına ham kayıtlar: e3_alpha.json.
1 · Siyah nereden geliyor
Web'in 2B canvas'ı pikselleri önçarpılmış saklar: (r, g, b, α) değil, (rα, gα, bα, α). Birleştirme bu formata bayılır (Porter–Duff operatörleri[1] tek çarp-topla işlemine dönüşür), ama tam olarak tek bir yerde kayıplıdır. Pikselleri geri okumak rengi α'ya bölmek demektir:
α = 0'da bu 0/0'dır ve platformun yanıtı[2], kurtarılacak hiçbir şeyin kalmadığıdır: renk, canvas'a dokunduğu anda sıfırla çarpılmıştır. getImageData, tamamen saydam her pikselin altında RGB (0, 0, 0) döndürür. Kesilmiş görüntünün saydam alanı sessizce saf siyah bir göle dönüşmüştür.
Bir insan gölü asla görmez: alfa onu gizler. Bir süper çözünürlük ağı insan değildir: üç kanal RGB tüketir ve alfa tüketmez, dolayısıyla vantasiyaha gömülü bir fotoğraf görür ve sınıra yakın her çıktı pikseli, göle dalan bir alıcı alandan hesaplanır. Siyah yerinde durmaz; evrişim yığını boyunca içeri doğru yayılır[3].
2 · Haleyi ölçmek

Gerçekten sezgiye aykırı bir ölçüm: modelin saydam bölgenin içinde çöp halüsinasyonu yapmasını, “boşluğu iyileştirmesini” bekliyorduk. Yapmıyor. Düz siyah giriyor, düz siyah çıkıyor (gradyan enerjisi 0.1). Zarar, modelin boşlukta uydurduğu şey değil; boşluğun sınırın öte yanındaki özneye yaptığı şey. Bu önemli, çünkü çıktıyı maskelemenin seni kurtaramayacağı anlamına geliyor: hasarlı pikseller görünür bölgenin içinde, α > 0'ın altında.
3 · Düzeltme: boşluğu makul renkle doldur
Model α = 0 altında RGB görmek zorundaysa, bunun özneyi sürdüren bir RGB olmasını sağla. Çıkarımdan önce alfa taşırma çalıştırıyoruz: saydam olmayan her pikselden başlayan çok kaynaklı bir genişlik öncelikli taşkın; her saydam piksel, zaten renklendirilmiş 4-komşularının ortalama rengini alır:
Kuyruğu sınır halkasıyla tohumlamak ve FIFO işlemek, kuyruktan çıkan her pikselin en az bir renkli komşusu olmasını garanti eder (onu kuyruğa kim eklediyse önce bitmiştir); böylece tek bir O(n) geçişi tüm boşluğu renklendirir: sınırsız uzaklık, kapalı delikler dahil. Alfa baytlarına asla dokunulmaz; yarı saydam pikseller kendi renklerini korur. Model artık bir uçurum yerine pürüzsüz bir devam görür ve alfa (ayrı büyütülmüş) çıkışta yeniden uygulanır. Ölçülen etki: 0–3 px bandındaki hata -62.9'dan 1.1 luma seviyesine düşüyor, 63× azalma, ölçülebilir hiçbir çalışma süresi maliyeti olmadan.

4 · Bu senin görüntülerin için ne anlama geliyor
Bu siteyi kullanıyorsan: hiçbir şey; saydam PNG'ler bulut hattında da tarayıcı içi yedek motorda da yukarıdaki ölçülmüş yoldan geçer, çünkü ikisi aynı saf kütüphaneyi paylaşır. Görüntü araçları geliştiriyorsan: yalnızca RGB alan her modeli önçarpılmış sıfırlara alerjik say: çıkarımdan önce taşır (yukarıdaki taşkın bağımlılıksız ~30 satır) ya da düz bir renge matla ve matın yanlılığını kabul et. Ve birinin iyileştirici çıktısındaki gizemli bir koyu kenarı teşhis ediyorsan, artık parmak izini biliyorsun: birkaç piksel genişliğinde bir hendek, arkasında bir aşım halkası ve alfa sınırıyla kusursuz bir korelasyon. Akılda tutulacak üç sayı: −94, 3 px, 63×.
Kaynaklar
- Porter, T., & Duff, T. (1984). Compositing Digital Images. SIGGRAPH '84, Computer Graphics 18(3), 253–259. (The premultiplied-alpha compositing algebra.) dl.acm.org
- WHATWG HTML Living Standard, the 2D canvas element: premultiplied backing stores and the lossy getImageData round-trip for non-opaque pixels. html.spec.whatwg.org
- Wang, X., Xie, L., Dong, C., & Shan, Y. (2021). Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data. ICCV Workshops. arXiv:2107.10833. arxiv.org
- Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. 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