Pelatihan dengan algoritma bawaan di AI Platform Training memungkinkan Anda mengirimkan set data dan melatih model tanpa menulis kode pelatihan apa pun. Halaman ini menjelaskan cara kerja algoritma deteksi objek gambar bawaan, dan cara menggunakannya.
Ringkasan
Algoritma deteksi objek gambar bawaan menggunakan set data pelatihan dan validasi Anda untuk melatih model secara terus-menerus, lalu menghasilkan output SavedModel yang paling akurat yang dihasilkan selama tugas pelatihan. Anda juga dapat menggunakan penyesuaian hyperparameter untuk mencapai akurasi model terbaik. SavedModel yang diekspor dapat digunakan secara langsung untuk prediksi, baik secara lokal maupun di-deploy ke AI Platform Prediction untuk layanan produksi.
Batasan
Algoritme bawaan gambar mendukung pelatihan dengan satu CPU, GPU, atau TPU. SaveModel yang dihasilkan kompatibel dengan penayangan di CPU dan GPU.
Fitur berikut tidak didukung untuk pelatihan dengan algoritma deteksi objek gambar bawaan:
- Pelatihan terdistribusi. Untuk menjalankan tugas pelatihan terdistribusi TensorFlow di Pelatihan AI Platform, Anda harus membuat aplikasi pelatihan.
- Pelatihan multi-GPU. Algoritma bawaan hanya menggunakan satu GPU dalam satu waktu. Untuk memanfaatkan pelatihan dengan beberapa GPU di satu mesin secara maksimal, Anda harus membuat aplikasi pelatihan. Temukan informasi selengkapnya tentang jenis mesin.
Jenis mesin yang didukung
Tingkat skala dan jenis mesin AI Platform Training berikut didukung:
- Tingkat skala
BASIC
- Tingkat skala
BASIC_TPU
- Tingkat skala
CUSTOM
dengan salah satu jenis mesin Compute Engine yang didukung oleh AI Platform Training. - Tingkat skala
CUSTOM
dengan salah satu jenis mesin lama berikut:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
complex_model_m_gpu
complex_model_l_gpu
complex_model_m_p100
complex_model_m_v100
complex_model_l_v100
TPU_V2
(8 core)
Memberi otorisasi Cloud TPU untuk mengakses project Anda
Ikuti langkah-langkah berikut untuk memberikan otorisasi pada nama akun layanan Cloud TPU yang terkait dengan project Google Cloud Anda:
Dapatkan nama akun layanan Cloud TPU Anda dengan memanggil
projects.getConfig
. Contoh:PROJECT_ID=PROJECT_ID curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID:getConfig
Simpan nilai kolom
serviceAccountProject
dantpuServiceAccount
yang ditampilkan oleh API.Lakukan inisialisasi akun layanan Cloud TPU:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{}' \ https://serviceusage.googleapis.com/v1beta1/projects/<serviceAccountProject>/services/tpu.googleapis.com:generateServiceIdentity
Sekarang, tambahkan akun layanan Cloud TPU sebagai anggota dalam project Anda, dengan peran Cloud ML Service Agent. Selesaikan langkah-langkah berikut di konsol Google Cloud atau menggunakan perintah gcloud
:
Konsol
- Login ke konsol Google Cloud dan pilih project tempat Anda menggunakan TPU.
- Pilih IAM & Admin > IAM.
- Klik tombol Tambahkan untuk menambahkan anggota ke project.
- Masukkan akun layanan TPU di kotak teks Anggota.
- Klik menu drop-down Roles.
- Aktifkan peran Cloud ML Service Agent (Service Agents > Cloud ML Service Agent).
gcloud
Tetapkan variabel lingkungan yang berisi project ID dan akun layanan Cloud TPU Anda:
PROJECT_ID=PROJECT_ID SVC_ACCOUNT=your-tpu-sa-123@your-tpu-sa.google.com.iam.gserviceaccount.com
Berikan peran
ml.serviceAgent
ke akun layanan Cloud TPU:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SVC_ACCOUNT --role roles/ml.serviceAgent
Untuk mengetahui detail selengkapnya tentang cara memberikan peran ke akun layanan, lihat dokumentasi IAM.
Memformat data input untuk pelatihan
Algoritma deteksi objek gambar bawaan mengharuskan data input Anda diformat
sebagai tf.Examples
, yang disimpan dalam file TFRecord. Struktur data tf.Example
dan
format file TFRecord dirancang untuk pembacaan data yang efisien dengan
TensorFlow.
Format TFRecord adalah format sederhana untuk menyimpan urutan data biner.
Dalam hal ini, semua data berisi representasi biner gambar. Setiap
gambar, beserta label class-nya, direpresentasikan sebagai tf.Example
. Anda dapat
menyimpan banyak tf.Example
ke satu file TFRecord. Anda juga dapat membuat shard set data besar di antara beberapa file TFRecord.
Pelajari TFRecord dan tf.Example
lebih lanjut.
Mengonversi gambar ke TFRecords
Untuk mengonversi gambar ke format yang diperlukan untuk mendapatkan prediksi, ikuti panduan TensorFlow Model Garden untuk menyiapkan input untuk deteksi objek.
Memeriksa izin bucket Cloud Storage
Untuk menyimpan data, gunakan bucket Cloud Storage di project Google Cloud yang sama dengan yang Anda gunakan untuk menjalankan tugas AI Platform Training. Jika tidak, berikan akses Pelatihan AI Platform ke bucket Cloud Storage tempat data Anda disimpan.
Format input yang diperlukan
Untuk melatih dengan algoritma deteksi objek gambar bawaan, data gambar Anda harus
terstruktur sebagai tf.Example
yang menyertakan kolom berikut:
image/encoded
adalah gambar mentah yang dienkode sebagai string.image/object/class/label
adalah daftar label bilangan bulat untuk gambar yang sesuai (satu label per kotak).Kumpulan label bilangan bulat yang digunakan untuk set data Anda harus berupa urutan berturut-turut yang dimulai dari
1
. Misalnya, jika set data Anda memiliki lima class, setiap label harus berupa bilangan bulat dalam interval[1, 5]
.image/object/bbox/xmin
adalah daftar koordinat x kiri yang dinormalisasi untuk gambar yang sesuai (satu koordinat per kotak). Setiap koordinat harus berada dalam interval[0, 1]
.image/object/bbox/xmax
adalah daftar koordinat x kanan yang dinormalisasi untuk gambar yang sesuai (satu koordinat per kotak). Setiap koordinat harus berada dalam interval[0, 1]
.image/object/bbox/ymin
adalah daftar koordinat y atas yang dinormalisasi untuk gambar yang sesuai (satu koordinat per kotak). Setiap koordinat harus berada dalam interval[0, 1]
.image/object/bbox/ymax
adalah daftar koordinat y bawah yang dinormalisasi untuk gambar yang sesuai (satu koordinat per kotak). Setiap koordinat harus berada dalam interval[0, 1]
.
Contoh berikut menunjukkan struktur tf.Example
untuk gambar
yang berisi dua kotak pembatas. Kotak pertama memiliki label 1
, sudut kiri atas
berada di koordinat ternormalisasi (0.1, 0.4)
, dan sudut kanan bawah
berada di koordinat ternormalisasi (0.5, 0.8)
. Kotak kedua memiliki
label 2
, sudut kiri atas berada di koordinat ternormalisasi (0.3, 0.5)
,
dan sudut kanan bawah berada di koordinat ternormalisasi (0.4, 0.7)
.
{
'image/encoded': '<encoded image data>',
'image/object/class/label': [1, 2],
'image/object/bbox/xmin': [0.1, 0.3],
'image/object/bbox/xmax': [0.5, 0.4],
'image/object/bbox/ymin': [0.4, 0.5],
'image/object/bbox/ymax': [0.8, 0.7]
}
Format tf.Example
ini mengikuti format yang sama yang digunakan dalam
skrip deteksi objek TFRecord.
Mendapatkan SavedModel terbaik sebagai output
Saat tugas pelatihan selesai, AI Platform Training akan menulis SavedModel TensorFlow ke
bucket Cloud Storage yang Anda tentukan sebagai jobDir
saat mengirimkan
tugas. SavedModel ditulis ke jobDir/model
. Misalnya, jika Anda
mengirimkan tugas ke gs://your-bucket-name/your-job-dir
, AI Platform Training akan menulis
SavedModel ke gs://your-bucket-name/your-job-dir/model
.
Jika Anda mengaktifkan penyesuaian hyperparameter, AI Platform Training akan menampilkan SavedModel TensorFlow dengan akurasi tertinggi yang dicapai selama proses pelatihan. Misalnya, jika Anda mengirimkan tugas pelatihan dengan 2.500 langkah pelatihan, dan akurasinya tertinggi pada 2.000 langkah, Anda akan mendapatkan TensorFlow SavedModel yang disimpan dari titik tertentu tersebut.
Setiap uji coba AI Platform Training menulis SavedModel TensorFlow dengan akurasi tertinggi ke direktorinya sendiri dalam bucket Cloud Storage Anda. Misalnya,
gs://your-bucket-name/your-job-dir/model/trial_{trial_id}
.
Tanda tangan SavedModel output adalah:
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['encoded_image'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: encoded_image_string_tensor:0
inputs['key'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: key:0
The given SavedModel SignatureDef contains the following output(s):
outputs['detection_boxes'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 100, 4)
name: detection_boxes:0
outputs['detection_classes'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 100)
name: detection_classes:0
outputs['detection_scores'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 100)
name: detection_scores:0
outputs['key'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: Identity:0
outputs['num_detections'] tensor_info:
dtype: DT_FLOAT
shape: (-1)
name: num_detections:0
Method name is: tensorflow/serving/predict
Input:
encoded_image
: Byte gambar mentah (tidak didekode). Ini sama denganimage/encoded
yang disimpan di tf.Example.key
: ID nilai string input prediksi. Nilai ini diteruskan kekey
output. Dalam prediksi batch, hal ini membantu memetakan output prediksi ke input.
Output:
num_detections
: Jumlah kotak pembatas yang terdeteksi.detection_boxes
: Daftar koordinat relatif (nilai dalam [0,1
]) ([ymin, xmin, ymax, xmax
]) dari kotak pembatas deteksi.detection_classes
: Daftar label class (bilangan bulat) yang diprediksi untuk setiap kotak deteksi didetection_boxes
.detection_scores
: Daftarscores
untuk setiap kotak deteksi didetection_boxes
.key
: Kunci output.
Berikut adalah contoh output prediksi:
{u'detection_classes': [1.0, 3.0, 3.0, ...],
u'key': u'test_key',
u'num_detections': 100.0,
u'detection_scores': [0.24401935935020447, 0.19375669956207275, 0.18359294533729553, ...]]}
Contoh konfigurasi
Jika mengirimkan tugas menggunakan gcloud
, Anda harus membuat file config.yaml
untuk jenis mesin dan spesifikasi penyesuaian hyperparameter. Jika menggunakan
konsol Google Cloud, Anda tidak perlu membuat file ini. Pelajari
cara mengirimkan tugas pelatihan.
Contoh file config.yaml
berikut menunjukkan cara mengalokasikan resource TPU
untuk tugas pelatihan Anda:
cat << EOF > config.yaml
trainingInput:
scaleTier: CUSTOM
masterType: n1-standard-16
masterConfig:
imageUri: gcr.io/cloud-ml-algos/image_object_detection:latest
acceleratorConfig:
type: NVIDIA_TESLA_P100
count: 1
workerType: cloud_tpu
workerConfig:
imageUri: gcr.io/cloud-ml-algos/image_object_detection:latest
tpuTfVersion: 1.14
acceleratorConfig:
type: TPU_V2
count: 8
workerCount: 1
EOF
Selanjutnya, gunakan file config.yaml
untuk mengirim tugas pelatihan.
Konfigurasi penyesuaian hyperparameter
Untuk menggunakan penyesuaian hyperparameter, sertakan konfigurasi penyesuaian hyperparameter Anda
dalam file config.yaml
yang sama dengan konfigurasi mesin Anda.
Anda dapat menemukan penjelasan singkat tentang setiap hyperparameter dalam konsol Google Cloud, dan penjelasan yang lebih komprehensif di referensi untuk algoritma deteksi objek gambar bawaan.
Contoh file config.yaml
berikut menunjukkan cara mengalokasikan resource TPU untuk
tugas pelatihan Anda, dan menyertakan konfigurasi penyesuaian hyperparameter:
cat << EOF > config.yaml
trainingInput:
# Use a cluster with many workers and a few parameter servers.
scaleTier: CUSTOM
masterType: n1-standard-16
masterConfig:
imageUri: gcr.io/cloud-ml-algos/image_object_detection:latest
acceleratorConfig:
type: NVIDIA_TESLA_P100
count: 1
workerType: cloud_tpu
workerConfig:
imageUri: gcr.io/cloud-ml-algos/image_object_detection:latest
acceleratorConfig:
type: TPU_V2
count: 8
workerCount: 1
# The following are hyperparameter configs.
hyperparameters:
goal: MAXIMIZE
hyperparameterMetricTag: "AP"
maxTrials: 6
maxParallelTrials: 3
enableTrialEarlyStopping: True
params:
- parameterName: initial_learning_rate
type: DOUBLE
minValue: 0.001
maxValue: 0.1
scaleType: UNIT_LOG_SCALE
EOF
Mengirim tugas pelatihan deteksi objek gambar
Bagian ini menjelaskan cara mengirimkan tugas pelatihan menggunakan algoritma deteksi objek gambar bawaan.
Konsol
Memilih algoritma
Buka halaman AI Platform Training Jobs di konsol Google Cloud:
Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritme bawaan.
Di halaman Create a new training job, pilih image object detection, lalu klik Next.
Memilih data pelatihan dan validasi
Di kotak drop-down pada bagian Data pelatihan, tentukan apakah Anda menggunakan satu file atau beberapa file:
- Untuk satu file, biarkan "Gunakan satu file di bucket GCS" dipilih.
- Untuk beberapa file, pilih "Gunakan beberapa file yang disimpan di satu direktori Cloud Storage".
Untuk Directory path, klik Browse. Di panel kanan, klik nama bucket tempat Anda mengupload data pelatihan, lalu buka file Anda.
Jika Anda memilih beberapa file, tempatkan karakter pengganti di Nama karakter pengganti. "Jalur GCS lengkap" akan ditampilkan di bawah untuk membantu Anda mengonfirmasi bahwa jalurnya sudah benar.
Di kotak drop-down pada bagian Data validasi, tentukan apakah Anda menggunakan satu file atau beberapa file:
- Untuk satu file, biarkan "Gunakan satu file di bucket GCS" dipilih.
- Untuk beberapa file, pilih "Gunakan beberapa file yang disimpan di satu direktori Cloud Storage".
Untuk Directory path, klik Browse. Di panel kanan, klik nama bucket tempat Anda mengupload data pelatihan, lalu buka file Anda.
Jika Anda memilih beberapa file, tempatkan karakter pengganti di Nama karakter pengganti. "Jalur GCS lengkap" akan ditampilkan di bawah untuk membantu Anda mengonfirmasi bahwa jalurnya sudah benar.
Di Output directory, masukkan jalur ke bucket Cloud Storage tempat Anda ingin AI Platform Training menyimpan output dari tugas pelatihan Anda. Anda dapat mengisi jalur bucket Cloud Storage secara langsung, atau klik tombol Browse untuk memilihnya.
Agar semuanya tetap teratur, buat direktori baru dalam bucket Cloud Storage Anda untuk tugas pelatihan ini. Anda dapat melakukannya dalam panel Jelajahi.
Klik Berikutnya.
Menetapkan argumen algoritma
Setiap argumen khusus algoritma menampilkan nilai default untuk tugas pelatihan tanpa penyesuaian hyperparameter. Jika mengaktifkan penyesuaian hyperparameter pada argumen algoritma, Anda harus menentukan nilai minimum dan maksimumnya.
Untuk mempelajari lebih lanjut semua argumen algoritma, ikuti link di konsol Google Cloud dan lihat referensi deteksi objek gambar bawaan untuk mengetahui detail selengkapnya.
Mengirim tugas
Pada tab Setelan tugas:
- Masukkan ID Tugas yang unik.
- Masukkan region yang tersedia (seperti "us-central1").
- Untuk memilih jenis mesin, pilih "CUSTOM" untuk scale tier.
Bagian untuk menampilkan Spesifikasi cluster kustom.
- Pilih jenis mesin yang tersedia untuk Jenis master.
- Jika Anda ingin menggunakan TPU, tetapkan Jenis pekerja ke cloud_tpu. Jumlah pekerja ditetapkan secara default ke 1.
Klik Selesai untuk mengirimkan tugas pelatihan.
gcloud
Tetapkan variabel lingkungan untuk tugas Anda:
PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME="YOUR_BUCKET_NAME" # Specify the same region where your data is stored REGION="YOUR_REGION" gcloud config set project $PROJECT_ID gcloud config set compute/region $REGION # Set Cloud Storage paths to your training and validation data # Include a wildcard if you select multiple files. TRAINING_DATA_PATH="gs://${BUCKET_NAME}/YOUR_DATA_DIRECTORY/train-*.tfrecord" VALIDATION_DATA_PATH="gs://${BUCKET_NAME}/YOUR_DATA_DIRECTORY/eval-*.tfrecord" # Specify the Docker container for your built-in algorithm selection IMAGE_URI="gcr.io/cloud-ml-algos/image_object_detection:latest" # Variables for constructing descriptive names for JOB_ID and JOB_DIR DATASET_NAME="coco" ALGORITHM="object_detection" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}" DATE="$(date '+%Y%m%d_%H%M%S')" # Specify an ID for this job JOB_ID="${MODEL_NAME}_${DATE}" # Specify the directory where you want your training outputs to be stored JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${JOB_ID}"
Kirim tugas:
gcloud ai-platform jobs submit training $JOB_ID \ --region=$REGION \ --config=config.yaml \ --job-dir=$JOB_DIR \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --train_batch_size=64 \ --num_eval_images=500 \ --train_steps_per_eval=2000 \ --max_steps=22500 \ --num_classes=90 \ --warmup_steps=500 \ --initial_learning_rate=0.08 \ --fpn_type="nasfpn" \ --aug_scale_min=0.8 \ --aug_scale_max=1.2
Setelah tugas berhasil dikirim, Anda dapat melihat log menggunakan perintah
gcloud
berikut:gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
Langkah selanjutnya
- Pelajari cara menggunakan set data Anda sendiri dengan skrip deteksi objek TFRecord.
- Lihat referensi deteksi objek gambar bawaan untuk mempelajari semua parameter yang berbeda.