[PYTHON] Autres applications de l'apprentissage du dictionnaire

Aperçu

Implémentation de certaines des autres applications du chapitre 15 de Sparse Modeling.

carnet ch15-02.ipynb ch15-04.ipynb ch15-05.ipynb

résultat

_ K-SVD Séparation du dessin au trait et de la texture par analyse des composantes morphologiques locales (MCA) à l'aide d'un dictionnaire _ local_mca.png

_ Interpoler les pixels manquants avec une peinture locale avec un dictionnaire DCT redondant_ Peppers_recon.png

Les nombres sont [rapport signal / bruit de crête (PSNR)](https://ja.wikipedia.org/wiki/peak rapport signal / bruit)

_ K-Interpoler les pixels manquants par inpainting local avec le dictionnaire SVD_ Peppers_recon_KSVD.png

_ Suppression du bruit impulsionnel_ Peppers_inpulse_recon.png

Méthode

MCA local par dictionnaire K-SVD

Un bruit blanc avec un écart type de 10 a été ajouté à Barbara pour créer une image de test. barbara_sig10.png

J'ai appris un dictionnaire avec K-SVD. La taille du patch est de 8 $ \ fois 8 $. Le nombre d'atomes a été fixé à 256. Les conditions d'arrêt pour la poursuite de correspondance orthogonale (OMP) ont été fixées au nombre d'atomes $ k_ {0} = 4 $ et à la tolérance $ \ epsilon = 8 ^ {2} \ times 20 ^ {2} $. Le nombre de répétitions de K-SVD a été fixé à 25.

Le nombre total de correctifs extraits de l'image était de 255 025. En raison du manque de mémoire, le nombre de correctifs utilisés pour une itération de K-SVD a été réduit à 1/10. Les correctifs utilisés pour K-SVD ont été extraits aléatoirement à chaque itération.

Dictionnaire K-SVD A_KSVD_sig10.png

L'activité de l'atome a été calculée comme suit. $ Activity(\mathbf{a}) = \Sigma_{i=2}^{n} \Sigma_{j=1}^{n} |a[i, j] - a[i-1, j]| + \Sigma_{i=1}^{n} \Sigma_{j=2}^{n} |a[i, j] - a[i, j-1]| $La valeur maximale de l'activité a été normalisée à 1. Les atomes à haute activité étaient des textures et les atomes à faible activité étaient des atomes de dessin au trait.

Activité de l'atome (0 pour le noir, 1 pour le blanc) activity.png Les atomes avec une activité inférieure à 0,3 étaient des dessins au trait et les autres étaient des textures. activity_threshold.png Le gris foncé est l'atome de dessin au trait et le gris clair est l'atome de texture.

L'image de dessin de ligne peut être obtenue à partir de l'atome de dessin de ligne et du coefficient de son expression éparse. L'image de la texture peut être obtenue à partir de l'atome de la texture et du coefficient de son expression clairsemée.

Impression d'image et suppression du bruit impulsionnel

Ajout d'un bruit blanc avec un écart type de 20 aux poivrons. 25%, 50% et 75% des pixels ont été remis au hasard à 0 et utilisés comme image de test. La position du pixel manquant était connue. Peppers_inpaint.png

Peinture locale avec dictionnaire DCT redondant

La taille du patch est de 8 $ \ fois 8 $. Le nombre d'atomes a été fixé à 256. OMP modifié pour masquer les pixels manquants et trouver une représentation éparse. Les conditions d'arrêt OMP sont $ k_ {0} = 4 $ et $ \ epsilon = (8 ^ {2} -p) \ fois 20 ^ {2} \ fois 1,1 $. $ p $ est le nombre de pixels manquants dans le patch. L'image peut être restaurée à partir de l'expression éparse souhaitée.

Peinture locale avec le dictionnaire K-SVD

Le K-SVD a été modifié comme suit.

  1. Modification de l'OMP pour masquer les pixels manquants et demande une représentation clairsemée. La condition d'arrêt OMP était la même que pour une peinture locale avec un dictionnaire DCT redondant.
  2. Après interpolation des pixels manquants en utilisant la représentation éparse ci-dessus, les représentations atomiques et éparses ont été mises à jour avec K-SVD.
  3. Répété 2 et 3.

La valeur initiale de K-SVD était un dictionnaire DCT redondant. Le nombre de répétitions était de 15. 12 800 patchs sélectionnés au hasard ont été utilisés pour une itération de K-SVD.

Dictionnaire K-SVD obtenu à partir d'images avec une perte de 25% A_KSVD_25.png

Dictionnaire K-SVD obtenu à partir d'images avec 50% de perte A_KSVD_50.png

Dictionnaire K-SVD obtenu à partir d'images manquantes à 75% A_KSVD_75.png

Suppression du bruit impulsif

La valeur de pixel de 10% des pixels a été augmentée de manière aléatoire de +50 ou -50 pour obtenir une image de test. La valeur du pixel a été coupée à un maximum de 255 et un minimum de 0. La différence avec inpainting est que la position du pixel manquant n'est pas connue.

Peppers_inpulse.png

Le bruit impulsionnel a été éliminé avec un filtre médian. La taille du noyau du filtre médian est de 3 $ \ fois 3 $. Les pixels dans lesquels la valeur absolue de la différence entre l'image bruyante et l'image supprimée par le filtre médian était supérieure à 27 ont été définis comme des pixels contaminés par un bruit impulsionnel.

mask_median.png

Le PSNR a été amélioré en appliquant un filtre médian uniquement aux pixels détectés par le masque d'estimation. Il en va de même pour la suppression du bruit OMP à l'aide d'un dictionnaire DCT redondant. La taille du patch pour la suppression du bruit OMP par le dictionnaire DCT redondant est de 8 $ \ fois 8 $, le nombre d'atomes est de 256, la condition d'arrêt OMP est $ k_ {0} = 256 $, $ \ epsilon = (8 ^ {2} -p) \ fois 5 ^ {2} \ fois 1,1 $.

Application non mise en œuvre

Résumé

référence

text.jpg

Recommended Posts

Autres applications de l'apprentissage du dictionnaire
Algorithme d'apprentissage du dictionnaire
Deep learning 1 Pratique du deep learning
Dictionnaire des arguments de mots clés
Bases de l'apprentissage automatique (mémoire)
Renforcement de l'apprentissage 2 Installation de chainerrl
Deep running 2 Réglage de l'apprentissage profond
Apprendre avec l'enseignant 1 Principes de base de l'apprentissage avec l'enseignant (classification)
Importance des ensembles de données d'apprentissage automatique
Premier mois d'apprentissage en programmation
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Extension du dictionnaire python par argument
Python: Application de l'apprentissage supervisé (retour)
Apprentissage automatique ③ Résumé de l'arbre de décision
Grammaire de base du système Python3 (dictionnaire)
Apprendre l'histoire des débutants de la transcendance de la programmation
Impressions de personnes ayant de l'expérience dans d'autres langues apprenant Python à l'aide de PyQ