Je me suis intéressé récemment aux travaux de Mehdi S. M. Sajjadi, Bernhard Schölkopf et Michael Hirsch présentés lors de l’ICCV 2017 (International Conference on Computer Vision). Il s’agit d’un réseau de neurones profonds entrainé pour améliorer la résolution d’images d’animaux, au delà de ce qu’on arrive à faire avec des filtres graphiques évolués.Pourquoi faire ? Pensez à toutes ces caméras et appareils photos qui sont disposés dans les réserves naturelles et qui servent à la gestion de ces dernières. Et puis, au final, ce procédé peut-être adopté pour d’autres images, le tout est d’entrainer le réseau avec un échantillon suffisamment grand de photos.
Bref, dans l’idée, le principe est simple: on prend des photos en haute résolution, on divise leur résolution par 4 (SD), puis on demande au DNN de reformer une image HD à partir de la SD… et on corrige les poids en réutilisant la HD. Mais dans l’implémentation, c’est plus complexe. Leurs travaux sont expliqués ici.
L’implémentation a été réalisée en utilisant Tensorflow pour la partie DNN, et scipy pour les calculs et les filtres. On dispose du code source, non pas de l’entrainement du réseau, mais du modèle “pre-trained” qui sait déjà réaliser un tas de choses.
Voici mes propres tests réalisés à partir de photos prises sur google images (cliquez dessus pour agrandir et passer en mode galerie):
Image Source, c’est celle que je fournis au réseau pour avoir l’image résultante. A coté, je vous met l’originale pour comparaison.
J’ai même essayé avec un Tardigrade car j’imagine qu’il n’a pas du servir pour les tests:
C’est assez impressionnant, sachant que la base d’entrainement ne fait que 3339Ko !
L’architecture du DNN mise en place est résumée ici:
On peut télécharger différents sets, ainsi que les codes sources utilisant le modèle pré-entrainé sur cette page. Il n’y a pas que des animaux: on trouve aussi des visages, des fleurs, etc.
Laisser un commentaire