Bonjour à tous.
Avez-vous déjà pensé à utiliser la technologie de l'IA pour supprimer la mosaïque ?
Si vous y réfléchissez bien, ce problème est assez difficile, car la technologie d'IA que nous utilisions auparavant, qu'il s'agisse de reconnaissance faciale ou de reconnaissance OCR, peut au moins être reconnue manuellement. Mais si on vous donne une image en mosaïque, pouvez-vous la restaurer ?
C’est évidemment difficile. Si les humains ne peuvent pas récupérer, comment pouvons-nous apprendre aux ordinateurs à récupérer ?
Vous souvenez-vous encore de l'article "Utiliser l'IA pour générer des avatars" que j'ai écrit il y a quelques jours. Dans cet article, nous avons formé un modèle DCGAN capable de générer une image à partir de nombres aléatoires arbitraires.
Les nombres aléatoires sont utilisés comme cartes de bruit générées par les pixels
Le modèle génère des avatars normaux à partir de nombres aléatoires
DCGANContient deux modèles : le modèle générateur et le modèle discriminateur. Le rôle du modèle générateur. est Générer une image à partir d'un ensemble de nombres aléatoires. Plus l'image est proche de l'échantillon d'apprentissage, mieux c'est, afin de tromper le modèle discriminateur. Le modèle discriminateur doit continuellement améliorer sa capacité de discrimination pour empêcher les images générées par le modèle générateur. de se faire dépasser.
Si nous modifions l'entrée du modèle de générateur ci-dessus de nombres aléatoires en images avec mosaïques, la sortie sera des images sans mosaïques. Est-il possible de former un modèle qui supprime la mosaïque ?
Ensuite, je partagerai avec vous comment entraîner un modèle de suppression de mosaïque, puis je partagerai un outil prêt à l'emploi que vous pouvez télécharger et utiliser directement pour essayer l'effet.
Ici, nous n'utilisons pas le DCGAN présenté ci-dessus, mais utilisons deux modèles plus puissants, Pix2pix et CycleGAN, pour nous entraîner séparément.
Pix2pix est un algorithme de traduction d'images basé sur GAN. Des images mosaïques aux images normales, il est essentiellement similaire à la conversion d'une langue à une autre.
Traduction du modèle Pix2pix
L'effet obtenu par CycleGAN est simplement de convertir des images entre différents domaines, tandis que la forme elle-même reste inchangée.
Modèle CycleGAN
L'article nous fournit l'ensemble de données et le processus de formation complet, qui peuvent nous aider à former le modèle à moindre coût.
Tout d'abord, téléchargez l'ensemble de données
L'ensemble de données
totalise 654 M.
Ensuite, téléchargez le modèle pré-entraîné Paddle
modèle pré-entraîné
Enfin, entraînez respectivement les modèles Pix2pix et CycleGAN.
Modèle Pix2pix
python gan<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span>infer<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">.py</span> <br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--init_model output/pix2pix/checkpoints/110/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--dataset_dir /home/aistudio/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--image_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--n_samples 1 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--crop_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--model_net Pix2pix </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--net_G unet_256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--test_list /home/aistudio/test_list.txt </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--output ./infer_result/pix2pix/</span>
Modèle CycleGAN
python gan<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span>infer<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">.py</span> <br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--init_model output/cyclegan/checkpoints/48/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--dataset_dir /home/aistudio/ </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--image_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--n_samples 1 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--crop_size 256 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--input_style A </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--test_list /home/aistudio/test_list.txt </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--model_net CycleGAN </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--net_G resnet_9block </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--g_base_dims 32 </span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--output ./infer_result/cyclegan/</span>
Après l'entraînement, vous pouvez exécuter le fichier gan/infer.py pour comparer les effets de suppression de mosaïque des deux modèles.
Si vous ne souhaitez pas entraîner le modèle vous-même, voici un projet prêt à l'emploi à partager avec vous. Il est également basé sur la segmentation sémantique et la traduction d'images, en référence à. Pix2pix et CycleGAN.
Adresse du projet : https://github.com/HypoX64/DeepMosaics/blob/master/README_CN.md
Pour les utilisateurs de Windows, l'auteur fournit un progiciel sans installation contenant une interface GUI.
Interface UI
Comme nous l'avons dit précédemment, cette technologie est encore relativement difficile, alors n'ayez pas d'attentes trop élevées. Voici l'effet de suppression réel.
Encodage
Décodage
L'effet est toujours OK, mais il n'est pas aussi parfait qu'on l'imaginait. Vous pouvez le télécharger et l'exécuter pour essayer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!