Share via


Personalizzazione del modello (versione 4.0 preview)

La personalizzazione del modello consente di eseguire il training di un modello di analisi delle immagini specializzato per il proprio caso d'uso. I modelli personalizzati possono eseguire la classificazione delle immagini (i tag si applicano all'intera immagine) o il rilevamento degli oggetti (i tag si applicano a aree specifiche dell'immagine). Dopo aver creato e sottoposto a training il modello personalizzato, appartiene alla risorsa visione e può essere chiamato usando l'API Analizza immagine.

Implementare la personalizzazione del modello in modo rapido e semplice seguendo una guida introduttiva:

Importante

È possibile eseguire il training di un modello personalizzato usando il servizio Visione personalizzata o il servizio Analisi immagini 4.0 con la personalizzazione del modello. Nella tabella seguente vengono confrontati i due servizi.

Aree Servizio Visione personalizzata Servizio Analisi immagini 4.0
Attività Rilevamento oggetti classificazione
immagini
Rilevamento oggetti classificazione
immagini
Modello di base CNN Modello trasformatore
Etichettatura Customvision.ai AML Studio
Portale Web Customvision.ai Vision Studio
Librerie REST, SDK REST, Esempio di Python
Dati di training minimi necessari 15 immagini per categoria 2-5 immagini per categoria
Archiviazione dei dati di training Caricato nel servizio Account di archiviazione BLOB del cliente
Hosting di modelli Cloud e edge Solo hosting cloud, hosting di contenitori perimetrali da venire
Qualità dell'intelligenza artificiale
contextClassificazione
delle immagini (accuratezza top-1, 22 set di dati)
Rilevamento
oggetti (mAP@50, 59 set di dati)
2 colpi51.4733,3
3 colpi56.7337.0
5 colpi63.0143.4
10 colpi68.9554.0
full85.2576,6
contextClassificazione
delle immagini (accuratezza top-1, 22 set di dati)
Rilevamento
oggetti (mAP@50, 59 set di dati)
2 colpi73.0249.2
3 colpi75.5161.1
5 colpi79.1468.2
10 colpi81.3175.0
full90.9885.4
Prezzi Prezzi della Visione personalizzata Prezzi dell'analisi delle immagini

Componenti di uno scenario

I componenti principali di un sistema di personalizzazione del modello sono le immagini di training, il file COCO, l'oggetto set di dati e l'oggetto modello.

Immagini di training

Il set di immagini di training deve includere diversi esempi di ognuna delle etichette da rilevare. È anche possibile raccogliere alcune immagini aggiuntive per testare il modello con una volta eseguito il training. Le immagini devono essere archiviate in un contenitore Archiviazione di Azure per poter essere accessibili al modello.

Per eseguire il training del modello in modo efficace, usare le immagini con diversi oggetti visivi. Selezionare immagini diverse per:

  • angolazione
  • illuminazione
  • background
  • stile visivo
  • soggetti singoli/raggruppati
  • size
  • type

Assicurarsi anche che tutte le immagini di training soddisfino i criteri seguenti:

  • L'immagine deve essere presentata in formato JPEG, PNG, GIF, BMP, WEBP, ICO, TIFF o MPO.
  • Le dimensioni del file dell'immagine devono essere inferiori a 20 megabyte (MB).
  • Le dimensioni dell'immagine devono essere maggiori di 50 x 50 pixel e inferiori a 16.000 x 16.000 pixel.

File COCO

Il file COCO fa riferimento a tutte le immagini di training e le associa alle informazioni di etichettatura. Nel caso del rilevamento degli oggetti, ha specificato le coordinate del rettangolo delimitatore di ogni tag in ogni immagine. Questo file deve essere nel formato COCO, ovvero un tipo specifico di file JSON. Il file COCO deve essere archiviato nello stesso contenitore Archiviazione di Azure delle immagini di training.

Suggerimento

Informazioni sui file COCO

I file COCO sono file JSON con campi obbligatori specifici: "images", "annotations"e "categories". Un file COCO di esempio sarà simile al seguente:

{
 "images": [
   {
     "id": 1,
     "width": 500,
     "height": 828,
     "file_name": "0.jpg",
     "absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/0.jpg"
   },
    {
      "id": 2,
      "width": 754,
      "height": 832,
      "file_name": "1.jpg",
      "absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/1.jpg"
    },

   ...

  ],
  "annotations": [
    {
      "id": 1,
      "category_id": 7,
      "image_id": 1,
      "area": 0.407,
      "bbox": [
        0.02663142641129032,
        0.40691584277841153,
        0.9524163571731749,
        0.42766634515266866
      ]
    },
    {
      "id": 2,
      "category_id": 9,
      "image_id": 2,
      "area": 0.27,
      "bbox": [
        0.11803319477782331,
        0.41586723392402375,
        0.7765206955096307,
        0.3483334397217212
      ]
    },
    ...

  ],
  "categories": [
    {
      "id": 1,
      "name": "vegall original mixed vegetables"
    },
    {
      "id": 2,
      "name": "Amy's organic soups lentil vegetable"
    },
    {
      "id": 3,
      "name": "Arrowhead 8oz"
    },

    ...

  ]
}

Informazioni di riferimento sul campo del file COCO

Se stai generando il tuo file COCO da zero, assicurati che tutti i campi obbligatori siano compilati con i dettagli corretti. Le tabelle seguenti descrivono ogni campo in un file COCO:

"immagini"

Chiave Type Description Obbligatorio?
id integer ID immagine univoco, a partire da 1
width integer Larghezza dell'immagine in pixel
height integer Altezza dell'immagine in pixel
file_name string Nome univoco per l'immagine
absolute_url oppure coco_url string Percorso dell'immagine come URI assoluto in un BLOB in un contenitore BLOB. La risorsa Visione deve avere l'autorizzazione per leggere i file di annotazione e tutti i file di immagine a cui si fa riferimento.

Il valore per absolute_url è reperibile nelle proprietà del contenitore BLOB:

absolute url

"annotazioni"

Chiave Type Description Obbligatorio?
id integer ID dell'annotazione
category_id integer ID della categoria definita nella categories sezione
image_id integer ID dell'immagine
area integer Valore di 'Width' x 'Height' (terzo e quarto valore di bbox) No
bbox list[float] Coordinate relative del rettangolo di selezione (da 0 a 1), nell'ordine di 'Left', 'Top', 'Width', 'Height'

"categories"

Chiave Type Description Obbligatorio?
id integer ID univoco per ogni categoria (classe label). Devono essere presenti nella annotations sezione .
name string Nome della categoria (classe label)

Verifica file COCO

È possibile usare il codice di esempio Python per controllare il formato di un file COCO.

Oggetto Dataset

L'oggetto Dataset è una struttura di dati archiviata dal servizio Analisi immagini che fa riferimento al file di associazione. È necessario creare un oggetto Dataset prima di poter creare ed eseguire il training di un modello.

Oggetto modello

L'oggetto Model è una struttura di dati archiviata dal servizio Analisi immagini che rappresenta un modello personalizzato. Deve essere associato a un set di dati per eseguire il training iniziale. Dopo aver eseguito il training, è possibile eseguire query sul modello immettendone il model-name nome nel parametro di query della chiamata all'API Analizza immagine.

Limiti di quota

Nella tabella seguente vengono descritti i limiti sulla scala dei progetti di modello personalizzati.

Category Classificatore di immagini generico Rilevatore di oggetti generici
Numero massimo di ore di training 288 (12 giorni) 288 (12 giorni)
Numero massimo di immagini di training 1\.000.000 200.000
Numero massimo di immagini di valutazione 100,000 100,000
Min # training images per categoria 2 2
Numero massimo di tag per immagine multiclasse: 1 N/D
Numero massimo di aree per immagine N/D 1.000
Max # categories 2500 1.000
Min # categories 2 1
Dimensioni massime immagine (training) 20 MB 20 MB
Dimensioni massime immagine (stima) Sincronizzazione: 6 MB, Batch: 20 MB Sincronizzazione: 6 MB, Batch: 20 MB
Larghezza/altezza massima immagine (training) 10,240 10,240
Larghezza/altezza minima dell'immagine (stima) 50 50
Aree disponibili Stati Uniti occidentali 2, Stati Uniti orientali, Europa occidentale Stati Uniti occidentali 2, Stati Uniti orientali, Europa occidentale
Tipi di immagine accettati jpg, png, bmp, gif, jpeg jpg, png, bmp, gif, jpeg

Domande frequenti

Perché l'importazione del file COCO non riesce durante l'importazione dall'archivio BLOB?

Attualmente, Microsoft sta risolvendo un problema che causa l'esito negativo dell'importazione di file COCO con set di dati di grandi dimensioni quando viene avviato in Vision Studio. Per eseguire il training usando un set di dati di grandi dimensioni, è consigliabile usare invece l'API REST.

Perché il training richiede più tempo/più breve del budget specificato?

Il budget di training specificato è il tempo di calcolo calibrato, non l'ora di clock del muro. Ecco alcuni motivi comuni per cui la differenza è elencata:

  • Più lungo del budget specificato:

    • L'analisi delle immagini presenta un traffico di training elevato e le risorse GPU possono essere limitate. Il processo potrebbe attendere nella coda o essere messo in attesa durante il training.
    • Il processo di training back-end si è verificato in errori imprevisti, causando la logica di ripetizione dei tentativi. Le esecuzioni non riuscite non consumano il budget, ma questo può portare a tempi di training più lunghi in generale.
    • I dati vengono archiviati in un'area diversa da quella della risorsa visione, con un tempo di trasmissione dei dati più lungo.
  • Più breve del budget specificato: i fattori seguenti accelerano l'allenamento a costo di usare più budget in un determinato orario di tempo.

    • Analisi immagini a volte esegue il training con più GPU a seconda dei dati.
    • Analisi immagini a volte esegue il training di più prove di esplorazione su più GPU contemporaneamente.
    • Analisi immagini a volte usa SKU GPU premier (più veloci) per eseguire il training.

Perché il training ha esito negativo e cosa devo fare?

Di seguito sono riportati alcuni motivi comuni per cui si è verificato un errore di training:

  • diverged: il training non può apprendere elementi significativi dai dati. Alcune cause comuni sono:
    • I dati non sono sufficienti: fornire più dati dovrebbe essere utile.
    • I dati sono di scarsa qualità: controllare se le immagini sono a bassa risoluzione, proporzioni estreme o se le annotazioni sono errate.
  • notEnoughBudget: il budget specificato non è sufficiente per le dimensioni del set di dati e del tipo di modello di cui si sta eseguendo il training. Specificare un budget più elevato.
  • datasetCorrupt: in genere ciò significa che le immagini fornite non sono accessibili o il file di annotazione è nel formato errato.
  • datasetNotFound: impossibile trovare il set di dati
  • unknown: potrebbe trattarsi di un problema back-end. Contattare il supporto per l'indagine.

Quali metriche vengono usate per valutare i modelli?

Vengono usate le metriche seguenti:

  • Classificazione delle immagini: precisione media, precisione top 1, accuratezza top 5
  • Rilevamento oggetti: precisione media media @ 30, precisione media media @ 50, precisione media media @ 75

Perché la registrazione del set di dati ha esito negativo?

Le risposte api devono essere abbastanza informative. Sono:

  • DatasetAlreadyExists: esiste un set di dati con lo stesso nome
  • DatasetInvalidAnnotationUri: "È stato fornito un URI non valido tra gli URI di annotazione in fase di registrazione del set di dati.

Quante immagini sono necessarie per una qualità ragionevole/buona/migliore del modello?

Sebbene i modelli di Firenze abbiano una grande capacità di esecuzione ridotta (ottenendo prestazioni ottimali del modello con disponibilità limitata dei dati), in generale più dati rendono il modello sottoposto a training migliore e più affidabile. Alcuni scenari richiedono poco dati (come la classificazione di una mela contro una banana), ma altri richiedono più (come il rilevamento di 200 tipi di insetti in una foresta pluviale). Ciò rende difficile fornire una singola raccomandazione.

Se il budget per l'etichettatura dei dati è vincolato, il flusso di lavoro consigliato consiste nel ripetere i passaggi seguenti:

  1. Raccogliere N immagini per classe, in cui N le immagini sono facili da raccogliere (ad esempio, N=3)

  2. Eseguire il training di un modello e testarlo nel set di valutazione.

  3. Se le prestazioni del modello sono:

    • Sufficientemente efficace (le prestazioni sono migliori delle aspettative o delle prestazioni vicine all'esperimento precedente con meno dati raccolti): arrestare qui e usare questo modello.
    • Non buono (le prestazioni sono ancora al di sotto delle aspettative o migliori rispetto all'esperimento precedente con meno dati raccolti a un margine ragionevole):
    • Raccogliere più immagini per ogni classe, un numero facile da raccogliere, e tornare al passaggio 2.
    • Se si nota che le prestazioni non migliorano più dopo alcune iterazioni, il problema potrebbe essere dovuto al fatto che:
      • questo problema non è ben definito o è troppo difficile. Contattaci per l'analisi del caso per caso.
      • i dati di training potrebbero essere di bassa qualità: controllare se sono presenti annotazioni errate o immagini molto basse.

Quanto budget di formazione è necessario specificare?

È necessario specificare il limite massimo di budget che si è disposti a utilizzare. Analisi immagini usa un sistema AutoML nel back-end per provare modelli diversi e ricette di training per trovare il modello migliore per il caso d'uso. Maggiore è il budget dato, maggiore è la possibilità di trovare un modello migliore.

Il sistema AutoML si arresta automaticamente anche se conclude non c'è bisogno di provare di più, anche se è ancora presente un budget rimanente. Quindi, non esaurisce sempre il budget specificato. Non è garantito che venga addebitato il budget specificato.

È possibile controllare gli iper parametri o usare i propri modelli nel training?

No, il servizio di personalizzazione del modello di analisi delle immagini usa un sistema di training AutoML a basso codice che gestisce la ricerca hyper-param e la selezione del modello di base nel back-end.

È possibile esportare il modello dopo il training?

L'API di stima è supportata solo tramite il servizio cloud.

Perché la valutazione non riesce per il modello di rilevamento oggetti?

Di seguito sono riportati i possibili motivi:

  • internalServerError: si è verificato un errore sconosciuto. Riprova più tardi.
  • modelNotFound: il modello specificato non è stato trovato.
  • datasetNotFound: il set di dati specificato non è stato trovato.
  • datasetAnnotationsInvalid: si è verificato un errore durante il tentativo di scaricare o analizzare le annotazioni di verità di base associate al set di dati di test.
  • datasetEmpty: il set di dati di test non contiene annotazioni "verità di base".

Qual è la latenza prevista per le stime con modelli personalizzati?

Non è consigliabile usare modelli personalizzati per ambienti business critical a causa di una potenziale latenza elevata. Quando i clienti eseguono il training di modelli personalizzati in Vision Studio, questi modelli personalizzati appartengono alla risorsa visione artificiale di Azure sottoposta a training e il cliente è in grado di effettuare chiamate a tali modelli usando l'API Analizza immagine . Quando effettuano queste chiamate, il modello personalizzato viene caricato in memoria e l'infrastruttura di stima viene inizializzata. Anche se ciò accade, i clienti potrebbero riscontrare una latenza più lunga del previsto per ricevere i risultati della stima.

Privacy e sicurezza dei dati

Come per tutti i servizi di intelligenza artificiale di Azure, gli sviluppatori che usano la personalizzazione del modello di analisi delle immagini devono essere consapevoli dei criteri di Microsoft sui dati dei clienti. Per altre informazioni, vedere la pagina dei servizi di intelligenza artificiale di Azure nel Centro protezione Microsoft.

Passaggi successivi

Creare ed eseguire il training di un modello personalizzato