Vés al contingut principal

Ampliador d'imatges de franc

Amplia una foto 4× amb un model d'IA que s'executa al teu dispositiu: vores més nítides i text llegible, no només píxels més grans. No es puja res, sense compte ni marca d'aigua.

Deixa els fitxers aquí o fes clic per navegar

PNG, JPG, WebP, AVIF, GIF, BMP, HEIC, HEIF · processat al teu dispositiu

o premeu Ctrl+V per enganxar des del porta-retalls

Pots deixar múltiples fitxers alhora

Navegar pels fitxers
Real-ESRGAN redibuixa el detall a 4× en lloc d'estirar els píxels. El model de 4,6 MB es descarrega una vegada i després s'executa completament en aquest dispositiu: la teva foto no es puja mai.

Com funciona

L'ampliador executa Real-ESRGAN general-x4v3 — una xarxa convolucional de superresolució de 4,6 MB — a través d'onnxruntime-web dins d'un Web Worker a la teva pròpia màquina. El model es recupera una vegada del nostre propi servidor, es desa a la memòria cau, i després s'utilitza sense connexió; la teva foto es descodifica a un canvas localment i mai es puja. El factor d'escala és fix a 4×, perquè està integrat directament al graf en dos llocs.

  1. 1
    La imatge es talla en rajoles superposades
    Un resultat 4× són setze vegades els píxels, així que una foto de 4000×3000 seria de 192 megapíxels — suficient per matar directament la pestanya del navegador en lloc de només alentir-la. En canvi, la imatge es divideix en nuclis que l'encaixen exactament, i cada nucli es llegeix amb un marge addicional de context a cada costat perquè la pila convolucional (el camp receptiu del qual és de 34 píxels) tingui píxels veïns reals amb els quals treballar. Les vores es repliquen per extensió, mai amb reblit de zeros, cosa que altrament faria que el model afilés una vora negra al voltant del quadre.
  2. 2
    Cada rajola s'empaqueta com un tensor RGB planar
    Una rajola esdevé un tensor float32 de forma [1, 3, H, W] amb els canals vermell, verd, i blau emmagatzemats com a plans separats i valors simplement dividits per 255 — sense cap normalització de mitjana/desviació estàndard. Cada rajola s'omple exactament a la mateixa mida quadrada, perquè el backend de WebGPU torna a compilar els seus shaders per a cada nova forma d'entrada i un pla amb tres mides de rajola diferents pagaria aquest cost tres vegades.
  3. 3
    La inferència s'executa sobre WebGPU on existeix, en cas contrari sobre la CPU
    La sessió es crea primer amb WebGPU i recorre a WebAssembly d'un sol fil en qualsevol fallada — els controladors de gràfics habitualment anuncien suport i després fallen a mig construir el graf, i més lent guanya a trencat. Com que la reserva canvia el límit de mida realista i el temps d'execució per un factor gran, l'eina torna a comprovar la feina contra qualsevol proveïdor que realment hagi obtingut abans que s'executi la primera rajola, i et diu quin ha utilitzat després.
  4. 4
    Les rajoles es tornen a unir amb encreuament i es limiten
    Unir rajoles a topall deixa una graella visible, així la contribució de cada rajola es pondera per una rampa lineal a través de la franja compartida. Les dues rampes són complements exactes, així els pesos sumen precisament 1 a cada píxel de sortida i no apareix cap línia clara o fosca al llarg d'una costura. La sortida bruta del model no es retalla dins del graf — els valors mesurats van d'aproximadament −0,18 a +1,19 — així cada mostra es limita al rang 0–255 abans de la conversió a 8 bits, cosa que és el que evita les motes al llarg de les vores d'alt contrast. L'alfa es torna a mostrejar per separat i bilinealment, perquè la xarxa en si mateixa no té cap camí d'alfa.
  5. 5
    El resultat es codifica al worker
    Els píxels assemblats es dibuixen en un OffscreenCanvas i es codifiquen a PNG immediatament, així prémer Descarrega no té cap buit asíncron al davant. Canviar a JPG torna a codificar des del canvas que el worker encara manté en lloc de tornar a executar el model. També es renderitza un petit retall central al 100% al costat de la mateixa regió tornada a mostrejar pel navegador, que és l'única comparació en què una diferència 4× és realment visible.

Els pesos del model es descarreguen una vegada des del nostre propi servidor i es desen a la memòria cau; la teva imatge es descodifica, es divideix en rajoles, s'amplia, i es codifica completament dins del teu navegador, i cap part d'ella s'envia mai enlloc.

Eines relacionades

Preguntes freqüents