Questa versione legacy di AutoML Vision è deprecata e non sarà più disponibile su Google Cloud dopo il 23 gennaio 2024. Tutte le funzionalità della versione precedente di AutoML Vision e le nuove funzionalità sono disponibili sulla piattaforma Vertex AI. Per scoprire come eseguire la migrazione delle risorse, vedi Migrazione a Vertex AI.

Tutorial sul deployment di Edge per iOS (Core ML)

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Cosa creerai

In questo tutorial scaricherai un modello Core ML personalizzato esportato (.mlmodel). Quindi eseguirai un'app per iOS predefinita che utilizza il modello per identificare le immagini dei fiori.

immagine dell'app modificata

Obiettivi

In questa procedura dettagliata end-to-end di un video utilizzerai il codice per:

  • Esegui un modello Core ML preaddestrato in un'app per iOS.

Panoramica

Con il framework ML ML, puoi utilizzare un modello di machine learning addestrato per classificare i dati di input. Il framework Vision funziona con Core ML per applicare modelli di classificazione alle immagini e per pre-elaborare queste immagini al fine di semplificare e rendere più affidabili le attività di machine learning.

Prima di iniziare

Scarica un modello Edge generale

  1. Scarica una cartella contenente un modello di ML base preaddestrato. In questo tutorial utilizzerai questo modello.

  2. Decomprimi il file ZIP scaricato.

  3. Prima di iniziare il tutorial, vai alla directory del progetto principale:

    cd ClassifyingImagesWithVisionAndCoreML
    Eseguirai tutti i seguenti esempi di codice da questa directory.

Addestra ed esporta un modello Edge personalizzato

Prima di continuare, completa la guida rapida del modello di dispositivo Edge con le seguenti modifiche:

  • Utilizza il set di dati dei fiori fornito o il tuo set di dati.
  • Nel passaggio Addestra il modello, seleziona l'opzione della radio Dispositivo periferico.
  • Nel passaggio Esporta il modello, segui le istruzioni per esportare un modello di ML principale.

Utilizzerai il file Core ML model.mlmodel risultante per eseguire una versione personalizzata dell'app per iOS esistente.

Configura l'app per iOS

L'app demo per iOS richiede diversi strumenti aggiuntivi:

  1. Xcode
  2. Strumenti a riga di comando Xcode

Scarica Xcode

Utilizza il seguente link per scaricare Xcode sulla tua macchina.

Installa strumenti X riga di comando

Installa gli strumenti a riga di comando Xcode eseguendo questo comando nella riga di comando:

xcode-select --install

Apri il progetto

Apri il progetto con Xcode. Puoi aprire il progetto tramite la riga di comando o utilizzando la console di Google Cloud Platform. Per aprire il progetto utilizzando la riga di comando, esegui il comando seguente:

open ./Vision+ML\ Example.xcodeproj

Esegui l'app originale

Per avviare l'app nel simulatore e ricevere annotazioni relative alle immagini, procedi nel seguente modo:

  1. Avvia l'app selezionando il pulsante Riproduci Icona di riproduzione xcode nell'angolo in alto a sinistra della finestra Xcode.
  2. Puoi fornire un'immagine della previsione all'app in due modi:
    • Scattare una foto con la fotocamera del dispositivo oppure
    • aggiungi foto alla raccolta del dispositivo trascinandole nella finestra del simulatore

L'app mostra le prime due categorie di classificazione in base al punteggio di affidabilità assegnato dal modello.

Il risultato dovrebbe mostrare annotazioni simili alle seguenti:

classificazioni utilizzando l'app originale generica: mobili, frutta, piante

Esegui l'app personalizzata

L'app originale utilizza un modello Core ML che classifica le immagini in una delle 1000 classi ImageNet generiche (animale, frutta, arredamento, piante e così via) utilizzando MobileNet standard.

Modifica l'app in modo che utilizzi il modello addestrato con le seguenti categorie di immagini di fiori personalizzate:

  • margherita
  • dente di leone
  • rose
  • girasoli
  • tulipani

