Coursera Machine Learning Challenge in Python: ex7-1 (Bildkomprimierung mit K-bedeutet Clustering)

Eine Reihe von Implementierungen der Matlab / Octave-Programmieraufgaben von Coursera für maschinelles Lernen in Python. Dieses Mal werden wir die erste Aufgabe des unbeaufsichtigten Lernens erledigen, das K-durchschnittliche Clustering.

Einleitung: Inhalt der Aufgabe

Das Originalbild (.png) hat 256 Abstufungen für jedes RGB und 16,77 Millionen Farben. Die Herausforderung besteht darin, diese Farbinformationen durch K-Durchschnittscluster in 16 Cluster zu klassifizieren, um ein 16-Farben-Bild zu erstellen.

Installieren der PIL-Bibliothek

Eine Bibliothek namens Pillow wird für die Bildverarbeitung verwendet. Installieren Sie sie daher. pip install pillow

Die Dokumentation zum Kissen finden Sie hier [http://pillow.readthedocs.org/en/3.0.x/].

Erster Code: Bibliothek importieren

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

Laden Sie zuerst das Bild

Verwenden Sie PIL.Image.open (), um die Bilddaten zu lesen und in ein 128 x 128 x 3 3D-Numpy-Array zu laden. Dies wird "umgeformt (128 * 128, 3)" und zu einer zweidimensionalen Matrix von 16384 x 3 abgeflacht, die an das Clustering übergeben werden kann.

img = np.array(Image.open('bird_small.png')) #img ist eine 128x128x3 3D-Matrix
img_flat = img.reshape(128*128,3)/255 #In eine zweidimensionale 16384x3-Matrix konvertieren

Führen Sie das Clustering durch

Clustering kann in einem Schuss "KMeans.fit (Daten)" durchgeführt werden. Der Parameter KMeans gibt "n_clusters = 16" an, um in 16 Cluster zu unterteilen.

model = KMeans(n_clusters=16).fit(img_flat)

Ergebnisse anzeigen

Als Ergebnis der Clusterbildung wird in "model.labels_" (Nummer 0-15) gespeichert, in welchen Cluster jedes Pixel klassifiziert wurde, und der Wert des Schwerpunkts jedes Clusters wird in "model.cluster_centers_" (16x3-Matrix) gespeichert. Sie können dies verwenden, um eine Matrix zu erstellen, bei der der Wert jedes Pixels durch den Schwerpunkt des Clusters als "model.cluster_centers_ [model.labels_]" (zweidimensionale Matrix 16384 x 3) ersetzt wird. Reshape (128, 128, 3), um dies wieder in eine dreidimensionale Matrix von 128 x 128 x 3 umzuwandeln, die im Bild angezeigt werden kann.

img_comp = model.cluster_centers_[model.labels_].reshape(128,128,3)
plt.imshow(img_comp)

Klicken Sie hier für das Originalbild und das resultierende Bild. Sie können sehen, dass es auf 16 Farben reduziert wurde.

ex7-1.png ex7-2.png

Alle Codes

Der vollständige Code ist hier. Es ist kurz.

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

img = np.array(Image.open('bird_small.png')) #img ist eine 128x128x3 3D-Matrix
img_flat = img.reshape(128*128,3)/255 #In eine zweidimensionale 16384x3-Matrix konvertieren

model = KMeans(n_clusters=16).fit(img_flat)
img_comp = model.cluster_centers_[model.labels_].reshape(128,128,3)
plt.imshow(img_comp)

abschließend

Als ich vor 10 Jahren als Student Bildverarbeitung studierte, habe ich K-Average-Clustering in C ++ von Grund auf neu implementiert, aber es scheint, dass es ein Programm mit Hunderten von Zeilen war ... Es ist eine gute Zeit mit der Bibliothek.

Recommended Posts

Coursera Machine Learning Challenge in Python: ex7-1 (Bildkomprimierung mit K-bedeutet Clustering)
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex3 (Handschriftliche Zahlenerkennung mit logistischer Rekursion)
Coursera-Herausforderungen für maschinelles Lernen in Python: ex7-2 (Primäranalyse)
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex5 (Anpassung der Regularisierungsparameter)
Coursera Machine Learning Challenge in Python: ex6 (Anpassen von SVM-Parametern)
Ich habe mit Python Clustering & Dimension Compression & Visualization mit maschinellem Lernen begonnen
Maschinelles Lernen mit Python! Vorbereitung
Tweet mit Bild in Python
Beginnend mit maschinellem Python-Lernen
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Verstärken Sie Bilder für maschinelles Lernen mit Python
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Aufbau einer KI / maschinellen Lernumgebung mit Python
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Extrahieren Sie die Farbe des Objekts im Bild mit Mask R-CNN und K-Means Clustering
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Bildersammlung Python-Skript zum Erstellen von Datensätzen für maschinelles Lernen
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Lernen Sie das kollaborative Filtern zusammen mit Coursera-Materialien für maschinelles Lernen
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Tool MALSS (Anwendung), das maschinelles Lernen in Python unterstützt
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Tool MALSS (Basic), das maschinelles Lernen in Python unterstützt
Konvertieren Sie das Bild in .zip mit Python in PDF
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
Cross-Entropie zur Überprüfung in Coursera Machine Learning Woche 2 Aufgaben
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Clustertext in Python
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Python lernen mit ChemTHEATER 05-1
Bildformat in Python
Python lernen mit ChemTHEATER 02
Python lernen mit ChemTHEATER 01
Bildverarbeitung mit Python
Maschinelles Lernen Eine Geschichte über Menschen, die mit GBDT in GBDT in Python nicht vertraut sind
Maschinelles Lernen mit Jupyter Notebook in einer OCI Always Free-Umgebung (17.12.2019)
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)
Bildverarbeitung mit Python (Teil 2)
Maschinelles Lernen mit Pokemon gelernt