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

Scaricare, pre-elaborare e caricare il set di dati ImageNet

Questo argomento descrive come scaricare, pre-elaborare e caricare il set di dati ImageNet da utilizzare con Cloud TPU. I modelli di machine learning che utilizzano il set di dati ImageNet includono:

  • ResNet
  • AmoebaNet
  • EfficientNet
  • MNASNet
ImageNet è un database di immagini. Le immagini nel database sono organizzate in una gerarchia, con ogni nodo della gerarchia rappresentato da centinaia e migliaia di immagini.

A causa delle dimensioni del database ImageNet, l'addestramento di un modello può richiedere molto tempo. Un'alternativa è l'utilizzo di una versione dimostrativa del set di dati, denominata fake_imagenet. Questa versione dimostrativa consente di testare il modello, riducendo al contempo i requisiti di archiviazione e tempo associati all'utilizzo del database ImageNet completo.

Pre-elaborazione dell'intero set di dati ImageNet

Il set di dati ImageNet è composto da tre parti, dati di addestramento, dati di convalida ed etichette delle immagini.

I dati di addestramento contengono 1000 categorie e 1,2 milioni di immagini, pacchettizzate per un facile download. I dati di convalida e test non sono contenuti nei dati di addestramento di ImageNet (i duplicati sono stati rimossi).

I dati di convalida e test consiste in 150.000 fotografie, raccolte da Flickr e altri motori di ricerca, etichettati a mano con la presenza o l'assenza di 1000 categorie di oggetti. Le 1000 categorie di oggetti contengono sia nodi interni sia nodi fogliali di ImageNet, ma non si sovrappongono l'una all'altra. È stato rilasciato un sottoinsieme casuale di 50.000 immagini con etichette e un elenco delle 1000 categorie disponibili. Le immagini rimanenti vengono utilizzate per la valutazione e sono state rilasciate senza etichette.

Passaggi per la pre-elaborazione del set di dati ImageNet completo

Sono cinque i passaggi per preparare l'intero set di dati ImageNet per l'utilizzo da parte di un modello di machine learning:

  1. Verifica di avere spazio di destinazione sul download.
  2. Configura le directory di destinazione.
  3. Registrati sul sito ImageNet e richiedi l'autorizzazione per il download.
  4. Scarica il set di dati sul disco locale o sulla VM di Compute Engine.

  5. Esegui lo script di pre-elaborazione e caricamento.

Verifica i requisiti dello spazio

Se scarichi il set di dati sulla tua macchina locale o su una VM di Compute Engine, hai bisogno di circa 300 GB di spazio disponibile sulla destinazione di download. Su una VM, puoi controllare lo spazio di archiviazione disponibile con il comando df -ha.

Puoi aumentare le dimensioni del disco VM utilizzando uno dei seguenti metodi:

  • Specifica il flag --disk-size nella riga di comando gcloud compute con le dimensioni, in GB, che vuoi allocare.
  • Segui la guida di Compute Engine per aggiungere un disco alla tua VM.
    • Imposta Quando elimini l'istanza su Elimina disco per assicurarti che il disco venga rimosso quando rimuovi la VM.
    • Prendi nota del percorso del nuovo disco. Ad esempio: /mnt/disks/mnt-dir.

Configurare le directory di destinazione

Sul computer locale o sulla VM di Compute Engine, configura la struttura delle directory in cui archiviare i dati scaricati.

  • Crea ed esporta una home directory per il set di dati ImageNet.

    Crea una directory, ad esempio imagenet, nella home directory sul tuo computer o sulla tua VM locale. In questa directory, crea due sottodirectory: train e validation. Esporta la home directory come IMAGENET_HOME:

    export IMAGENET_HOME=~/imagenet
    

Registra e richiedi l'autorizzazione per scaricare il set di dati

  • Registrati sul sito web di Imagenet. Non puoi scaricare il set di dati finché ImageNet non conferma la registrazione e ti invia un'email di conferma. Se non ricevi l'email di conferma entro un paio di giorni, contatta l'assistenza di ImageNet per scoprire perché la tua registrazione non è stata confermata. Una volta confermata la registrazione, puoi scaricare il set di dati. I tutorial di Cloud TPU che utilizzano il set di dati di ImageNet utilizzano le immagini di VisualNet Scale Visual Consente il riconoscimento 2012 (ILSVRC2012).

