Mendownload, melakukan prapemrosesan, dan mengupload set data ImageNet

Dokumen ini menjelaskan cara mendownload, memproses awal, dan mengupload set data ImageNet untuk digunakan dengan arsitektur VM Cloud TPU.

ImageNet adalah database gambar. Gambar dalam database disusun ke dalam hierarki, dengan setiap node hierarki digambarkan oleh ratusan dan ribuan gambar.

Ukuran database ImageNet berarti diperlukan waktu yang cukup lama untuk melatih model. Alternatifnya adalah menggunakan versi demonstrasi set data, yang disebut sebagai fake_imagenet. Versi demonstrasi ini memungkinkan Anda menguji model, sekaligus mengurangi persyaratan penyimpanan dan waktu yang terkait dengan penggunaan database ImageNet lengkap.

Melakukan prapemrosesan set data ImageNet lengkap

Set data ImageNet terdiri dari tiga bagian, yaitu data pelatihan, data validasi, dan label gambar.

Data pelatihan berisi 1.000 kategori dan 1,2 juta gambar, yang dikemas untuk didownload. Data validasi dan pengujian tidak terdapat dalam data pelatihan ImageNet (duplikat telah dihapus).

Data validasi dan pengujian terdiri dari 150.000 foto, yang dikumpulkan dari Flickr dan mesin telusur lainnya, diberi label secara manual dengan kehadiran atau tidak adanya 1.000 kategori objek. 1.000 kategori objek berisi node internal dan node daun ImageNet, tetapi tidak tumpang-tindih satu sama lain. Subkumpulan acak dari 50.000 gambar dengan label telah dirilis sebagai data validasi beserta daftar 1.000 kategori. Gambar yang tersisa digunakan untuk evaluasi dan telah dirilis tanpa label.

Langkah-langkah untuk melakukan prapemrosesan set data ImageNet lengkap

Ada lima langkah untuk menyiapkan set data ImageNet lengkap agar dapat digunakan oleh model machine learning:

  1. Pastikan Anda memiliki ruang penyimpanan di target download.
  2. Siapkan direktori target.
  3. Daftar di situs ImageNet dan minta izin download.
  4. Download set data ke disk lokal atau instance VM.

  5. Jalankan skrip prapemrosesan dan upload.

Memverifikasi persyaratan ruang

Baik Anda mendownload set data ke komputer lokal atau ke instance VM, Anda memerlukan ruang penyimpanan sekitar 300 GB yang tersedia di target download.

Alokasi disk default untuk VM TPU adalah 100 GB. Karena download ke VM TPU memerlukan 300 GB, jika Anda akan mendownload ke instance VM TPU, Anda harus menambahkan persistent disk dan dengan ruang tambahan sebesar 200 GB untuk menyelesaikan download. Di VM TPU, Anda dapat memeriksa penyimpanan yang tersedia dengan perintah df -ha.

Saat menambahkan persistent disk, pastikan untuk:

  • Tetapkan When deleting instance ke Delete disk untuk memastikan disk dihapus saat Anda menghapus VM.
  • Catat jalur ke disk baru Anda. Misalnya: /mnt/disks/mnt-dir.

Menyiapkan direktori target

Di komputer lokal atau instance VM, siapkan struktur direktori untuk menyimpan data yang didownload.

  1. Buat direktori, misalnya, imagenet, di direktori beranda pada target download (komputer lokal atau VM TPU).

    mkdir imagenet
    
  2. Di direktori ini, buat dua subdirektori: train dan validation.

    mkdir imagenet/train
    mkdir imagenet/validation
    
  3. Ekspor direktori imagenet sebagai IMAGENET_HOME.

    export IMAGENET_HOME=~/imagenet

Mendaftar dan meminta izin untuk mendownload set data

Daftar di situs Imagenet. Anda tidak dapat mendownload set data hingga ImageNet mengonfirmasi pendaftaran Anda dan mengirimkan email konfirmasi. Jika Anda tidak menerima email konfirmasi dalam beberapa hari, hubungi dukungan ImageNet untuk mengetahui alasan pendaftaran Anda belum dikonfirmasi. Setelah pendaftaran dikonfirmasi, Anda dapat mendownload set data. Tutorial Cloud TPU yang menggunakan set data ImageNet menggunakan gambar dari ImageNet Large Scale Visual Recognition Challenge 2012 (ILSVRC2012).

Mendownload set data ImageNet

  1. Dari situs download LSRVC 2012, buka bagian Gambar di halaman, lalu klik kanan "Gambar pelatihan (Tugas 1 & 2)". URL untuk mendownload bagian terbesar set pelatihan. Simpan URL.

    Klik kanan "Gambar pelatihan (Tugas 3)" untuk mendapatkan URL set pelatihan kedua. Simpan URL.

    Klik kanan "Gambar validasi (semua tugas)" untuk mendapatkan URL set data validasi. Simpan URL.

    Jika mendownload file ImageNet ke komputer lokal, Anda perlu menyalin direktori di komputer lokal ke direktori $IMAGENET_HOME yang sesuai di instance VM. Menyalin set data ImageNet dari host lokal ke instance VM Anda memerlukan waktu sekitar 13 jam.

    Sebelum menyalin set data ImageNet ke VM TPU, Anda perlu mengidentifikasi nama instance VM TPU. Untuk melakukannya, hubungkan ke VM TPU menggunakan SSH. Nama instance VM ditampilkan di command prompt setelah simbol @.

    Gunakan perintah berikut untuk menyalin file di ~/imagenet di mesin lokal Anda ke $IMAGENET_HOME di VM Anda.

    gcloud compute scp --recurse $IMAGENET_HOME username@vm-instance-name:~/imagenet
  2. Dari $IMAGENET_HOME, download file "Gambar pelatihan (Tugas 1 & 2)" menggunakan URL yang disimpan.

    File "Gambar pelatihan (Tugas 1 & 2)" adalah set pelatihan yang besar. Ukurannya 138 GB, dan jika Anda mendownload ke VM TPU menggunakan Cloud Shell, download akan memerlukan waktu sekitar 40 jam. Jika Cloud Shell kehilangan koneksinya ke VM, Anda dapat menambahkan nohup ke perintah atau menggunakan screen.

    cd $IMAGENET_HOME \
    nohup wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar

    Ganti URL dengan URL yang sebelumnya Anda simpan untuk "Gambar pelatihan (Tugas 1 & 2)", karena URL mungkin telah berubah.

  3. Ekstrak setiap direktori pelatihan ke direktori $IMAGENET_HOME/train menggunakan perintah berikut. Ekstraksi memerlukan waktu antara 1 - 3 jam.

    tar xf $IMAGENET_HOME/ILSVRC2012_img_train.tar -C $IMAGENET_HOME/train

    Ekstrak setiap file tar pelatihan yang terletak di direktori $IMAGENET_HOME/train, seperti yang ditunjukkan dalam skrip berikut:

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

    Hapus file tar setelah Anda mengekstraknya untuk mengosongkan ruang disk.

  4. Dari $IMAGENET_HOME, download file "Gambar pelatihan (Tugas 3)" menggunakan URL tersimpan.

    File "Image pelatihan (Tugas 3)" berukuran 728 MB dan hanya memerlukan waktu beberapa menit untuk didownload, sehingga Anda tidak perlu melakukan tindakan pencegahan agar tidak kehilangan koneksi Cloud Shell.

    wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train_t3.tar

    Ganti URL dengan URL yang sebelumnya Anda simpan untuk "Gambar pelatihan (Tugas 3)", karena URL mungkin telah berubah.

  5. Ekstrak setiap direktori pelatihan ke direktori $IMAGENET_HOME/train menggunakan perintah berikut.

    tar xf $IMAGENET_HOME/ILSVRC2012_img_train_t3.tar -C $IMAGENET_HOME/train

    Ekstrak setiap file tar pelatihan yang terletak di direktori $IMAGENET_HOME/train, seperti yang ditunjukkan dalam skrip berikut:

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

    Hapus file tar setelah Anda mengekstraknya untuk mengosongkan ruang disk.

  6. Dari $IMAGENET_HOME, download file "Gambar validasi (semua tugas)" menggunakan URL yang disimpan.

    Saat mendownload file "Gambar validasi (semua tugas)", Cloud Shell Anda dapat terputus. Anda dapat menggunakan nohup atau screen untuk mencegah Cloud Shell terputus.

    wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar

    Ganti URL dengan URL yang sebelumnya Anda simpan untuk "Gambar validasi (semua tugas)", karena URL mungkin telah berubah.

    Download ini memerlukan waktu sekitar 30 menit.

  7. Ekstrak setiap file validasi ke direktori $IMAGENET_HOME/validation menggunakan perintah berikut.

    tar xf $IMAGENET_HOME/ILSVRC2012_img_val.tar -C $IMAGENET_HOME/validation

    Jika mendownload file validasi ke komputer lokal, Anda perlu menyalin direktori $IMAGENET_HOME/validation di komputer lokal ke direktori $IMAGENET_HOME/validation di instance VM. Operasi salinan ini memerlukan waktu sekitar 30 menit.

  8. Download file label.

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

    Jika mendownload file label ke komputer lokal, Anda perlu menyalinnya ke direktori $IMAGENET_HOME di komputer lokal ke $IMAGENET_HOME di instance VM. Operasi penyalinan ini memerlukan waktu beberapa detik.

    Nama subdirektori pelatihan (misalnya, n03062245) adalah "ID WordNet" (wnid). ImageNet API menampilkan pemetaan ID WordNet ke label validasi terkait dalam file synset_labels.txt. Sinset dalam konteks ini adalah grup gambar yang mirip secara visual.

Memproses set data Imagenet dan, secara opsional, mengupload ke Cloud Storage

  1. Download skrip imagenet_to_gcs.py dari GitHub:

    wget https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/imagenet_to_gcs.py
  2. Jika Anda mengupload set data ke Cloud Storage, tentukan lokasi bucket penyimpanan untuk mengupload set data ImageNet:

    export STORAGE_BUCKET=gs://bucket-name
  3. Jika Anda mengupload set data ke komputer lokal atau VM, tentukan direktori data untuk menyimpan set data:

    (vm)$ export DATA_DIR=$IMAGENET_HOME/dataset-directory
  4. Instal library berikut di komputer atau di lingkungan virtual:

    pip3 install google-cloud-storage
    pip3 install tensorflow
    
  5. Jalankan skrip untuk memproses data mentah sebagai TFRecords dan menguploadnya ke Cloud Storage menggunakan perintah berikut:

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

Skrip ini menghasilkan kumpulan direktori (untuk pelatihan dan validasi) dalam bentuk:

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

dan

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

Setelah data diupload ke bucket Cloud, jalankan model dan tetapkan --data_dir=${DATA_DIR}.