Translation d'images haute résolution en temps réel
Regardez la vidéo à la fin de cet article pour voir plus d'exemples!
Vous avez tous vu ce genre d'images où le visage d'une personne est "toonifié" en un personnage d'anime.
Beaucoup d'entre vous ont dû voir d'autres types de transformations d'image comme celle-ci, où une image est modifiée pour suivre le style d'un certain artiste.
Ici, une tâche encore plus difficile pourrait être quelque chose comme ça, où une image est transformée en une autre saison ou heure de la journée.
Ce que vous n'avez peut-être pas encore vu, c'est le temps qu'il faut pour produire ces résultats et les résolutions réelles des images produites. Ce nouveau papier est complètement transparent à ce sujet, car il s'attaque exactement à ce problème. En effet, par rapport à la plupart des approches, ils transforment des images 4K haute définition, et cela se fait en temps réel! Dans ce travail, ils ont montré leurs résultats sur la translation de saison, de nuit et de jour et la retouche de photos, que vous regardez depuis le début de cet article dans les images ci-dessus. Cette tâche est également connue sous le nom de «translation d'image-en-image» et tous les résultats que vous voyez ici ont été produits en 4K. Bien sûr, les images ici ont été prises directement du papier, donc cela peut ne pas sembler de très haute qualité ici. Veuillez consulter leur article ou essayer leur code si vous n'êtes pas convaincu!
Voici les résultats les plus étonnants de cet article:
Ici, vous pouvez voir leur technique appelée LPTN, qui signifie “Laplacian Pyramid Translation Network”. Regardez combien de temps il a fallu au LPTN pour produire les traductions d'images là où la plupart des approches ne peuvent même pas le faire, car cette quantité de définitions est tout simplement trop exigeante en termes de calcul (les lignes représentent différentes techniques, les colonnes représentent différentes résolutions d’images, et les valeurs le temps d’exécution moyen pour les images). Et oui, c'est en bel et bien secondes. Ils pouvaient transformer des images 4K en moins d'un dixième de seconde à l'aide d'un seul GPU (une carte graphique) ordinaire. C'est plus rapide que toutes ces approches sur les translations d'images 480p! Aussi, ce n'est pas huit fois plus rapide, mais 80 fois plus rapide en moyenne! Mais comment est-ce possible? Comment peuvent-ils être tellement plus efficaces tout en produisant des résultats étonnants et de hautes qualités?
Ceci est réalisé en optimisant le fait que l'éclairage et la manipulation des couleurs, qui se rapportent au style d'une image, sont contenus dans la composante basse fréquence d'une image.
Alors que les détails du contenu, que nous souhaitons conserver lors de la translation d'une image dans un autre style, peuvent être affinés de manière adaptative sur les composants haute fréquence. C'est là que ça devient intéressant. Ces deux composants peuvent être divisés en deux tâches qui peuvent être effectuées simultanément par le GPU. En effet, ils divisent l'image en composants basse résolution et haute résolution, utilisent un réseau pour traiter les informations de la basse fréquence (ou du style de l'image), et créent une image finale fusionnant ce style traité avec la haute fréquence raffinée. Composant haute fréquence, qui contient les détails de l'image, mais traité par un sous-réseau plus petit pour s'adapter au nouveau style. Évitant ainsi la forte consommation de calcul inévitable lors du traitement des composants haute résolution dans l'ensemble du réseau. Il s'agit d'un domaine étudié de longue date réalisé avec une technique populaire appelée pyramide laplacienne. L'idée principale de cette méthode de la pyramide laplacienne est de décomposer l'image en segments haute et basse fréquence et de la reconstruire par la suite.
Tout d'abord, nous produisons une moyenne de l'image initiale, la rendant floue et supprimant les composants haute fréquence.
Cela se fait en utilisant un noyau qui traverse toute l'image pour arrondir des lots de pixels. Par exemple, s'ils prennent un noyau de dimension 3 par 3, il passerait par l'image entière effectuant une moyenne sur les groupes de 3 par 3 pixels en supprimant toutes les valeurs uniques et mettant toutes les valeurs vis-à-vis du noyau à la même valeur moyenne. Ils brouillent fondamentalement l'image en adoucissant les bords.
Ensuite, la différence entre cette image floue et l'image initiale est enregistrée pour être utilisée à la fin de l'algorithme pour réintroduire les détails, qui sont les composantes haute fréquence (affiché ci-dessus). Ceci est répété trois fois avec des noyaux de moyenne de plus en plus grands produisant des versions à basse fréquence de plus en plus petites de l'image ayant de moins en moins de détails à haute fréquence. Un exemple concret de ces trois noyaux est montré ci-bas.
Si vous vous en souvenez, j’ai précédemment énoncé que ces versions basse fréquence de l'image contiennent des informations sur les couleurs de l'image et l'éclairage. En effet, ils ne sont fondamentalement qu'une version floue de faible qualité de notre image, c'est pourquoi le modèle est tellement plus efficace que lorsqu’il doit traiter l’image complète. Ceci est extrêmement pratique, car ce sont des versions plus petites et moins précises de l'image, et ce sont les informations exactes que nous essayons de changer lors de la translation de l'image dans un autre style.
Cela signifie que l'utilisation de ces versions basse fréquence est beaucoup plus efficace au niveau du traitement que l'utilisation directe de l'image entière, mais elles sont également axées sur les informations que nous voulons changer dans l'image, c'est pourquoi les résultats restent si bons.
Cette version de qualité inférieure de l'image peut être facilement transformée à l'aide d'une architecture typique encodeur-décodeur, comme toutes les autres techniques de translation d'image que j’ai mentionné en début de vidéo, mais comme elle est effectuée sur une image de qualité bien inférieure et donc une image beaucoup plus petite, elle est exponentiellement plus rapide à procéder. Le point le plus fort est que la qualité des résultats ne dépend que des versions haute fréquence de l'image initialement enregistrées qui n'est pas traitée sur l'ensemble du réseau. Ces informations haute fréquence sont simplement fusionnées à la fin du traitement avec l'image basse fréquence pour améliorer les détails. Fondamentalement, c'est autant rapide parce que les chercheurs ont divisé les informations de l'image en deux: des informations générales à basse fréquence et des informations détaillées à haute fréquence. Ensuite, ils n'envoient que la partie facilement computationnelle de l'image au réseau, qui est exactement ce que nous voulons transformer, le style général flou et de mauvaise qualité de l'image, ou en d'autres termes: les informations basse fréquence. Ensuite, seules des transformations rapides et directes sont effectuées sur les parties haute fréquence de l'image pour les redimensionner et les fusionner avec l'image floue nouvellement stylisée, améliorant les résultats en ajoutant des détails sur tous les contours dans l'image.
Et voilà! Vous avez vos résultats avec une fraction du temps et de la puissance de calcul nécessaires. C'est génial, et le code est accessible au public si vous souhaitez l'essayer, ce qui est toujours cool!
Merci d’avoir lu cet article!
Regardez la vidéo sous-titrée en français
Venez discuter avec nous dans notre communauté Discord: ‘Learn AI Together’ et partagez vos projets, vos articles, vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle et plus encore!
Si vous aimez mon travail et que vous souhaitez rester à jour avec l'IA, vous devez absolument me suivre sur mes autres médias sociaux (LinkedIn, Twitter) et vous abonner à ma newsletter hebdomadaire sur l'IA!
Pour supporter mon travail:
La meilleure façon de me soutenir est de souscrire à ma newsletter tel que mentionné précédemment ou de vous abonner à ma chaîne sur YouTube si vous aimez le format vidéo en anglais.
Soutenez mon travail financièrement sur Patreon
Références
- Liang, Jie and Zeng, Hui and Zhang, Lei, (2021), "High-Resolution Photorealistic Image Translation in Real-Time: A Laplacian Pyramid Translation Network", https://export.arxiv.org/pdf/2105.09188.pdf
- Code: https://github.com/csjliang/LPTN