Creazione di set di dati

Un set di dati è la raccolta di elementi di dati che vuoi che vengano etichettati dagli etichettatori umani. Contiene campioni rappresentativi da classificare o analizzare. È possibile usare un set di dati ben etichettato per addestrare un modello personalizzato.

I passaggi principali per creare un set di dati sono:

  1. Carica gli elementi di dati in un bucket Cloud Storage.
  2. Creare un file con valori separati da virgole (CSV) per catalogare gli elementi di dati, e caricarlo nello stesso bucket Cloud Storage.
  3. Crea una risorsa set di dati.
  4. Importa gli elementi di dati nella risorsa del set di dati.

Un progetto può avere più set di dati, ciascuno utilizzato per un diverso AI Platform Data Labeling Service richiesta. Puoi ottenere un elenco dei set di dati disponibili ed eliminare quelli che non ti servono più. Per ulteriori informazioni, consulta la pagina delle risorse relative ai set di dati.

Esegui la gestione delle fasi dei dati non etichettati

Il primo passaggio nella creazione di un set di dati è caricare gli elementi di dati in un Bucket Cloud Storage per l'etichettatura. Per informazioni sulla creazione di un consulta Prima di iniziare.

Data Labeling Service supporta l'etichettatura di tre tipi di dati. Puoi espandere le sezioni riportate di seguito per visualizzare i dettagli sulla fornitura di elementi di dati di qualità per ogni tipo. Al momento, per l'etichettatura sono supportati solo i set di dati in inglese.

Immagini

Le immagini devono utilizzare un tipo di file supportato:

  • JPEG
  • PNG

La dimensione massima del file è 30 MB per tutti i casi di etichettatura delle immagini, ad eccezione di quelli delle immagini la segmentazione dei clienti. La dimensione massima del file è 10 MB per l'etichettatura della segmentazione delle immagini.

Le dimensioni massime di un'immagine sono 1920 x 1080.

I dati di addestramento devono essere il più possibile simili ai dati su cui è necessario fare previsioni. Ad esempio, se il tuo caso d'uso prevede immagini sfocate e a bassa risoluzione (ad esempio quelle di una videocamera di sicurezza), i dati di addestramento devono essere costituiti da immagini sfocate e a bassa risoluzione. In generale, dovresti considera l'idea di fornire più angolazioni, risoluzioni e sfondi per le immagini di addestramento.

L'addestramento di un modello funziona meglio quando ci sono al massimo 100 volte più immagini per l'etichetta più comune rispetto a quella meno comune. Ti consigliamo di rimuoverla etichette con frequenza molto bassa.

Video

I video devono essere in formato MP4 con codec H.264, H.265 e MPEG4. La dimensione massima del video è 2 GB.

I dati di addestramento devono essere il più simili possibile ai dati su cui devono essere eseguite le previsioni. Ad esempio, se il tuo caso d'uso prevede immagini sfocate video a bassa risoluzione (ad esempio quelli di una videocamera di sicurezza), i dati di addestramento deve essere composto da video sfocati e a bassa risoluzione. In generale, dovresti considera l'idea di fornire più angolazioni, risoluzioni e sfondi per nei tuoi video di formazione.

Consigliamo circa 1000 video di addestramento per etichetta. Il minimo per etichetta è 10 o 50 per i modelli avanzati. In genere, per addestrare modelli con più etichette per video sono necessari più esempi per etichetta e i punteggi risultanti sono più difficili da interpretare.

Il modello funziona al meglio quando ci sono al massimo 100 volte più video per l'etichetta più comune rispetto a quella meno comune. Ti consigliamo di rimuoverla etichette con frequenza molto bassa.

Testo

I file di testo devono utilizzare il formato di codifica dei file di testo UTF-8.

Ogni documento deve essere un file di testo separato. Non puoi fornire più documenti in un file di testo; Ad esempio, non puoi trattare ogni riga di un testo file come proprio documento.

Il numero massimo di caratteri per file di testo è 100.000.

Cerca di rendere i dati di addestramento il più diversi possibile rispetto ai dati su cui verranno eseguite le previsioni. I set di dati devono contenere documenti di lunghezze diverse, scritti da persone diverse, con formulazioni o stili diversi e così via.

Ti consigliamo di fornire almeno 1000 documenti di addestramento per etichetta. La il numero minimo di documenti per etichetta è 10. Tuttavia, puoi migliorare i punteggi di confidenza del modello utilizzando più esempi per etichetta. I migliori coefficienti di confidenza sono particolarmente utili quando il modello restituisce più etichette per classificare un documento.

Il modello funziona meglio quando ci sono al massimo 100 volte più documenti per l'etichetta più comune che per l'etichetta meno comune. Ti consigliamo di rimuovere le etichette con frequenza molto bassa.

Crea il file CSV di input

Oltre ai dati di esempio, devi creare dei campi separati da virgole di valori (CSV) in cui sono catalogati tutti i dati. Il file CSV può contenere qualsiasi il nome del file, deve essere codificato in UTF-8 e deve terminare con l'estensione .csv.

Per i dati di immagini e video, ogni riga del file CSV rappresenta la posizione (nel del progetto Google bucket Cloud Storage) di un'immagine o un video. Ad esempio:

gs://my_project_bucket/image1.png
gs://my_project_bucket/image2.png
gs://my_project_bucket/image3.png
gs://my_project_bucket/image4.png

Per i dati di testo, ogni riga del file CSV è la posizione di archiviazione di un file di testo. Ad esempio:

gs://my_project_bucket/file1.txt
gs://my_project_bucket/file2.txt
gs://my_project_bucket/file3.txt
gs://my_project_bucket/file4.txt

Ogni file di dati deve contenere i dati che vuoi etichettare. I contenuti di ogni file di dati verranno mostrati agli etichettatori come una domanda di etichettatura.

Dopo aver creato il file CSV per catalogare gli elementi di dati, carica nello stesso bucket Cloud Storage degli elementi di dati.

crea la risorsa del set di dati

Il passaggio successivo consiste nel creare una risorsa set di dati che conterrà gli elementi di dati. Il set di dati appena creato è vuoto finché non importi gli elementi di dati nel passaggio successivo.

UI web

Nell'interfaccia utente di Data Labeling Service, puoi creare un set di dati e importare dalla stessa pagina.

  1. Apri l'interfaccia utente di Data Labeling Service.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per per il progetto attuale.

    Per aggiungere un set di dati per un progetto diverso, seleziona il progetto dall'elenco a discesa in alto a destra nella barra del titolo.

  2. Fai clic sul pulsante Crea nella barra del titolo.

  3. Nella pagina Aggiungi un set di dati, inserisci un nome e una descrizione per il set di dati.

  4. Dall'elenco a discesa Tipo di set di dati, scegli il tipo di elementi di dati. che stai caricando in questo set di dati: immagini, video o testo.

  5. Nella casella Posizione file CSV, inserisci il percorso completo al file CSV di input.

    Il file CSV deve trovarsi nello stesso bucket Google Cloud Storage degli elementi di dati elencati.

  6. Fai clic su Crea.

    Tornerai alla pagina Set di dati. sul set di dati verrà visualizzata una stato durante l'importazione dei documenti. Questa procedura dovrebbe richiedere circa 10 minuti per 1000 articoli, ma potrebbe richiedere più o meno tempo.

    Se il servizio restituisce un errore 405, riduci il numero di documenti che stai caricando contemporaneamente. Devi aggiornare la pagina prima di riprovare.

Riga di comando

L'esempio seguente crea un set di dati denominato test_dataset. Il set di dati appena creato non contiene dati finché non importi elementi al suo interno.

Salva il "name" del nuovo set di dati (dalla risposta) per utilizzarlo con altre operazioni, come l'importazione di elementi nel set di dati.

curl -X POST \
   -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
   -H "Content-Type: application/json" \
   https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets \
   -d '{
     "dataset": {
     "displayName": "test_dataset",
     "description": "dataset for curl commands testing",
     },
   }'

Dovresti vedere un output simile al seguente:

{
  "name": "projects/data-labeling-codelab/datasets/5c897e1e_0000_2ab5_9159_94eb2c0b4daa",
  "displayName": "test_dataset",
  "description": "dataset for curl commands testing",
  "createTime": "2019-03-14T03:11:50.926475415Z"
}

Python

Prima di poter eseguire questo esempio di codice, è necessario installare Librerie client Python.