Scarica il set di dati ImageNet

  1. Dal sito di download di LSRVC 2012, vai alla sezione Immagini nella pagina e fai clic con il pulsante destro del mouse &Immagini sulla formazione (Attività 1 & 2)". L'URL per scaricare la parte più grande del set di addestramento. Salva l'URL.

    Fai clic con il pulsante destro del mouse su "Immagini di addestramento (Attività 3)" per ottenere l'URL del secondo set di addestramento. Salva l'URL.

    Fai clic con il pulsante destro del mouse su "Immagini di convalida (tutte le attività)" per ottenere l'URL per il set di dati di convalida. Salva l'URL.

    Se scarichi i file ImageNet sulla tua macchina locale, devi copiare le directory sulla tua macchina locale nella directory $IMAGENET_HOME corrispondente della tua VM di Compute Engine. La copia del set di dati ImageNet dall'host locale alla tua VM richiede circa 13 ore.

    Il comando seguente copia i file da $IMAGENET_HOME sulla tua macchina locale in ~/imagenet sulla tua VM (username@vm-name):

    gcloud compute scp --recurse $IMAGENET_HOME username@vm-name:~/imagenet
    
  2. Da $IMAGENET_HOME, utilizza wget per scaricare i file di addestramento e convalida utilizzando gli URL salvati.

    Il file "Training images (Task 1 & 2)" è il set di addestramento di grandi dimensioni. La dimensione è di 138 GB e, se esegui il download in una VM di Compute Engine mediante Cloud Shell, il download dura circa 40 ore. Se Cloud Shell perde la connessione alla VM, puoi anteporre nohup al comando o utilizzare lo schermo.

    cd $IMAGENET_HOME \
    nohup wget http://image-net.org/challenges/LSVRC/2012/dd31405981ef5f776aa17412e1f0c112/ILSVRC2012_img_train.tar
    

    Questo comando scarica un file tar di grandi dimensioni: ILSVRC2012_img_train.tar.

    Da $IMAGENET_HOME sulla VM, estrai le singole directory di addestramento nella directory $IMAGENET_HOME/train utilizzando il seguente comando. L'estrazione richiede da 1 a 3 ore.

    tar xf ILSVRC2012_img_train.tar
    

    Estrai i singoli file tar di addestramento che si trovano nella directory $IMAGENET_HOME/train, come mostrato nel seguente script:

    cd $IMAGENET_HOME/train
    
    for f in *.tar; do
     d=`basename $f .tar`
     mkdir $d
     tar xf $f -C $d
    done
    

    Elimina i file tar dopo averli estratti per liberare spazio su disco.

    Il file "Training images (Task 3)" è di 728 MB e richiede solo pochi minuti per il download, quindi non è necessario prendere precauzioni contro la perdita della connessione Cloud Shell.

    Quando lo scarichi, estrae le singole directory di addestramento nella directory $IMAGENET_HOME/train esistente.

    wget http://www.image-net.org/challenges/LSVRC/2012/dd31405981ef5f776aa17412e1f0c112/ILSVRC2012_img_train_t3.tar
    

    Quando scarichi il file "Convalida immagini (tutte le attività)", Cloud Shell potrebbe disconnettersi. Puoi utilizzare nohup o schermo per impedire la disconnessione di Cloud Shell.

    wget http://www.image-net.org/challenges/LSVRC/2012/dd31405981ef5f776aa17412e1f0c112/ILSVRC2012_img_val.tar
    

    Il download richiede circa 30 minuti. Quando lo scarichi, questo estrae le singole directory di convalida nella directory $IMAGENET_HOME/validation.

    Se hai scaricato i file di convalida nella macchina locale, devi copiare la directory $IMAGENET_HOME/validation sulla tua macchina locale nella directory $IMAGENET_HOME/validation sulla tua VM di Compute Engine. L'operazione di copia richiede circa 30 minuti.

    Scarica il file delle etichette.

    wget -O $IMAGENET_HOME/synset_labels.txt \
    https://raw.githubusercontent.com/tensorflow/models/master/research/inception/inception/data/imagenet_2012_validation_synset_labels.txt
    

    Se hai scaricato il file delle etichette sulla tua macchina locale, devi copiarlo nella directory $IMAGENET_HOME della tua macchina locale su $IMAGENET_HOME sulla tua VM di Compute Engine. Questa operazione di copia richiede alcuni secondi.

    I nomi delle sottodirectory dell'addestramento (ad esempio, n03062245) sono "WordNet ID" (wnid). L'API ImageNet mostra la mappatura degli ID WordNet alle etichette di convalida associate nel file synset_labels.txt. Un synset in questo contesto è un gruppo di immagini visivamente simili.

Elabora il set di dati Imagenet e, facoltativamente, caricalo in Cloud Storage

  1. Scarica lo script imagenet_to_gcs.py da GitHub:

    wget https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/imagenet_to_gcs.py
    
  2. Se carichi il set di dati in Cloud Storage, specifica la località del bucket di archiviazione in cui caricare il set di dati ImageNet:

    export STORAGE_BUCKET=gs://bucket-name
    
  3. Se stai caricando il set di dati sulla tua macchina locale o sulla tua VM, specifica una directory di dati in cui inserire il set di dati:

    (vm)$ export DATA_DIR=$IMAGENET_HOME/dataset-directory
    
  4. Esegui lo script per pre-elaborare il set di dati non elaborati come TFRecords e caricarlo su Cloud Storage utilizzando il seguente comando:

     python3 imagenet_to_gcs.py \
      --project=$PROJECT \
      --gcs_output_path=$STORAGE_BUCKET  \
      --raw_data_dir=$IMAGENET_HOME \
      --local_scratch_dir=$IMAGENET_HOME/tf_records
    

Lo script genera un insieme di directory (sia per addestramento sia per convalida) nel formato:

${DATA_DIR}/train-00000-of-01024
${DATA_DIR}/train-00001-of-01024
 ...
${DATA_DIR}/train-01023-of-01024

e

${DATA_DIR}/validation-00000-of-00128
S{DATA_DIR}/validation-00001-of-00128
 ...
${DATA_DIR}/validation-00127-of-00128

Dopo aver caricato i dati nel tuo bucket Cloud, esegui il modello e imposta --data_dir=${DATA_DIR}.