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
