Introducció
En aquest projecte, aprendrem a construir un model de Machine Learning per a la classificació d'imatges. La classificació d'imatges és una tasca fonamental en el camp del reconeixement de patrons i la visió per computador. Consisteix a assignar una etiqueta a una imatge d'entre un conjunt de categories predefinides.
Objectius del Projecte
- Comprendre el procés de classificació d'imatges.
- Aprendre a preparar i preprocessar un conjunt de dades d'imatges.
- Construir i entrenar un model de xarxa neuronal convolucional (CNN).
- Avaluar el rendiment del model.
- Implementar tècniques de millora del model.
Pas 1: Preparació del Conjunt de Dades
1.1. Descarregar el Conjunt de Dades
Utilitzarem el conjunt de dades CIFAR-10, que conté 60,000 imatges de 32x32 píxels en 10 classes diferents.
import tensorflow as tf from tensorflow.keras.datasets import cifar10 # Descarregar el conjunt de dades CIFAR-10 (x_train, y_train), (x_test, y_test) = cifar10.load_data()
1.2. Exploració del Conjunt de Dades
import matplotlib.pyplot as plt # Mostrar algunes imatges del conjunt de dades fig, axes = plt.subplots(1, 5, figsize=(10, 2)) for i in range(5): axes[i].imshow(x_train[i]) axes[i].set_title(f'Etiqueta: {y_train[i][0]}') axes[i].axis('off') plt.show()
1.3. Preprocessament de les Imatges
Normalitzarem les imatges per tenir valors entre 0 i 1.
Pas 2: Construcció del Model
2.1. Definir l'Arquitectura de la Xarxa Neuronal Convolucional (CNN)
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), MaxPooling2D((2, 2)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)), Conv2D(128, (3, 3), activation='relu'), Flatten(), Dense(128, activation='relu'), Dropout(0.5), Dense(10, activation='softmax') ])
2.2. Compilar el Model
2.3. Entrenar el Model
Pas 3: Avaluació del Model
3.1. Avaluar el Rendiment
test_loss, test_acc = model.evaluate(x_test, y_test) print(f'Precisió en el conjunt de test: {test_acc:.2f}')
3.2. Visualitzar la Pèrdua i la Precisió
plt.plot(history.history['accuracy'], label='Precisió en entrenament') plt.plot(history.history['val_accuracy'], label='Precisió en validació') plt.xlabel('Època') plt.ylabel('Precisió') plt.legend() plt.show() plt.plot(history.history['loss'], label='Pèrdua en entrenament') plt.plot(history.history['val_loss'], label='Pèrdua en validació') plt.xlabel('Època') plt.ylabel('Pèrdua') plt.legend() plt.show()
Pas 4: Millora del Model
4.1. Augmentació de Dades
L'augmentació de dades ajuda a millorar el rendiment del model generant noves imatges a partir de les existents.
from tensorflow.keras.preprocessing.image import ImageDataGenerator datagen = ImageDataGenerator( rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True ) datagen.fit(x_train)
4.2. Reentrenar el Model amb Augmentació de Dades
history_aug = model.fit(datagen.flow(x_train, y_train, batch_size=32), epochs=10, validation_data=(x_test, y_test))
Conclusió
En aquest projecte, hem après a construir un model de classificació d'imatges utilitzant una xarxa neuronal convolucional (CNN). Hem explorat el conjunt de dades CIFAR-10, preprocessat les imatges, construït i entrenat el model, i avaluat el seu rendiment. També hem implementat tècniques d'augmentació de dades per millorar el rendiment del model.
Aquest projecte proporciona una base sòlida per a la classificació d'imatges i pot ser ampliat amb tècniques més avançades com xarxes neuronals profundes (Deep Learning) i transfer learning per a millorar encara més els resultats.
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus