[PYTHON] Andere Anwendungen des Wörterbuchlernens

Überblick

Implementierte einige der anderen Anwendungen in Kapitel 15 der Sparse Modeling.

Notizbuch ch15-02.ipynb ch15-04.ipynb ch15-05.ipynb

Ergebnis

_ K-SVD Trennung von Strichzeichnung und Textur durch lokale Analyse morphologischer Komponenten (MCA) unter Verwendung eines Wörterbuchs _ local_mca.png

_ Interpolieren Sie fehlende Pixel mit lokaler Inpainting mit redundantem DCT-Wörterbuch_ Peppers_recon.png

Die Zahlen sind [Spitzensignal-Rausch-Verhältnis (PSNR)](https://ja.wikipedia.org/wiki/peak Signal-Rausch-Verhältnis)

_ K-Interpoliere fehlende Pixel durch lokales Inpainting mit dem SVD-Wörterbuch_ Peppers_recon_KSVD.png

Entfernung von Impulsrauschen Peppers_inpulse_recon.png

Methode

Lokales MCA von K-SVD Wörterbuch

Barbara wurde weißes Rauschen mit einer Standardabweichung von 10 hinzugefügt, um ein Testbild zu erstellen. barbara_sig10.png

Ich habe ein Wörterbuch mit K-SVD gelernt. Die Patchgröße beträgt $ 8 \ mal 8 $. Die Anzahl der Atome wurde auf 256 eingestellt. Die Stoppbedingungen für die Verfolgung des orthogonalen Matchings (OMP) wurden auf die Anzahl der Atome $ k_ {0} = 4 $ und die Toleranz $ \ epsilon = 8 ^ {2} \ mal 20 ^ {2} $ eingestellt. Die Anzahl der Wiederholungen von K-SVD wurde auf 25 eingestellt.

Die Gesamtzahl der aus dem Bild extrahierten Patches betrug 255.025. Aufgrund von Speichermangel wurde die Anzahl der für eine Iteration von K-SVD verwendeten Patches auf 1/10 reduziert. Die für K-SVD verwendeten Patches wurden bei jeder Iteration zufällig extrahiert.

K-SVD Wörterbuch A_KSVD_sig10.png

Die Aktivität des Atoms wurde wie folgt berechnet. $ 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]| $Der maximale Aktivitätswert wurde auf 1 standardisiert. Atome mit hoher Aktivität waren Texturen, und Atome mit niedriger Aktivität waren Strichzeichnungsatome.

Atomaktivität (0 für Schwarz, 1 für Weiß) activity.png Atome mit einer Aktivität von weniger als 0,3 waren Strichzeichnungen und die anderen waren Texturen. activity_threshold.png Dunkelgrau ist das Strichzeichnungsatom und Hellgrau ist das Texturatom.

Das Strichzeichnungsbild kann aus dem Strichzeichnungsatom und dem Koeffizienten seines spärlichen Ausdrucks erhalten werden. Das Bild der Textur kann aus dem Atom der Textur und dem Koeffizienten ihres spärlichen Ausdrucks erhalten werden.

Bildverunreinigung und Entfernung von Impulsrauschen

Weißes Rauschen mit einer Standardabweichung von 20 zu Paprika hinzugefügt. 25%, 50% und 75% der Pixel wurden zufällig auf 0 gelöscht und als Testbild verwendet. Die Position des fehlenden Pixels war bekannt. Peppers_inpaint.png

Lokales Inpainting mit redundantem DCT-Wörterbuch

Die Patchgröße beträgt $ 8 \ mal 8 $. Die Anzahl der Atome wurde auf 256 eingestellt. OMP wurde geändert, um fehlende Pixel zu maskieren und eine spärliche Darstellung zu finden. Die OMP-Stoppbedingungen sind $ k_ {0} = 4 $ und $ \ epsilon = (8 ^ {2} -p) \ mal 20 ^ {2} \ mal 1,1 $. $ p $ ist die Anzahl der fehlenden Pixel im Patch. Das Bild kann aus dem gewünschten spärlichen Ausdruck wiederhergestellt werden.

Lokale Inpainting mit K-SVD-Wörterbuch

Die K-SVD wurde wie folgt modifiziert.

  1. Ändern Sie den OMP, um die fehlenden Pixel zu maskieren, und fordern Sie eine spärliche Darstellung an. Die OMP-Stoppbedingung war dieselbe wie beim lokalen Inpainting mit einem redundanten DCT-Wörterbuch.
  2. Nach dem Interpolieren der fehlenden Pixel unter Verwendung der obigen spärlichen Darstellung wurden die Atom- und spärlichen Darstellungen mit K-SVD aktualisiert.
  3. Wiederholen Sie 2 und 3.

Der Anfangswert von K-SVD war ein redundantes DCT-Wörterbuch. Die Anzahl der Wiederholungen betrug 15. 12.800 zufällig ausgewählte Patches wurden für eine Iteration von K-SVD verwendet.

K-SVD-Wörterbuch aus Bildern mit 25% Verlust A_KSVD_25.png

K-SVD-Wörterbuch aus Bildern mit 50% Verlust A_KSVD_50.png

K-SVD-Wörterbuch aus Bildern, bei denen 75% fehlen A_KSVD_75.png

Entfernung von Impulsgeräuschen

Der Pixelwert von 10% der Pixel wurde zufällig um +50 oder -50 erhöht, um ein Testbild zu erhalten. Der Pixelwert wurde auf ein Maximum von 255 und ein Minimum von 0 gekürzt. Der Unterschied zum Inpainting besteht darin, dass die Position des fehlenden Pixels nicht bekannt ist.

Peppers_inpulse.png

Das Impulsrauschen wurde mit einem Medianfilter entfernt. Die Kernelgröße des Medianfilters beträgt $ 3 \ times 3 $. Pixel, bei denen der Absolutwert der Differenz zwischen dem verrauschten Bild und dem vom Medianfilter entfernten Bild größer als 27 war, wurden als mit Impulsrauschen kontaminierte Pixel definiert.

mask_median.png

Das PSNR wurde verbessert, indem ein Medianfilter nur auf die von der Schätzmaske erfassten Pixel angewendet wurde. Gleiches gilt für die Entfernung von OMP-Rauschen unter Verwendung eines redundanten DCT-Wörterbuchs. Die Patchgröße für die Entfernung von OMP-Rauschen durch ein redundantes DCT-Wörterbuch beträgt $ 8 \ mal 8 $, die Anzahl der Atome beträgt 256, die OMP-Stoppbedingung beträgt $ k_ {0} = 256 $, $ \ epsilon = (8 ^ {2} -p) \ mal 5 ^ {2} \ mal 1.1 $.

Nicht implementierte Anwendung

Zusammenfassung

Referenz

text.jpg

Recommended Posts

Andere Anwendungen des Wörterbuchlernens
Wörterbuch-Lernalgorithmus
Deep Learning 1 Übung des Deep Learning
Wörterbuch der Schlüsselwortargumente
Grundlagen des maschinellen Lernens (Denkmal)
Stärkung des Lernens 2 Installation von Chainerrl
Deep Running 2 Tuning von Deep Learning
Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Bedeutung von Datensätzen für maschinelles Lernen
Erster Monat des Programmierlernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Erweiterung des Python-Wörterbuchs um Argumente
Python: Anwendung des überwachten Lernens (Rückkehr)
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
Lerngeschichte des Programmierens von Transzendenz-Anfängern
Impressionen von Personen mit Erfahrung in anderen Sprachen, die Python mit PyQ lernen