Mendownload, memproses sebelumnya, dan mengupload set data ImageNet
Dokumen ini menjelaskan cara mendownload, melakukan prapemrosesan, dan mengupload set data ImageNet untuk digunakan dengan arsitektur VM Cloud TPU.
ImageNet adalah database gambar. Gambar dalam database diatur menjadi hierarki, dengan setiap node hierarki digambarkan oleh ratusan dan ribuan gambar.Ukuran database ImageNet berarti perlu 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.
Pra-pemrosesan seluruh set data ImageNet
Set data ImageNet terdiri dari tiga bagian, 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 dimuat dalam data pelatihan ImageNet (duplikat telah dihapus).
Data validasi dan pengujian terdiri dari 150.000 foto, yang dikumpulkan dari Flickr dan mesin telusur lainnya, yang diberi label dengan adanya atau tidaknya 1.000 kategori objek. Kategori objek 1.000 berisi node internal dan node daun ImageNet, tetapi tidak tumpang-tindih satu sama lain. Subset acak berisi 50.000 gambar dengan label telah dirilis sebagai data validasi beserta daftar 1.000 kategori tersebut. Gambar yang tersisa akan digunakan untuk evaluasi dan telah dirilis tanpa label.
Langkah-langkah untuk melakukan pra-pemrosesan lengkap set data ImageNet
Ada lima langkah untuk menyiapkan set data ImageNet lengkap untuk digunakan oleh model machine learning:
- Pastikan ada ruang penyimpanan pada target download.
- Menyiapkan direktori target.
- Daftar di situs ImageNet dan minta izin download.
Memverifikasi persyaratan ruang
Baik mendownload set data ke komputer lokal atau ke instance VM, Anda memerlukan sekitar 300 GB ruang yang tersedia pada target download.
Alokasi disk default untuk VM TPU adalah 100 GB. Karena download ke VM TPU Anda memerlukan kapasitas 300 GB, jika akan mendownload ke instance VM TPU, Anda harus menambahkan persistent disk dan memiliki 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 Saat menghapus instance ke Hapus disk untuk memastikan bahwa disk telah dihapus saat Anda menghapus VM.
- Catat jalur ke disk baru Anda. Misalnya:
/mnt/disks/mnt-dir
.
Menyiapkan direktori target
Di mesin lokal atau instance VM Anda, siapkan struktur direktori untuk menyimpan data yang didownload.
Buat direktori, misalnya,
imagenet
, di bagian direktori utama Anda pada target download (mesin lokal atau VM TPU).mkdir imagenet
Pada direktori ini, buat dua sub direktori:
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 dan mengirimkan email konfirmasi. Jika Anda tidak mendapatkan email konfirmasi dalam beberapa hari, hubungi dukungan ImageNet untuk mengetahui alasan pendaftaran Anda belum dikonfirmasi. Setelah pendaftaran dikonfirmasi, Anda dapat mengunduh {i>dataset<i}. Tutorial Cloud TPU yang menggunakan set data ImageNet menggunakan gambar dari Tantangan Pengenalan Visual Skala Besar ImageNet 2012 (ILSVRC2012).
Mengunduh {i>dataset<i} ImageNet
Dari situs download LSRVC 2012, buka bagian Gambar di halaman dan klik kanan "Pelatihan image (Tugas 1 & 2)". URL untuk mendownload bagian terbesar dari set pelatihan. Simpan URL.
Klik kanan "Pelatihan image (Tugas 3)" guna mendapatkan URL untuk set pelatihan kedua. Simpan URL.
Klik kanan "Validation images (all task)" guna mendapatkan URL untuk set data validasi. Simpan URL.
Jika mendownload file ImageNet ke komputer lokal, Anda harus menyalin direktori di mesin lokal Anda ke direktori
$IMAGENET_HOME
yang sesuai pada instance VM Anda. 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 Anda menggunakan SSH. Nama instance VM ditampilkan di command prompt setelah simbol
@
.Gunakan perintah berikut untuk menyalin file pada ~/imagenet di mesin lokal Anda ke
$IMAGENET_HOME
di VM.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. Ukuran ini 138 GB, dan jika Anda mendownload ke VM TPU menggunakan Cloud Shell, download 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 Anda simpan sebelumnya 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 file tar pelatihan individual yang berada 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 {i>tar<i} setelah Anda mengekstraknya untuk mengosongkan ruang {i>disk<i}.
Dari
$IMAGENET_HOME
, download file "Gambar pelatihan (Tugas 3)" menggunakan URL yang disimpan.File "Pelatihan image (Tugas 3)" berukuran 728 MB dan hanya memerlukan waktu beberapa menit untuk didownload. Jadi, 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 Anda simpan sebelumnya 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 file tar pelatihan individual yang berada 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 {i>tar<i} setelah Anda mengekstraknya untuk mengosongkan ruang {i>disk<i}.
Dari
$IMAGENET_HOME
, download file "Image validasi (semua tugas)" menggunakan URL yang disimpan.Saat mendownload file "Validasi image (semua tugas)", Cloud Shell Anda dapat terputus. Anda dapat menggunakan
nohup
atau layar agar koneksi Cloud Shell tidak terputus.wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar
Ganti URL dengan URL yang sebelumnya Anda simpan untuk "Image 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 Anda mendownload file validasi ke mesin lokal, Anda harus menyalin direktori
$IMAGENET_HOME/validation
di mesin lokal Anda ke direktori$IMAGENET_HOME/validation
pada instance VM Anda. Operasi penyalinan 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 sudah mendownload file label ke komputer lokal, Anda harus 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 menunjukkan pemetaan ID WordNet ke label validasi terkaitnya di file
synset_labels.txt
. Sinset dalam konteks ini adalah kelompok gambar yang mirip secara visual.
Memproses set data Imagenet dan, secara opsional, menguploadnya 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 mesin lokal atau VM, tentukan direktori data untuk menyimpan set data:
(vm)$ export DATA_DIR=$IMAGENET_HOME/dataset-directory
Instal library berikut di komputer Anda atau di lingkungan virtual:
pip3 install google-cloud-storage pip3 install tensorflow
Jalankan skrip untuk melakukan pra-pemrosesan pada set data mentah sebagai TFRecords, lalu upload 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 serangkaian 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 Anda dan tetapkan --data_dir=${DATA_DIR}
.