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

  1. Comprendre el procés de classificació d'imatges.
  2. Aprendre a preparar i preprocessar un conjunt de dades d'imatges.
  3. Construir i entrenar un model de xarxa neuronal convolucional (CNN).
  4. Avaluar el rendiment del model.
  5. 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.

x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

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

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

2.3. Entrenar el Model

history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

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

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats