Scaricare, pre-elaborare e caricare il set di dati ImageNet
Questo documento descrive come scaricare, pre-elaborare e caricare il set di dati ImageNet da utilizzare con l'architettura VM Cloud TPU.
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.
Le dimensioni del database ImageNet fanno sì che l'addestramento di un modello possa richiedere un tempo considerevole. Un'alternativa è utilizzare una versione dimostrativa del set di dati, denominata fake_imagenet. Questa versione dimostrativa ti consente di testare il modello, riducendo al contempo i requisiti di spazio di archiviazione e tempo associati all'utilizzo del database ImageNet completo.
Pre-elabora l'intero set di dati ImageNet
Il set di dati ImageNet è composto da tre parti: dati di addestramento, dati di convalida e etichette delle immagini.
I dati di addestramento contengono 1000 categorie e 1,2 milioni di immagini, raggruppate per il download. I dati di convalida e di test non sono contenuti nei dati di training di ImageNet (i duplicati sono stati rimossi).
I dati di convalida e test sono costituiti da 150.000 fotografie, raccolte da Flickr e altri motori di ricerca, etichettate manualmente con la presenza o l'assenza di 1000 categorie di oggetti. Le 1000 categorie di oggetti contengono sia nodi interni che nodi foglia di ImageNet, ma non si sovrappongono tra loro. Un sottoinsieme casuale di 50.000 immagini con etichette è stato rilasciato come dati di convalida insieme a un elenco delle 1000 categorie. Le immagini rimanenti vengono utilizzate per la valutazione e sono state rilasciate senza etichette.
Passaggi per pre-elaborare l'intero set di dati ImageNet
Per preparare l'intero set di dati ImageNet per l'utilizzo da parte di un modello di machine learning, sono necessari cinque passaggi:
- Verifica di avere spazio nella destinazione di download.
- Configura le directory di destinazione.
- Registrati sul sito ImageNet e richiedi l'autorizzazione per il download.
Verificare i requisiti di spazio
Che tu scarichi il set di dati sul tuo computer locale o su un'istanza VM, devi disporre di circa 300 GB di spazio disponibile nella destinazione di download.
L'allocazione predefinita del disco per una VM TPU è 10 GB. Poiché il download sulla VM TPU richiede 300 GiB, se intendi eseguire il download sull'istanza VM TPU, devi aggiungere un volume di archiviazione a blocchi durevole con spazio aggiuntivo per completare il download o aumentare le dimensioni del disco di avvio sulla TPU. Su una
VM TPU, puoi controllare lo spazio di archiviazione disponibile con il comando df -ha. Per ulteriori informazioni sul ridimensionamento dei dischi, consulta Modifica le dimensioni e le prestazioni di provisioning di un volume Hyperdisk e Modifica le dimensioni di un volume Persistent Disk.
Quando aggiungi l'archiviazione a blocchi durevole, assicurati di annotare la directory in cui
hai montato il disco. Ad esempio: /mnt/disks/mnt-dir.
Configurare le directory di destinazione
Sulla macchina locale o sull'istanza VM, configura la struttura di directory per archiviare i dati scaricati.
Passa a una directory in cui vuoi scaricare i dati. Se utilizzi un disco permanente, sostituisci DATASET_ROOT_DIR con la directory in cui è montato il disco, ad esempio
/mnt/disks/mnt-dir:cd DATASET_ROOT_DIR
Crea una directory, ad esempio
imagenet, nella destinazione di download (macchina locale o VM TPU).mkdir imagenetIn questa directory, crea due sottodirectory:
trainevalidation.mkdir imagenet/train mkdir imagenet/validationEsporta la directory
imagenetcomeIMAGENET_HOME.export IMAGENET_HOME=DATASET_ROOT_DIR/imagenet sudo chown ${USER} ${IMAGENET_HOME}
Registrati 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 tua registrazione e ti invia un'email di conferma. Se non ricevi l'email di conferma entro un paio di giorni, contatta l'assistenza ImageNet per scoprire perché la tua registrazione non è stata confermata. Una volta confermata la registrazione, puoi scaricare il set di dati. I tutorial su Cloud TPU che utilizzano il set di dati ImageNet utilizzano le immagini dell'ImageNet Large Scale Visual Recognition Challenge 2012 (ILSVRC2012).
Scarica il set di dati ImageNet
Dal sito di download di LSRVC 2012, vai alla sezione Immagini della pagina e fai clic con il tasto destro del mouse su "Training images (Task 1 & 2)" (Immagini di addestramento (attività 1 e 2)). L'URL per scaricare la parte più grande del set di addestramento. Salva l'URL.
Fai clic con il tasto destro del mouse su "Training images (Task 3)" per ottenere l'URL del secondo set di addestramento. Salva l'URL.
Fai clic con il tasto destro del mouse su "Validation images (all tasks)" (Immagini di convalida (tutte le attività)) per ottenere l'URL del 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_HOMEcorrispondente sull'istanza VM. La copia del set di dati ImageNet dall'host locale all'istanza VM richiede circa 13 ore.Prima di copiare il set di dati ImageNet nella tua VM TPU, devi identificare il nome dell'istanza VM TPU. Per farlo, connettiti alla VM TPU utilizzando SSH. Il nome dell'istanza VM viene visualizzato nel prompt dei comandi dopo il simbolo
@.Utilizza il seguente comando per copiare i file in ~/imagenet sulla tua macchina locale in
$IMAGENET_HOMEsulla tua VM.gcloud compute scp --recurse $IMAGENET_HOME USERNAME@VM_INSTANCE_NAME:~/imagenet
Da
$IMAGENET_HOME, scarica i file "Training images (Task 1 & 2)" utilizzando l'URL salvato.Il file "Training images (Task 1 & 2)" è il set di addestramento di grandi dimensioni. Ha una dimensione di 138 GiB e, se lo scarichi sulla tua VM TPU utilizzando Cloud Shell, il download richiede circa 40 ore. Se Cloud Shell perde la connessione alla VM, puoi anteporre
nohupal comando o utilizzare screen.cd $IMAGENET_HOME nohup wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar
Sostituisci l'URL con quello che hai salvato in precedenza per "Immagini di addestramento (attività 1 e 2)", poiché l'URL potrebbe essere cambiato.
Estrai le singole directory di addestramento nella directory
$IMAGENET_HOME/trainutilizzando il seguente comando. L'estrazione richiede da 1 a 3 ore.tar xf $IMAGENET_HOME/ILSVRC2012_img_train.tar -C $IMAGENET_HOME/train
Estrai i singoli file tar di addestramento che si trovano nella directory
$IMAGENET_HOME/train, come mostrato nello script seguente:cd $IMAGENET_HOME/train for f in *.tar; do d=
basename $f .tarmkdir $d tar xf $f -C $d doneElimina i file tar dopo averli estratti per liberare spazio su disco.
Da
$IMAGENET_HOME, scarica i file "Training images (Task 3)" utilizzando l'URL salvato.Il file "Training images (Task 3)" (Immagini di addestramento (attività 3)) ha una dimensione di 728 MB e richiede solo pochi minuti per il download, quindi non devi prendere precauzioni contro la perdita della connessione Cloud Shell.
wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train_t3.tarSostituisci l'URL con quello che hai salvato in precedenza per "Immagini di addestramento (attività 3)", poiché l'URL potrebbe essere cambiato.
Estrai le singole directory di addestramento nella directory
$IMAGENET_HOME/trainutilizzando il seguente comando.tar xf $IMAGENET_HOME/ILSVRC2012_img_train_t3.tar -C $IMAGENET_HOME/train
Estrai i singoli file tar di addestramento che si trovano nella directory
$IMAGENET_HOME/train, come mostrato nello script seguente: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.
Da
$IMAGENET_HOME, scarica i file "Immagini di convalida (tutte le attività)" utilizzando l'URL salvato.Durante il download del file "Validation images (all tasks)" (Immagini di convalida (tutte le attività)), Cloud Shell potrebbe disconnettersi. Puoi utilizzare
nohupo screen per impedire la disconnessione di Cloud Shell.wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tarSostituisci l'URL con quello che hai salvato in precedenza per "Immagini di convalida (tutte le attività)", in quanto l'URL potrebbe essere cambiato.
Il download richiede circa 30 minuti.
Estrai i singoli file di convalida nella directory
$IMAGENET_HOME/validationutilizzando il seguente comando.tar xf $IMAGENET_HOME/ILSVRC2012_img_val.tar -C $IMAGENET_HOME/validation
Se hai scaricato i file di convalida sulla tua macchina locale, devi copiare la directory
$IMAGENET_HOME/validationsulla tua macchina locale nella directory$IMAGENET_HOME/validationsulla tua istanza VM. Questa 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/slim/datasets/imagenet_2012_validation_synset_labels.txt
Se hai scaricato il file delle etichette sulla tua macchina locale, devi copiarlo nella directory
$IMAGENET_HOMEsulla tua macchina locale in$IMAGENET_HOMEsulla tua istanza VM. Questa operazione di copia richiede alcuni secondi.I nomi delle sottodirectory di addestramento (ad esempio n03062245) sono "ID WordNet" (wnid). L'API ImageNet mostra il mapping degli ID WordNet alle etichette di convalida associate nel file
synset_labels.txt. In questo contesto, un synset è un gruppo di immagini visivamente simili.
Elabora il set di dati ImageNet e, facoltativamente, caricalo su Cloud Storage
Scarica lo script
imagenet_to_gcs.pyda GitHub:wget https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/imagenet_to_gcs.pySe carichi il set di dati in Cloud Storage:
Utilizza un bucket esistente o creane uno nuovo seguendo le istruzioni in Crea bucket.
Specifica la posizione del bucket di archiviazione in cui caricare il set di dati ImageNet:
export STORAGE_BUCKET=gs://BUCKET_NAME
Se carichi il set di dati sulla tua macchina locale o sulla tua VM, specifica una directory di dati in cui archiviare il set di dati:
(vm)$ export DATA_DIR=$IMAGENET_HOME/DATASET_DIRECTORY
Installa le seguenti librerie sul tuo computer o in un ambiente virtuale:
pip3 install google-cloud-storage pip3 install tensorflowEsegui lo script per pre-elaborare il set di dati non elaborato come TFRecord e caricarlo in Cloud Storage utilizzando questo 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 (per l'addestramento e la convalida) del modulo:
${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
${DATA_DIR}/validation-00001-of-00128
...
${DATA_DIR}/validation-00127-of-00128
Dopo aver caricato i dati nel bucket Cloud, esegui il modello e imposta --data_dir=${DATA_DIR}.