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:
- Pastikan Anda memiliki ruang penyimpanan di target download.
- Siapkan direktori target.
- Daftar di situs ImageNet dan minta izin download.
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.
Buat direktori, misalnya,
imagenet
, di direktori beranda pada target download (komputer lokal atau VM TPU).mkdir imagenet
Di direktori ini, buat dua subdirektori:
train
danvalidation
.mkdir imagenet/train mkdir imagenet/validation
Ekspor direktori
imagenet
sebagaiIMAGENET_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
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
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.
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.
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.
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.
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.
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.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
Download skrip
imagenet_to_gcs.py
dari GitHub:wget https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/imagenet_to_gcs.py
Jika Anda mengupload set data ke Cloud Storage, tentukan lokasi bucket penyimpanan untuk mengupload set data ImageNet:
export STORAGE_BUCKET=gs://bucket-name
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
Instal library berikut di komputer atau di lingkungan virtual:
pip3 install google-cloud-storage pip3 install tensorflow
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}
.