Aggiungi i file del modello al progetto

  1. Scarica il tuo modello di fiore personalizzato (Esportato ML ML model.mlmodel) che puoi completare completando la Guida rapida al modello di dispositivo Edge. I file model.mlmodel e dict.txt dell'esportazione del modello Core ML si trovano nella posizione di Google Cloud Storage specificata.

  2. Rinomina il modello personalizzato in AutoML.mlmodel.

  3. Elimina il modello esistente dal progetto (MobileNet.mlmodel).

  4. Aggiungi il modello personalizzato al progetto nella cartella Vision+ML Example.

    trascina il modello personalizzato in un'immagine Xcode

  5. Modifica la riga 30 in ImageClassificationViewController. Rimuovi:

    let model = try VNCoreMLModel(for: MobileNet().model)

    Sostituisci questa riga con:

    let model = try VNCoreMLModel(for: AutoML().model)

Esegui la tua app modello personalizzata

Per riavviare l'app nel simulatore, seleziona il pulsante riproduci Icona di riproduzione xcode nell'angolo in alto a sinistra della finestra Xcode.

Per testare le modifiche, aggiungi i file immagine dalla directory flower_photos/ e ottieni le previsioni.

I risultati dovrebbero essere simili ai seguenti:

immagine dell'app modificata

Per provare il modello, aggiungi le immagini dei dati di addestramento scaricate in precedenza o scaricale da una ricerca Google da utilizzare per la previsione.

Come funziona?

Ora che l'app è in esecuzione, controlla il codice specifico di CoreML e Vision Framework.

Configurazione di Vision con un modello di ML principale

Core ML genera automaticamente una classe Swift che consente di accedere facilmente al modello ML.

In questo esempio, Core ML genera automaticamente la classe MobileNet da MobileNetmodel.

  • Recupera l'istanza modello con il seguente codice:

    let model = try VNCoreMLModel(for: MobileNet().model)
  • Crea la richiesta Vision con il modello e il gestore di completamento indicati sopra. Il gestore di completamento gestisce la risposta di previsione dal modello.

  • La console di Google Cloud Platform deve essere aggiornata nel thread principale:

    let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in
    DispatchQueue.main.async {
    guard let results = request.results else {
    self.classificationLabel.text = "Unable to classify image.\n\(error!.localizedDescription)"
    return
    }
    

results sarà sempre in VNClassificationObservation, come specificato dal modello Core ML in questo progetto.

let classifications = results as! [VNClassificationObservation]
})

Il gestore di completamento della richiesta di Vision indica se la richiesta è andata a buon fine o ha generato un errore. In caso di esito positivo, la relativa proprietà dei risultati contiene oggetti VNClassificationObservation che descrivono le possibili classificazioni identificate dal modello di machine learning.

  1. Un modello di ML elabora le immagini di input in proporzioni fisse, ma le immagini di input possono avere proporzioni arbitrarie, quindi Vision deve ridimensionare o ritagliare l'immagine per adattarla. Per ottenere risultati ottimali, imposta la proprietà imageCropAndScaleOption della richiesta in modo che corrisponda al layout dell'immagine con cui è stato addestrato il modello.

    request.imageCropAndScaleOption = .centerCrop
  2. Crea VisionRequestHandler con l'immagine di input utilizzando il seguente codice:

    let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation)
  3. Richiama la funzione di esecuzione del gestore passando l'oggetto richiesta.

    do {
    try handler.perform([self.classificationRequest])
    } catch {

    Questo gestore rileva gli errori generali di elaborazione delle immagini. Il gestore di completamento di classificationRequestprocessClassifications(_:error:) rileva gli errori specifici per l'elaborazione della richiesta.

    print("Failed to perform classification.\n\(error.localizedDescription)")
    }

Passaggi successivi

Hai completato una procedura dettagliata di un'app di classificazione dei fiori iOS che utilizza un modello Core ML esportato da AutoML Vision Edge. Hai utilizzato un modello ML ML addestrato per testare un'app di classificazione delle immagini generale prima di apportare modifiche e ottenere annotazioni di fiori personalizzate. Hai quindi esaminato il codice specifico di Core ML per comprendere la funzionalità di base.

Le seguenti risorse possono aiutarti a continuare a conoscere i modelli di ML principali e AutoML Vision Edge: