Fashion-MNIST è un dataset di immagini di articoli di Zalando, composto da un training set di 60,000 esempi e un test set di 10,000 esempi. Ogni esempio è un'immagine in scala di grigi 28×28, associata a un'etichetta da 10 classi. Il dataset funge da sostituzione diretta per il dataset MNIST originale per il benchmarking degli algoritmi di apprendimento automatico, fornendo un'alternativa più impegnativa a causa della sua complessità e variabilità nelle immagini relative alla moda.
Per utilizzare in pratica il dataset Fashion-MNIST nella piattaforma AI di Google Cloud, è necessario seguire diversi passaggi strutturati che comprendono la preparazione dei dati, l'addestramento del modello, l'implementazione e la valutazione. Ciascuna di queste fasi richiede una comprensione completa sia del dataset che dell'ambiente Google Cloud.
Passaggio 1: configurazione dell'ambiente Google Cloud
Prima di utilizzare il set di dati, assicurati di avere un account Google Cloud. Imposta un nuovo progetto nella Google Cloud Console. Abilita la fatturazione per il tuo progetto e attiva l'API Cloud AI Platform. Questa configurazione è importante perché ti consente di sfruttare la solida infrastruttura di Google per le attività di apprendimento automatico.
1. Crea un progetto Google Cloud: Vai alla Google Cloud Console e crea un nuovo progetto. Assegna un nome univoco al tuo progetto per una facile identificazione.
2. Abilita le API: Vai alla dashboard API e servizi e abilita l'API Cloud AI Platform. Questa API è essenziale per distribuire modelli di apprendimento automatico su Google Cloud.
3. Installa Cloud SDK: Scarica e installa Google Cloud SDK sul tuo computer locale. Questo SDK fornisce lo strumento da riga di comando `gcloud`, necessario per interagire con le tue risorse Google Cloud.
Fase 2: preparazione del dataset Fashion-MNIST
Il dataset Fashion-MNIST è accessibile da varie fonti, tra cui il repository ufficiale GitHub. È essenziale preelaborare il dataset per assicurarsi che sia nel formato corretto per i modelli di training su Google Cloud.
1. Scarica il set di dati: Il set di dati è disponibile in più formati, tra cui CSV e array NumPy. Per gli utenti TensorFlow, può essere caricato direttamente tramite il modulo `tensorflow.keras.datasets`.
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. Pre-elaborazione dei dati: Normalizzare i valori dei pixel delle immagini all'intervallo [0, 1] dividendo per 255. Questo passaggio è importante per garantire che il modello converga in modo efficiente durante l'addestramento.
python train_images = train_images/255.0 test_images = test_images/255.0
3. Rimodellare e aumentare i dati: A seconda dell'architettura del modello, potrebbe essere necessario rimodellare i dati. Inoltre, prendi in considerazione tecniche di aumento dei dati come rotazione, zoom e capovolgimento orizzontale per migliorare la robustezza del modello.
Fase 3: Sviluppo del modello
Sviluppare un modello di apprendimento automatico adatto al dataset Fashion-MNIST. Le reti neurali convoluzionali (CNN) sono una scelta popolare per la loro efficacia nelle attività di classificazione delle immagini.
1. Definire l'architettura del modello: Usa TensorFlow o PyTorch per definire un modello CNN. Un'architettura tipica potrebbe includere più strati convoluzionali seguiti da strati di max-pooling e uno strato denso completamente connesso.
python model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
2. Compila il modello: Scegli un ottimizzatore, una funzione di perdita e delle metriche appropriate. Per la classificazione multi-classe, `sparse_categorical_crossentropy` è comunemente usato.
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. Allena il modello: Adatta il modello ai dati di training. Utilizza i dati di convalida per monitorare le prestazioni del modello ed evitare l'overfitting.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
Fase 4: distribuzione del modello su Google Cloud AI Platform
Una volta addestrato il modello, il passo successivo è distribuirlo su Google Cloud AI Platform per previsioni scalabili.
1. Salva il modello: Esporta il modello addestrato in un formato compatibile con Google Cloud, ad esempio TensorFlow SavedModel.
python model.save('fashion_mnist_model')
2. Carica il modello su Google Cloud Storage: Utilizzare lo strumento da riga di comando `gsutil` per caricare il modello su un bucket di Google Cloud Storage.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. Crea un modello sulla piattaforma AI: Nella Google Cloud Console, vai su AI Platform > Models e crea un nuovo modello. Specifica il nome del modello e la regione.
4. Distribuisci una versione del modello: Crea una nuova versione del modello specificando il percorso Cloud Storage del SavedModel. Configura il tipo di macchina e le opzioni di ridimensionamento in base alle tue esigenze di previsione.
5. Prova la distribuzione: Utilizza il servizio di previsione della piattaforma AI per testare il modello distribuito. Puoi inviare richieste HTTP con dati di immagine all'endpoint del modello e ricevere previsioni.
python from google.cloud import aiplatform project = 'your-project-id' endpoint_id = 'your-endpoint-id' location = 'us-central1' aiplatform.init(project=project, location=location) endpoint = aiplatform.Endpoint(endpoint_id=endpoint_id) # Example prediction response = endpoint.predict(instances=[test_images[0].tolist()]) print(response)
Fase 5: Valutazione e iterazione del modello
Dopo l'implementazione, è importante valutare le prestazioni del modello e ripetere la progettazione per migliorarne precisione ed efficienza.
1. Monitorare le prestazioni del modello: Utilizza gli strumenti di monitoraggio di Google Cloud per tracciare le metriche delle prestazioni del modello, come latenza, produttività e accuratezza delle previsioni. Questi dati sono preziosi per identificare colli di bottiglia e aree di miglioramento.
2. Test A/B: Condurre test A/B per confrontare diverse versioni del modello. Questo approccio aiuta a comprendere l'impatto delle modifiche e a selezionare il modello con le migliori prestazioni.
3. Integrazione e distribuzione continua (CI/CD): Implementare pratiche CI/CD per automatizzare la distribuzione di nuove versioni del modello. Questa configurazione assicura che i miglioramenti siano rapidamente forniti alla produzione.
4. Ciclo di feedback: Stabilisci un ciclo di feedback con gli utenti finali per raccogliere informazioni sulle previsioni del modello. Utilizza questo feedback per perfezionare il modello e migliorarne la pertinenza per le applicazioni del mondo reale.
5. Riqualificazione con nuovi dati: Aggiornare regolarmente il modello con nuovi dati per mantenerne l'accuratezza nel tempo. Questa pratica è particolarmente importante nel settore della moda, dove le tendenze e gli stili evolvono rapidamente.
Il dataset Fashion-MNIST fornisce un caso d'uso pratico per l'implementazione di modelli di classificazione delle immagini sulla piattaforma AI di Google Cloud. Seguendo i passaggi descritti, è possibile sfruttare efficacemente l'infrastruttura di Google per creare, implementare e mantenere modelli di apprendimento automatico scalabili. Questo processo non solo migliora l'accuratezza e le prestazioni del modello, ma ne garantisce anche l'applicabilità a scenari reali nel settore della moda.
Google aggiorna frequentemente la sua piattaforma AI (dal 2024 si è evoluta nella piattaforma Vertex AI). Se riscontri problemi con questi aggiornamenti, puoi anche provare il seguente codice:
python import google.auth import google.auth.transport.requests import requests import json from tensorflow.keras.datasets import fashion_mnist import numpy as np # Load and preprocess Fashion MNIST data (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() test_images = test_images/255.0 # Add channel dimension to all test images test_images = test_images.reshape(-1, 28, 28, 1) # Prepare your model and project details project_id = 'project_id' model_name = 'modelname' model_version = 'V1' region = 'europe-west3' # AI Platform prediction endpoint URL url = f'https://{region}-ml.googleapis.com/v1/projects/{project_id}/models/{model_name}/versions/{model_version}:predict' # Authenticate and get the auth token credentials, _ = google.auth.default() auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) auth_token = credentials.token # Set up headers for the request headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } class_labels = [ "T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot" ] # Loop through the first 6 test images for i in range(6): # Prepare the instance for prediction instance = test_images[i].tolist() # Make the request body data = json.dumps({"instances": [instance]}) # Send the request response = requests.post(url, headers=headers, data=data) response_json = response.json() # Extract the predictions predicted_probs = response_json['predictions'][0] # Get the index of the highest probability predicted_index = np.argmax(predicted_probs) predicted_label = class_labels[predicted_index] predicted_probability = predicted_probs[predicted_index] # Print the result in a more readable format print(response_json) print(f"Image {i + 1}: Predicted class: {predicted_label} ({predicted_index}) with probability {predicted_probability:.10f}")
Altre domande e risposte recenti riguardanti EITC/AI/GCML Google Cloud Machine Learning:
- Se si utilizza un modello di Google e lo si addestra sulla propria istanza, Google mantiene i miglioramenti apportati dai dati di addestramento?
- Come si fa a sapere quale modello di ML utilizzare prima di addestrarlo?
- Che cos'è un compito di regressione?
- Come è possibile passare dalle tabelle Vertex AI a quelle AutoML?
- È possibile utilizzare Kaggle per caricare dati finanziari ed eseguire analisi statistiche e previsioni utilizzando modelli econometrici come R-quadrato, ARIMA o GARCH?
- L'apprendimento automatico può essere utilizzato per prevedere il rischio di malattie coronariche?
- Quali sono i cambiamenti effettivi dovuti al rebranding di Google Cloud Machine Learning in Vertex AI?
- Quali sono le metriche di valutazione delle prestazioni di un modello?
- Cos'è la regressione lineare?
- È possibile combinare diversi modelli di ML e creare un'IA master?
Visualizza altre domande e risposte in EITC/AI/GCML Google Cloud Machine Learning