def create_dataset(project_id):
    """Creates a dataset for the given Google Cloud project."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    formatted_project_name = f"projects/{project_id}"

    dataset = datalabeling.Dataset(
        display_name="YOUR_DATASET_SET_DISPLAY_NAME", description="YOUR_DESCRIPTION"
    )

    response = client.create_dataset(
        request={"parent": formatted_project_name, "dataset": dataset}
    )

    # The format of resource name:
    # project_id/{project_id}/datasets/{dataset_id}
    print(f"The dataset resource name: {response.name}")
    print(f"Display name: {response.display_name}")
    print(f"Description: {response.description}")
    print("Create time:")
    print(f"\tseconds: {response.create_time.timestamp_pb().seconds}")
    print(f"\tnanos: {response.create_time.timestamp_pb().nanos}\n")

    return response

Java

Prima di poter eseguire questo esempio di codice, è necessario installare Librerie client Java.
import com.google.cloud.datalabeling.v1beta1.CreateDatasetRequest;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.Dataset;
import com.google.cloud.datalabeling.v1beta1.ProjectName;
import java.io.IOException;

class CreateDataset {

  // Create a dataset that is initially empty.
  static void createDataset(String projectId, String datasetName) throws IOException {
    // String projectId = "YOUR_PROJECT_ID";
    // String datasetName = "YOUR_DATASET_DISPLAY_NAME";


    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      ProjectName projectName = ProjectName.of(projectId);

      Dataset dataset =
          Dataset.newBuilder()
              .setDisplayName(datasetName)
              .setDescription("YOUR_DESCRIPTION")
              .build();

      CreateDatasetRequest createDatasetRequest =
          CreateDatasetRequest.newBuilder()
              .setParent(projectName.toString())
              .setDataset(dataset)
              .build();

      Dataset createdDataset = dataLabelingServiceClient.createDataset(createDatasetRequest);

      System.out.format("Name: %s\n", createdDataset.getName());
      System.out.format("DisplayName: %s\n", createdDataset.getDisplayName());
      System.out.format("Description: %s\n", createdDataset.getDescription());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Importa gli elementi di dati nel set di dati

Dopo aver creato un set di dati, puoi importare gli elementi di dati utilizzando il file CSV.

UI web

Nell'interfaccia utente di Data Labeling Service puoi saltare questo passaggio poiché l'importazione è già stata eseguita nel passaggio precedente.

Riga di comando

  • Sostituisci DATASET_ID con l'ID del tuo set di dati, dalla quando hai creato il set di dati. L'ID si trova alla fine del documento nome set di dati: projects/{project-id}/locations/us-central1/datasets/{dataset-id}

  • Sostituisci CSV_FILE con il percorso completo del file CSV di input.

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
       -H "Content-Type: application/json" \
       https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}:importData \
       -d '{
         "inputConfig": {
           "dataType": "IMAGE",
           "gcsSource": {
              "inputUri": "${CSV_FILE}",
              "mimeType": "text/csv",
            }
           },
       }'

    Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per ottenere lo stato dell'attività. Ne è un esempio il recupero dello stato di un'operazione.

    {
      "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.ImportDataOperationMetadata",
        "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
      }
    }
    

Python

Prima di poter eseguire questo esempio di codice, è necessario installare Librerie client Python.

def import_data(dataset_resource_name, data_type, input_gcs_uri):
    """Imports data to the given Google Cloud project and dataset."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    gcs_source = datalabeling.GcsSource(input_uri=input_gcs_uri, mime_type="text/csv")

    csv_input_config = datalabeling.InputConfig(
        data_type=data_type, gcs_source=gcs_source
    )

    response = client.import_data(
        request={"name": dataset_resource_name, "input_config": csv_input_config}
    )

    result = response.result()

    # The format of resource name:
    # project_id/{project_id}/datasets/{dataset_id}
    print(f"Dataset resource name: {result.dataset}\n")

    return result

Java

Prima di poter eseguire questo esempio di codice, devi installare le librerie client Java.
import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.DataType;
import com.google.cloud.datalabeling.v1beta1.GcsSource;
import com.google.cloud.datalabeling.v1beta1.ImportDataOperationMetadata;
import com.google.cloud.datalabeling.v1beta1.ImportDataOperationResponse;
import com.google.cloud.datalabeling.v1beta1.ImportDataRequest;
import com.google.cloud.datalabeling.v1beta1.InputConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class ImportData {

  // Import data to an existing dataset.
  static void importData(String datasetName, String gcsSourceUri) throws IOException {
    // String datasetName = DataLabelingServiceClient.formatDatasetName(
    //     "YOUR_PROJECT_ID", "YOUR_DATASETS_UUID");
    // String gcsSourceUri = "gs://YOUR_BUCKET_ID/path_to_data";


    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      GcsSource gcsSource =
          GcsSource.newBuilder().setInputUri(gcsSourceUri).setMimeType("text/csv").build();

      InputConfig inputConfig =
          InputConfig.newBuilder()
              .setDataType(DataType.IMAGE) // DataTypes: AUDIO, IMAGE, VIDEO, TEXT
              .setGcsSource(gcsSource)
              .build();

      ImportDataRequest importDataRequest =
          ImportDataRequest.newBuilder().setName(datasetName).setInputConfig(inputConfig).build();

      OperationFuture<ImportDataOperationResponse, ImportDataOperationMetadata> operation =
          dataLabelingServiceClient.importDataAsync(importDataRequest);

      ImportDataOperationResponse response = operation.get();

      System.out.format("Imported items: %d\n", response.getImportCount());
    } catch (IOException | InterruptedException | ExecutionException e) {
      e.printStackTrace();
    }
  }
}

Visualizza gli elementi di dati nel set di dati

Per visualizzare gli elementi di dati in un set di dati importato:

  1. Apri l'interfaccia utente di Data Labeling Service.

    La pagina Set di dati mostra i set di dati di Data Labeling Service per per il progetto attuale.

  2. Nell'elenco dei set di dati, fai clic sul nome del set di dati di cui vuoi visualizzare gli elementi.

  3. Utilizza la scheda Dettagli della pagina Dettagli set di dati per visualizzare i singoli elementi di dati inclusi nel set di dati.