Coursera Machine Learning Challenge en Python: ex7-1 (Compression d'image avec clustering K-means)

Une série d'implémentation des tâches de programmation Machine Learning Matlab / Octave de Coursera en Python. Cette fois, nous allons effectuer la première tâche d'apprentissage non supervisé, le clustering moyen K.

Introduction: contenu de la tâche

L'image originale (.png) a 256 gradations pour chaque RVB et 16,77 millions de couleurs. Le défi consiste à classer ces informations de couleur en 16 clusters par regroupement moyen K pour créer une image 16 couleurs.

Installation de la bibliothèque PIL

Une bibliothèque appelée oreiller est utilisée pour le traitement d'image, alors installez-la. pip install pillow

La documentation de l'oreiller est ici [http://pillow.readthedocs.org/en/3.0.x/).

Premier code: Importer la bibliothèque

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

Chargez d'abord l'image

Utilisez PIL.Image.open () pour lire les données d'image et les charger dans un tableau numpy 3D de 128 x 128 x 3. Ceci est «remodelé (128 * 128, 3)» et aplati en une matrice bidimensionnelle de 16384 x 3 qui peut être passée au clustering.

img = np.array(Image.open('bird_small.png')) #img est une matrice 3D 128x128x3
img_flat = img.reshape(128*128,3)/255 #Convertir en une matrice bidimensionnelle 16384x3

Effectuer le clustering

Le clustering peut être fait en une seule fois KMeans.fit (data). Le paramètre KMeans spécifie «n_clusters = 16» à diviser en 16 clusters.

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

Voir les résultats

À la suite du regroupement, le cluster dans lequel chaque pixel a été classé est stocké dans model.labels_ (numéro 0-15), et la valeur du centre de gravité de chaque cluster est stockée dans model.cluster_centers_ (matrice 16x3). Vous pouvez l'utiliser pour créer une matrice avec la valeur de chaque pixel remplacée par le centre de gravité du cluster comme model.cluster_centers_ [model.labels_] (matrice à deux dimensions 16384 x 3). Remodeler (128, 128, 3) pour le reconvertir en une matrice tridimensionnelle de 128 x 128 x 3 qui peut être affichée dans l'image.

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

Cliquez ici pour l'image originale et l'image résultante. Vous pouvez voir qu'il a été réduit à 16 couleurs.

ex7-1.png ex7-2.png

Tous les codes

Le code complet est ici. C'est court.

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 est une matrice 3D 128x128x3
img_flat = img.reshape(128*128,3)/255 #Convertir en une matrice bidimensionnelle 16384x3

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

en conclusion

Quand j'étais étudiant en traitement d'image il y a 10 ans, j'ai implémenté le clustering moyen K en C ++, mais il semble que c'était un programme avec des centaines de lignes ... C'est un bon moment avec la bibliothèque en place.

Recommended Posts

Coursera Machine Learning Challenge en Python: ex7-1 (Compression d'image avec clustering K-means)
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Défis d'apprentissage automatique de Coursera en Python: ex3 (reconnaissance de nombres manuscrits avec récursivité logistique)
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Défis de Coursera Machine Learning en Python: ex5 (ajustement des paramètres de régularisation)
Coursera Machine Learning Challenge en Python: ex6 (Comment ajuster les paramètres SVM)
J'ai commencé l'apprentissage automatique avec le clustering Python, la compression et la visualisation de dimensions
Apprentissage automatique avec Python! Préparation
Tweet avec image en Python
Commencer avec l'apprentissage automatique Python
Apprentissage automatique par python (1) Classification générale
Python: prétraitement dans l'apprentissage automatique: présentation
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Amplifiez les images pour l'apprentissage automatique avec Python
Apprentissage automatique avec python (2) Analyse de régression simple
[python] Techniques souvent utilisées dans l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Traitez facilement des images en Python avec Pillow
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
Construction d'environnement AI / Machine Learning avec Python
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Apprentissage automatique à partir de Python Personal Memorandum Part2
Apprentissage automatique à partir de Python Personal Memorandum Part1
Extraire la couleur de l'objet dans l'image avec le clustering Mask R-CNN et K-Means
[Python] Collectez des images avec Icrawler pour l'apprentissage automatique [1000 feuilles]
Créer une image avec des caractères avec python (japonais)
Touchons une partie de l'apprentissage automatique avec Python
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Créez un environnement interactif pour l'apprentissage automatique avec Python
Apprenez le filtrage collaboratif avec les supports Coursera Machine Learning
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
[Python] Obtenez les nombres dans l'image graphique avec OCR
Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python
Convertissez l'image au format .zip en PDF avec Python
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Résumé du flux de base de l'apprentissage automatique avec Python
Tentative d'inclusion du modèle d'apprentissage automatique dans le package python
Entropie croisée à revoir dans les devoirs de la semaine 2 de Coursera Machine Learning
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Texte de cluster en Python
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Apprendre Python avec ChemTHEATER 05-1
Format d'image en Python
Apprendre Python avec ChemTHEATER 02
Apprendre Python avec ChemTHEATER 01
Traitement d'image avec Python
Apprentissage automatique Une histoire sur des personnes qui ne sont pas familiarisées avec GBDT utilisant GBDT en Python
Apprentissage automatique à l'aide de Jupyter Notebook dans l'environnement OCI Always Free (2019/12/17)
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Paramètres d'environnement d'apprentissage automatique basés sur Python3 sur Mac (coexistence avec Python2)
Traitement d'image avec Python (partie 2)
L'apprentissage automatique appris avec Pokemon