Cela fait longtemps que Deep Learning n'a pas fermement établi sa position dans le domaine de l'apprentissage d'opportunité. Il existe de nombreux domaines d'application du Deep Learning, mais cette fois je voudrais présenter un bref résumé et quelques démos sur l'application de "Image Denoising", qui est extrêmement utile et pratique. .. Nous effectuons également un débruitage et un débruitage normaux lorsque seules les images de bruit sont disponibles comme paramètre proche du problème réel.
Le débruitage d'image est littéralement "suppression du bruit de l'image". Du bruit est ajouté aux photos et aux données vidéo prises avec un appareil photo en raison de divers facteurs tels que l'environnement de prise de vue, ce qui entraîne une diminution de la visibilité par rapport à l'image d'origine. La restauration de l'image originale à partir d'une image avec un tel bruit est appelée débruitage, et elle est appliquée non seulement aux images que nous voyons habituellement, mais également au domaine des images médicales telles que la suppression du bruit des images CT et IRM. Ça a été.
Deep Learning for Image Denoising
Les processus de lissage tels que les filtres médians, les filtres gaussiens et les moyennes mobiles ont longtemps été utilisés comme méthodes de base pour éliminer le bruit des images. Dans le domaine de l'apprentissage automatique, la méthode elle-même utilisant le réseau de neurones est proposée depuis longtemps, mais ce n'est pas la méthode courante. Cependant, à partir de l'invention des réseaux de neurones convolutifs, le Deep Learning a montré des performances écrasantes dans le domaine de l'image, et son application au domaine du débruitage a rapidement progressé. C'est l'un des domaines qui font encore l'objet de recherches jour et nuit, et c'est l'un des principaux sujets des principales conférences de vision par ordinateur.
Ci-dessous, nous présenterons certaines des principales méthodes et démos de débruitage à l'aide de Deep Learning.
Les données seront à nouveau utilisées en utilisant MNIST (image de texte manuscrite). Apprenez un modèle qui supprime le bruit en utilisant une image avec du bruit comme données d'entrée et l'image d'origine comme des données correctes, et débruit une nouvelle image de bruit.
Données d'entrée: 50000 images de bruit avec bruit gaussien ajouté aux données de réponse correctes Données de réponse correctes: 50000 images originales
Comme modèle à apprendre, en plus du CNN (Convolutional Neural Network) habituel, nous comparerons les trois suivants.
CAE(Convolutional Autoencoder)
DnCNN(Denoising Convolutional Neural Network)
Win5-RB(Wide Inference Network 5layer + Resnet and BatchNormalization)
CAE(Convolutional Autoencoder) L'autocodeur est un type d'architecture de réseau neuronal qui entraîne les données de sortie pour approcher les données d'entrée, et est principalement utilisé dans le domaine de la réduction de dimension. L'encodeur et le décodeur sont appariés, et la structure est telle que les données d'entrée sont compressées en variables latentes par l'encodeur et restaurées par le décodeur à partir des variables latentes compressées.
En rendant la dimension de la variable latente plus petite que les données d'entrée, il est possible de capturer des caractéristiques de faible dimension qui peuvent reproduire les données d'entrée, et comme un réseau neuronal est utilisé pour l'encodeur et le décodeur, une réduction de dimension non linéaire est possible. Il est utilisé non seulement pour la réduction de dimension mais aussi pour l'élimination du bruit en raison des propriétés de «compression en variables latentes pour capturer les caractéristiques essentielles» et de «récupération d'images avec le décodeur», et transforme l'image d'entrée en image de bruit. Le Denoise est possible en faisant cela (également connu sous le nom de Denoising Autoencoder).
CAE remplace les réseaux neuronaux Encoder et Decoder d'Autoencoder par des réseaux neuronaux convolutifs, et la précision du débruitage à partir des données d'image est grandement améliorée grâce à l'utilisation des réseaux neuronaux convolutifs.
La normalisation par lots est une méthode pour normaliser la sortie de chaque couche du réseau neuronal, et elle peut supprimer le problème du décalage de covariable interne (la distribution de chaque couche change pendant l'entraînement), ce qui contribue à l'amélioration de l'efficacité et de la précision de l'apprentissage. Je vais. En outre, l'une des principales caractéristiques de DnCNN est qu'il utilise le cadre de ResNet (réseau résiduel), de sorte qu'il estime la composante de bruit à partir de l'image de bruit au lieu d'estimer directement l'image avec le bruit supprimé, et le bruit. L'image d'origine est estimée en supprimant les composants de l'image de bruit. Dans le cadre du débruitage, les valeurs d'entrée et de sortie sont souvent proches les unes des autres, y compris lorsque le niveau de bruit est faible, et il est inefficace d'effectuer un apprentissage proche d'un mappage uniforme avec un mappage non linéaire à l'aide d'un réseau neuronal fini, donc la différence est apprise. Cela améliorera l'efficacité de l'apprentissage. Par exemple, s'il n'y a pas de différence, il n'est pas nécessaire de former le mappage constant avec un réseau neuronal, et le poids de chaque couche peut être simplement défini sur 0. En tant que méthode de mise en œuvre, en contournant la valeur d'entrée telle quelle et en la connectant à la couche finale, le réseau neuronal apprend la différence.
La construction du modèle est effectuée à l'aide de Keras sur Google Colaboratory. Le contour de chaque modèle est le suivant.
** Divers paramètres d'apprentissage **
--Nombre d'époques: 10
A titre de test, le résultat du débruitage de l'image de bruit avec le bruit gaussien ajouté est le suivant.
Dans CNN, quelque chose comme un flou apparaît dans certaines parties, mais dans CAE, DnCNN, Win5-RB, le bruit peut être bien supprimé à un niveau où la différence par rapport à l'image d'origine est à peine visible.
Win5-RB a la plus grande précision en MSE (erreur quadratique moyenne) avec 10 000 images de test.
modèle | MSE |
---|---|
CNN | 0.01171 |
CAE | 0.00991 |
DnCNN | 0.00943 |
Win5-RB | 0.00873 |
En utilisant le modèle entraîné, j'ai fait une démo qui peut être traitée en temps réel par Flask. Il s'agit d'une démonstration chez CAE, mais vous pouvez voir qu'elle supprime bien le bruit.
Dans la démonstration 1, nous avons créé un modèle qui supprime les composants de bruit à l'aide d'une image de bruit et d'une image originale sans bruit. Comme vous l'avez peut-être déjà remarqué, est-il possible d'obtenir l'image originale sans bruit en premier lieu? Dans le problème réel, il arrive souvent que l'image originale sans bruit ne soit pas disponible, et tout ce qui est disponible est l'image avec du bruit. Considérant un tel problème réel, nous ferons du débruitage dans une situation où seules des images de bruit peuvent être obtenues.
Noise2Noise Noise2Noise (N2N) est une méthode d'apprentissage d'opportunité de suppression du bruit qui n'utilise que des images de bruit pendant l'apprentissage, et a des performances comparables aux méthodes d'apprentissage qui utilisent des images sans bruit (données de réponse correctes) même si seules des images de bruit sont utilisées. C'est une technique qui peut être émise. En un mot, en apprenant la conversion d'une image de bruit en image de bruit (Noise2Noise), vous apprendrez la conversion d'une image de bruit en une image sans bruit (données de réponse correctes).
Voici une brève explication. La tâche de supprimer le bruit de l'image de bruit $ \ hat {x} _i $ et de l'image originale sans bruit $ y_i $ pair $ (\ hat {x} _i, y_i) $ est de minimiser la perte d'expérience suivante. Il est formulé.
\tag{1}
\underset{\theta}{argmin} \displaystyle \sum_i L(f_\theta(\hat{x}_i),y_i)
Où $ f_ {\ theta} $ est le paramètre de conversion (par exemple poids CNN) sous la condition de la fonction de perte $ L $. D'autre part, dans Noise2Noise, l'image correcte est aussi une image de bruit, donc la perte d'expérience suivante où $ y_i $ devient $ \ hat {y} _i $ est minimisée.
\tag{2}
\underset{\theta}{argmin} \displaystyle \sum_i L(f_\theta(\hat{x}_i),\hat{y}_i)
Dans Noise2Noise, distribution cible avec conditions d'entrée
Ceci est facile à comprendre dans le contexte de la régression, et si vous souhaitez déduire le modèle sous-jacent à partir des échantillons résultants, il existe d'innombrables combinaisons d'échantillons dans lesquelles le même modèle peut être déduit. Par conséquent, même si la valeur observée varie en raison du bruit, si la valeur attendue de la variation est la même que celle de l'échantillon d'origine ($ E \ {\ hat {y} _i | \ hat {x} _i \ } = y _i $), le modèle obtenu en minimisant la perte de l'échantillon et le modèle obtenu en minimisant la perte dans une image sans bruit sont les mêmes. C'est la raison pour laquelle il est possible d'apprendre la conversion d'une image de bruit en une image sans bruit (données de réponse correctes) en apprenant la conversion d'une image de bruit en image de bruit (Noise2Noise).
La formation utilise des images de bruit pour l'entrée et la cible respectivement.
Le modèle utilise Win5-RB et utilise les mêmes paramètres d'apprentissage que dans la démonstration 1.
A titre de test, le résultat du débruitage de l'image de bruit avec le bruit gaussien ajouté est le suivant.
De manière surprenante, le bruit a été supprimé même si seules les images de bruit sont utilisées pour l'apprentissage. Quand j'ai lu le journal pour la première fois, j'étais sceptique, mais j'ai été assez surpris de voir ce résultat. De cette manière, N2N peut supprimer le bruit même dans les situations où il est difficile d'obtenir des données de réponse correctes, de sorte que l'on peut voir qu'il s'agit d'une technologie historique qui élargit considérablement la gamme de scènes disponibles.
Dans l'article, il est rapporté que les performances sont comparables à la méthode d'apprentissage utilisant des images sans bruit (données de réponse correctes), mais en regardant la valeur MSE pour 10000 images de test, démo 1 utilisant des données de réponse correctes C'est une valeur élevée par rapport à.
modèle | MSE |
---|---|
Win5-RB(N2N) | 0.0425 |
Pour considération, regardons un histogramme des valeurs de pixel des images pendant l'entraînement et les tests (0 correspond au noir et 1 correspond aux valeurs de pixel blanc).
Étant donné que l'image cible pendant l'entraînement dans la démo 1 est l'image originale sans bruit (original), il y a beaucoup de 0 dans la valeur du pixel, tandis que l'image cible dans la démo 2 est une image de bruit, donc le nombre de 0 diminue en raison du bruit et des pixels Vous pouvez voir que les valeurs sont uniformément réparties. En regardant l'image estimée, Win5-RB de la démo 1 montre une distribution proche de l'image de test (distribution où 0 et 1 sont clairement séparés), mais l'image estimée de la démo 2 est centrée sur 0 et 1. La distribution est basée sur. En d'autres termes, en apprenant d'une image de bruit à une image de bruit, on comprend que ce résultat est obtenu car il contribue à la minimisation de la fonction de perte en donnant une valeur proche d'un temps court plutôt que de donner 0 ou 1 clairement. Je vais. L'image de caractère manuscrite utilisée cette fois est proche d'une image binaire, et le biais est extrêmement grand, il est donc déduit qu'un tel résultat a été obtenu. En regardant l'image du résultat réel de l'estimation de Demo 2, on peut voir que l'image est un peu mince dans son ensemble, bien que la forme soit fermement saisie et que la distribution des valeurs de pixels ressemble à une image naturelle. Il semble que de meilleures performances sortiront quand il sera doux à gauche et à droite.
En introduisant l'application du Deep Learning au domaine de la réduction du bruit d'image, nous avons supprimé le bruit dans les cas où l'apprentissage est basé sur des images correctes sans bruit et dans les cas où seules des images de bruit sont disponibles, ce qui est proche du problème réel. Cette fois, nous nous sommes concentrés sur le bruit gaussien, mais l'article montre également qu'il s'agit d'une méthode efficace pour le bruit du sel de sésame et d'autres bruits.
Cette fois, nous avons effectué la suppression du bruit, mais je voudrais vous présenter non pas le niveau de bruit, mais aussi la restauration par Deep Learning quand il y a un gros défaut dans l'image.
<Référence> Article Qiita ・ [AI] Deep Metric Learning ・ Un piège que n'importe qui peut facilement créer un RPA ・ Un piège que quiconque peut construire un VBA peut facilement créer un RPA ・ J'ai créé un outil de vérification du codage UiPath [RPA] ・ La raison pour laquelle la RPA est si bonne que vous pouvez approfondir votre compréhension de la RPA ・ Livres recommandés par RPA ・ Les personnes qui conviennent au développement RPA, celles qui ne le sont pas ・ J'ai essayé d'automatiser la fabrication des sushis
démo