Vous êtes responsable marketing et devez assurer l’attrait d’un lieu ou d’un site web servant de vitrine à votre entreprise ?
Vous êtes féru d’histoire, ou disposez d’une vieille collection d’images de famille ?
Vous exercez un métier lié de près ou de loin aux médias visuels ? Imprimeur, journaliste, écrivain, artiste ?
Si votre travail ou hobby nécessite l’utilisation et éventuellement le traitement d’images de toute sorte (archives photographiques, imagerie médicale, images satellites, microscopiques, infrarouges, ou simplement des images trouvées sur le web), vous vous retrouvez souvent avec des images de faible qualité, rendant votre travail plus fastidieux, ou votre hobby moins appréciable.
Sachez qu’il existe aujourd’hui des techniques, bien qu’encore imparfaites et expérimentales, permettant de restaurer les images, et de tenter d’améliorer leur qualité. De nombreuses techniques de pointe, basées sur les dernières avancées en intelligence artificielle, peuvent aujourd’hui vous aider à :
-
Augmenter artificiellement la résolution de vos images trop petites
-
Réduire le bruit, dû à la détérioration du papier, ou à la mauvaise qualité des appareils photos
-
Donner des couleurs à vos vieilles images monochromes
-
Rendre vos images plus nettes et plus vives
L’utilisation de ces tous nouveaux produits de la recherche scientifique, encore purement expérimentaux, nécessite de solides connaissances informatiques et une sérieuse maîtrise du domaine de l’intelligence artificielle. Même pour les chercheurs et informaticiens les plus aventureux, une utilisation concrète de ces outils demande du temps et des efforts considérables, tant les contributions sont dispersées dans la jungle du web scientifique, et sont à priori difficilement compatibles entre elles.
Au Cetic, nous avons créé un outil permettant de faciliter l’utilisation de ces techniques, les rendant ainsi accessibles au plus grand nombre. Nous espérons que cet outil permettra de montrer et susciter l’intérêt de ces nouvelles technologies émergentes, encore très peu connues du grand public et imparfaites, mais d’un grand potentiel.
Prérequis
Dans cette fiche, nous adopterons une solution facile à appréhender, même pour les plus débutants. Ainsi, aucun prérequis n’est essentiel pour suivre cette fiche. Des bases éventuelles en informatique et en programmation peuvent aider à la compréhension du système, et une expérience avec Jupyter et Google Colab en particulier peuvent faciliter la lecture de cette fiche.
Nous proposerons ultérieurement une deuxième fiche plus technique, pour aborder plus en profondeur le fonctionnement de l’outil. Cette deuxième fiche nécessitera cette fois certaines connaissances techniques en informatique.
Comment restaurer vos images ?
Cette fiche présente comment installer le toolkit de restauration d’image, et comment l’utiliser sur vos propres images. La méthode proposée dans cette fiche est plutôt à destination des particuliers amateurs de photographie, permettant d’utiliser un environnement Python déjà préconfiguré (Google Colab), puissant et gratuit, permettant de réaliser rapidement des programmes d’intelligence artificielle. Nous installerons directement le toolkit de restauration d’image dans cet environnement, et utiliserons l’interface proposée pour restaurer nos images.
L’outil est encore en développement, et se limite actuellement à l’intégration de quelques techniques encore imparfaites de restauration d’image. Vous pourrez trouver plus d’information sur le toolkit et la restauration d’image aux adresse suivantes:
Le Répertoire Github du toolkit
Les articles de blog sur la restauration d’images:
Etape 0 - Compte Google
Afin de pouvoir installer et utiliser facilement le toolkit de restauration d’image, nous allons utiliser la plateforme Google Colab. Son utilisation nécessite un compte Google. Si vous n’en avez pas déjà un, vous pouvez en créer un par ici.
Etape 1 - Google Colab
Si vous avez un compte Google, vous pouvez maintenant accéder à la plateforme Google Colab par ici.
Google Colab peut être vu comme un éditeur en ligne, semblable à Google Docs et Google Sheet. Vous pouvez y créer des documents, qui sont directement liés à votre compte Google, ou vous pouvez accéder à des documents créés et partagés par d’autres utilisateurs. La différence principale de Google Colab avec les outils de bureautique en ligne, c’est qu’elle permet d’éditer des documents spéciaux : des “Notebook Jupyter”. Ces documents permettent à la fois d’insérer du texte et des images, mais aussi et surtout des blocs de code informatique (généralement dans le langage de programmation Python). Et lorsqu’on exécute un bout de codes dans Google Colab, ils sont en fait exécutés sur une machines virtuelle, éventuellement équipée d’une carte graphique puissante (GPU) hébergée par Google. Et tout ça gratuitement. C’est grâce à un de ces GPU, que nous allons pouvoir utiliser correctement le toolkit de restauration d’image. Car en effet, l’utilisation de programmes utilisant du Deep Learning nécessite généralement une machine puissante, pouvant supporter du calcul intensif, et massivement parallèle. Et les GPUs hébergés chez Google sont particulièrement taillés pour cette tâche.
Passons maintenant au vif du sujet: commencez par vous connecter à votre compte Google si ce n’est pas déjà fait.
Lorsque vous vous êtes connecté, vous devriez voir apparaître une fenêtre similaire à l’image ci-dessous. Si ce n’est pas le cas, dans le menu, allez à File > Open notebook (ou appuyez sur Ctrl + O). Nous allons utiliser cette interface pour accéder aux notebooks permettant de tester le toolkit.
-
Allez à l’onglet “GitHub”, ce qui vous permettra d’indiquer le répertoire où est hébergé le toolkit.
-
Entrez l’URL du toolkit de restauration d’image: https://github.com/titsitits/open-image-restoration
-
Cliquez sur le notebook suivant: Colab_Notebooks/Demo_Image_Restoration.ipynb
Pour une plus grande facilité d’utilisation, Google Colab permet d’ajouter une surcouche au notebook, qui permet de créer une interface graphique simple avec des boutons de contrôle, tout en cachant le code. En double-cliquant sur une des cellules du notebook, vous devriez voir apparaître le code.
Etape 2 - Configuration de Google Colab (optionnel)
Dans cette étape, nous allons vérifier que Google colab est correctement configuré pour exécuter votre notebook de manière optimale. Il faut pour cela que le noyau Python auquel Google Colab vous donne accès dispose d’un GPU. Pour cela, allez au menu “Runtime > Change runtime type”, et sélectionnez l’accélérateur matériel “GPU”.
Bonus: En réalité, les machine virtuelles avec GPU mises à disposition gratuitement par Google Colab sont de qualité variable. Vous pouvez vérifier quel GPU vous a été mis à disposition, grâce à une simple ligne de commande linux. Pour cela, vous pouvez lancer une cellule de code volante via le raccourcis Ctrl+Alt+N, ou via le menu “Insert > Scratch code cell”. Vous devriez voir apparaître une cellule à droite de la fenêtre.
Vous pouvez y écrire la commande:
!nvidia-smi
Le symbole ! permet d’exécuter des commandes linux (du script shell) plutôt que du code python. La commande nvidia-smi permet de vérifier la configuration et l’utilisation du GPU installé sur une machine.
Appuyez ensuite sur le bouton start à gauche de la cellule pour l’exécuter (voir illustration ci-dessous).
A la première exécution d’une cellule du notebook, il vous sera peut-être demandé si vous voulez vraiment l’exécuter. Appuyez simplement sur “Run anyway”.
Vous devriez voir un résultat similaire à l’image ci-dessous.
Nous avons lors de cet essai eu droit à une VM disposant d’un GPU Tesla K80. C’est en réalité un GPU assez vieux, et avec un peu de chance vous devriez pouvoir bénéficier d’un GPU plus puissant (Tesla T4 ou P100 par exemple). La Tesla K80 devrait néanmoins suffire pour traiter décemment des images de petite taille.
Vous pouvez fermer à présent la cellule volante (scratch cell).
Etape 3 - Utilisation du toolkit
Grâce au notebook de démonstration, l’utilisation de base du toolkit de restauration d’images est très simple. Il vous suffit de suivre le notebook et d’exécuter une à une les cellules, en cliquant sur le bouton “start” apparaissant à gauche de celles-ci.
3.1 Sélection des images
Lancez la cellule 1. Upload images to restore. Sous la cellule, un bouton devrait apparaître, vous permettant de choisir des images à transférer.
Il est préférable d’utiliser des images de petite taille (de faible résolution) pour tester l’outil, non seulement parce que les modèles sont en principe plus efficaces sur ces images, mais aussi parce que le processus sera plus rapide. En outre, si les images utilisées sont trop grandes, vous risquez de rencontrer des erreurs d’allocation de mémoire dans le carte graphique (encore une fois, le traitement d’image par Deep Learning est généralement un processus gourmand en ressources computationnelles).
Pour la démonstration, nous utiliserons les deux images historiques ci-dessous
Il est possible que vous rencontriez une erreur lors de la première exécution de la première cellule. Si c’est le cas, relancez-la simplement. D’expérience, nous recommandons l’utilisation de Google Chrome (ou Chromium) comme navigateur pour Google Colab.
3.2 Sélection des techniques de restauration
La deuxième cellule permet de sélectionner les techniques de restaurations à appliquer aux images transférées. Quatre techniques sont actuellement disponibles (d’autres sont prévues dans les futures versions de l’outil) :
-
“Demoiring” : réduction de la moire. Cette technique permet d’éliminer les éventuelles rayures horizontales et verticales présentes dans l’image. Cette technique est particulièrement utile pour les deux images que nous avons sélectionnées pour la démonstration.
-
“Denoising” : réduction du bruit gaussien. Cette technique permet de réduire le grain d’une image. La méthode actuellement disponible dans notre toolkit est encore assez instable et lourde. C’est pourquoi elle n’est pas sélectionnée par défaut dans le notebook de démonstration. Celle-ci sera remplacée par un algorithme plus stable et plus performant dans une version future.
-
“Colorization” : inférence de couleurs. Cette technique permet de transformer une image monochrome en une image couleur, en générant les couleurs artificielle les plus réalistes possible.
-
“Superresolution” : augmentation de la résolution de l’image (multiple par 4 le nombre de pixels). Cette technique permet d’augmenter le degré de détails d’une image, en générant des détails artificiels les plus réalistes possible
Vous pourrez trouver plus de détails sur les algorithmes testés et sélectionnés dans l’outil de restauration d’images ici: http://www.mickaeltits.be/image_restoration/
Enfin, le paramètre initial_size permet de réduire si nécessaire la taille des images sélectionnées au cas où elles seraient trop grandes. Par défaut, celui-ci est défini à 400 pixels. Ainsi, la taille de vos images sera réduite de manière à ce que ni leur hauteur, ni leur largeur ne dépasse 400 pixels.
La première exécution de cette cellule peut prendre quelque minutes, en particulier si vous utilisez la technique de colorisation. Ceci est dû au fait qu’à la première utilisation, le modèle de Deep Learning utilisé par cette technique doit être téléchargé (243Mo). A la fin du processus, vous devriez voir apparaître vos images traitées, de manière séquentielle, selon les techniques sélectionnées.
3.3 Zoom sur les résultats
Les différences entre les résultats peuvent paraître parfois très subtiles, en particulier pour la super-résolution. La dernière cellule permet de zoomer sur une zone de l’image pour mieux analyser les différences.
Veuillez d’abord pour cela sélectionner l’image à visualiser (paramètre image_file). Vous devez pour cela entrer le nom entier du fichier. Attention : les images ont en principe été converties en .png. Veuillez donc renseigner cette extension dans le nom du fichier.
Les quatre paramètres suivants (left, right, bottom, upper) permettent de délimiter la zone de l’image à visualiser. Enfin, display_size permet d’agrandir le résultat.
Conclusion
Dans l’image utilisée pour la démonstration, vous pourrez remarquer que la dernière image paraît moins pixelisée que l’originale. Il faut néanmoins admettre que le résultat n’est pas optimal, et peut contenir certains artefacts qui rendent l’image peu réaliste. Ceux-ci peuvent apparaître lors de l’utilisation en séquence de plusieurs techniques de traitement de l’image (tel que le Demoiring et le Denoising). La super-résolution accroît alors non-seulement les détails de l’image, mais également les défauts insérés dans l’image par les techniques utilisées en amont. Cette problématique ne montre en fait qu’une partie du challenge de la restauration d’image, et de l’utilisation en chaîne de techniques de restauration d’image. C’est pour cette raison que nous sommes au CETIC en train de développer une solution, permettant de sélectionner automatiquement la meilleure configuration possible d’un pipeline de restauration d’image, afin de rendre le processus plus stable, et le plus accessible possible.
Par ailleurs, les couleurs de l’image testée ne sont pas non-plus très vives. Il existe pour cela également des méthodes, permettant d’augmenter l’éclat des couleurs et le contraste des images. L’intégration de telles techniques dans notre outil est actuellement en plein développement, et permettront d’aller plus loin dans la restauration et l’amélioration de vos images.
Enfin, nous n’avons abordé dans cette fiche qu’une manière simple et limitée d’utiliser notre outil de restauration d’image. Dans une deuxième fiche, nous présenterons l’outil plus en détail, et proposerons une solution permettant d’installer l’outil de manière pérenne sur votre poste de travail, vous permettant ainsi une utilisation et expérimentation plus intensive de l’outil.