Upscaler de résolution d'image par intelligence artificielle (IA) - 06/09/2022 - Written by Did

Tags
Image
Cat in the shades of Delphi, Greece

Qu'est-ce qu'un upscaler ?

Un upscaler utilise un algorithme pour augmenter la résolution d'une image, en y ajoutant des détails, la qualité de la photo est augmentée, permettant une impression ou un affichage sur un plus grand support (papier ou écrans). Voici une liste de projets que vous pourrez utiliser gratuitement.

Projets open source à intégrer dans un projet web

La plupart des upscalers conçus pour être intégré dans un site web disposent d'une page de démo avec laquelle vous pouvez upscaler vos images gratuitement.

Pensez a éviter d'uploader une image de base ayant une résolution limitée (environ inférieure a 512px de dimensions), autrement votre navigateur risque de planter.

Yayoi-JS

Bien que plus maintenu, ce projet fonctionne bien avec la bibliothèque tensorflow.js. Il double la résolution des images que vous uploader. Du fait que c'est un outil qui utilise uniquement vos ressources "coté client", les images que vous déposerez ne quitteront pas votre ordinateur (contrairement aux projets basés sur l'ESRGAN).

Ce projet propose également une variante pour l'upscaling d'images 2D issus d'animés Japonais (https://github.com/nagadomi/waifu2x).

Demo: https://panepo.github.io/Yayoi-js

Code source: https://github.com/Panepo/Yayoi-js

Image upscaling with Tensorflow.js

Use the slider to compare both side
photo after edit
photo before edit

UpscalerJS

Activement maintenu et basé sur tensorflowjs, il s'agit d'une variante du model esrgan, son implémentation est par ailleurs très bien documenté sur le blog de l'auteur (septembre 2020).

Les résultats sont assez bons mais le temps de calcul est très lent, a moins peu être de disposer d'une machine très puissante

Source: https://github.com/thekevinscott/UpscalerJS

Demo: https://www.upscaler.ai/

Keras-JS

KerasJS est un autre projet qui fonctionne côté client, mais il est assez dépassé (2017) est plus maintenu. Il présente toutefois l'avantage de pouvoir exploiter les core Cuda des GPUs (en particulier la série RTX de Nvidia). Aussi son interface est très propre et bien conçue.

Sur le site de Keras-JS, en complément de l'upscaling, vous trouverez d'autres outils pour la reconnaissance d'image (classification, catégorisation d'objets).

Ironiquement, le projet KerasJs a été migré sur tensorflow.js, mais en 2022, soit 5 ans plus tard, aucune démo ne permet l'upscaling sur le site officiel du projet.

Le gros inconvénient du site ci-dessous est que vous ne pouvez pas y uploader directement une image, il fonctionne seulement avec des urls externe. Une astuce consiste donc a transformer une image en url avec un outil d'encodage base64 tel que https://www.base64-image.de, l'url de l'image devra alors commencer par data:image/jpeg;base64,.

Demo: https://transcranial.github.io/keras-js/#/image-super-resolution

Source code: https://github.com/transcranial/keras-js

super-resolution-js

Ce projet est plus récent que le précédent (avril 2022), mais il semble plus proche de l'état de prototype. De plus il utilise un bibliothèque externe maintenue par Microsoft, appelée ONNX. A noter qu'il ne fonctionne pas avec ma version de Firefox (103.0.1).

Demo: https://josephrocca.github.io/super-resolution-js/

Source code: https://github.com/josephrocca/super-resolution-js

Outils intégrés au navigateur dans un site web (calcul côté serveur)

La plupart des projets d'upscaler disponibles gratuitement (en particulier ceux open source dont le code source est disponible ouvertement), peuvent théoriquement être intégré dans un projet de site web. Les outils ci-dessous n'utilisent pas les ressources de l'ordinateur utilisé pour la navigation mais celles du serveur externe lié à l'hébergement du site.

Ils peuvent être utilisés directement via les liens ci-dessous, de fait, sans aucun garantie de fonctionnement futur (au moment ou vous lisez ces lignes).

Arc tencent

https://arc.tencent.com/en/ai-demos/humansegmentation

Ce projet sponsorisé par Tencent, en plus d'offrir l'upscaling, permet de restaurer des images anciennes de même que des visages en très basse résolution, il dispose également d'un outil pour extraire des sujets dans une image. Il se base sur l'algorithme open source suivant:

https://github.com/xinntao/Real-ESRGAN

Bien que le lien sur le site de tencent pourrait devenir indisponible prochainement, le code open source lui restera probablement en ligne. De plus vous pouvez théoriquement le faire fonctionner sur votre propre machine.

RealESRGAN

https://replicate.com/xinntao/realesrgan

Une implémentation alternative de l'algorithme précédent, proposée par le site replicate.com avec lequel il est possible d'exécuter un grand nombre d'autres models basés sur le machine learning.