Deteksi Objek - TensorFlow - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Deteksi Objek - TensorFlow

Deteksi SageMaker Objek Amazon - TensorFlow algoritma adalah algoritma pembelajaran yang diawasi yang mendukung pembelajaran transfer dengan banyak model terlatih dari TensorFlow Model Garden. Gunakan pembelajaran transfer untuk menyempurnakan salah satu model terlatih yang tersedia pada kumpulan data Anda sendiri, meskipun sejumlah besar data gambar tidak tersedia. Algoritma deteksi objek mengambil gambar sebagai input dan output daftar kotak pembatas. Kumpulan data pelatihan harus terdiri dari gambar di. jpg,.jpeg, atau .png format.

Cara menggunakan Deteksi SageMaker Objek - TensorFlow algoritma

Anda dapat menggunakan Deteksi Objek - TensorFlow sebagai algoritma SageMaker bawaan Amazon. Bagian berikut menjelaskan cara menggunakan Object Detection - TensorFlow dengan SageMaker Python SDK. Untuk informasi tentang cara menggunakan Deteksi Objek - TensorFlow dari UI Amazon SageMaker Studio Classic, lihatMelatih, menyebarkan, dan mengevaluasi model yang telah dilatih sebelumnya dengan SageMaker JumpStart.

Deteksi Objek - TensorFlow algoritma mendukung pembelajaran transfer menggunakan salah satu TensorFlow model pra-terlatih yang kompatibel. Untuk daftar semua model terlatih yang tersedia, lihatTensorFlow Model. Setiap model yang telah dilatih sebelumnya memiliki keunikanmodel_id. Contoh berikut menggunakan ResNet 50 (model_id:tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8) untuk menyempurnakan dataset kustom. Model yang telah dilatih sebelumnya semuanya telah diunduh sebelumnya dari TensorFlow Hub dan disimpan dalam bucket Amazon S3 sehingga pekerjaan pelatihan dapat berjalan dalam isolasi jaringan. Gunakan artefak pelatihan model yang dibuat sebelumnya ini untuk membangun Estimator. SageMaker

Pertama, ambil URI image Docker, URI skrip pelatihan, dan URI model yang telah dilatih sebelumnya. Kemudian, ubah hyperparameters sesuai keinginan Anda. Anda dapat melihat kamus Python dari semua hyperparameters yang tersedia dan nilai defaultnya dengan. hyperparameters.retrieve_default Untuk informasi selengkapnya, lihat Deteksi Objek - TensorFlow Hyperparameters. Gunakan nilai-nilai ini untuk membangun SageMaker Estimator.

catatan

Nilai hyperparameter default berbeda untuk model yang berbeda. Misalnya, untuk model yang lebih besar, jumlah epoch default lebih kecil.

Contoh ini menggunakan PennFudanPeddataset, yang berisi gambar pejalan kaki di jalan. Kami mengunduh dataset sebelumnya dan membuatnya tersedia dengan Amazon S3. Untuk menyempurnakan model Anda, hubungi .fit menggunakan lokasi Amazon S3 dari kumpulan data pelatihan Anda.

from sagemaker import image_uris, model_uris, script_uris, hyperparameters from sagemaker.estimator import Estimator model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*" training_instance_type = "ml.p3.2xlarge" # Retrieve the Docker image train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None) # Retrieve the training script train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pretrained model tarball for transfer learning train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training") # Retrieve the default hyperparameters for fine-tuning the model hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version) # [Optional] Override default hyperparameters with custom values hyperparameters["epochs"] = "5" # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/PennFudanPed_COCO_format/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-od-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create an Estimator instance tf_od_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location, ) # Launch a training job tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Untuk informasi selengkapnya tentang cara menggunakan TensorFlow algoritma Deteksi SageMaker Objek - untuk pembelajaran transfer pada kumpulan data kustom, lihat buku catatan Pengantar SageMaker TensorFlow - Deteksi Objek.

Antarmuka input dan output untuk Deteksi Objek - TensorFlow algoritma

Masing-masing model terlatih yang tercantum dalam TensorFlow Model dapat disetel dengan baik ke kumpulan data apa pun dengan sejumlah kelas gambar. Perhatikan cara memformat data pelatihan Anda untuk masukan ke Deteksi Objek - TensorFlow model.

  • Format input data pelatihan: Data pelatihan Anda harus berupa direktori dengan images subdirektori dan annotations.json file.

Berikut ini adalah contoh struktur direktori input. Direktori input harus di-host di bucket Amazon S3 dengan jalur yang mirip dengan berikut ini:. s3://bucket_name/input_directory/ Perhatikan bahwa trailing / diperlukan.

input_directory |--images |--abc.png |--def.png |--annotations.json

annotations.jsonFile harus berisi informasi untuk kotak pembatas dan label kelas mereka dalam bentuk kamus "images" dan "annotations" kunci. Nilai untuk "images" kunci harus berupa daftar kamus. Harus ada satu kamus untuk setiap gambar dengan informasi berikut:{"file_name": image_name, "height": height, "width": width, "id": image_id}. Nilai untuk "annotations" kunci juga harus berupa daftar kamus. Harus ada satu kamus untuk setiap kotak pembatas dengan informasi berikut:{"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Setelah pelatihan, file pemetaan label dan model terlatih disimpan ke bucket Amazon S3 Anda.

Pelatihan tambahan

Anda dapat menyemai pelatihan model baru dengan artefak dari model yang Anda latih sebelumnya. SageMaker Pelatihan tambahan menghemat waktu pelatihan ketika Anda ingin melatih model baru dengan data yang sama atau serupa.

catatan

Anda hanya dapat menyemai Deteksi SageMaker Objek - TensorFlow model dengan Deteksi Objek lain - TensorFlow model yang dilatih SageMaker.

Anda dapat menggunakan kumpulan data apa pun untuk pelatihan tambahan, selama kumpulan kelas tetap sama. Langkah pelatihan inkremental mirip dengan langkah fine-tuning, tetapi alih-alih memulai dengan model yang telah dilatih sebelumnya, Anda mulai dengan model fine-tuning yang ada. Untuk informasi selengkapnya tentang cara menggunakan pelatihan tambahan dengan Deteksi SageMaker Objek - TensorFlow, lihat buku catatan Pengantar SageMaker TensorFlow - Deteksi Objek.

Inferensi dengan Deteksi Objek - algoritma TensorFlow

Anda dapat meng-host model yang disetel dengan baik yang dihasilkan dari pelatihan Deteksi TensorFlow Objek Anda untuk inferensi. Setiap gambar input untuk inferensi harus dalam.jpg,. jpeg, atau .png format dan menjadi tipe kontenapplication/x-image. Deteksi Objek - TensorFlow algoritma mengubah ukuran gambar input secara otomatis.

Menjalankan inferensi menghasilkan kotak pembatas, kelas yang diprediksi, dan skor setiap prediksi yang dikodekan dalam format JSON. Deteksi Objek - TensorFlow model memproses satu gambar per permintaan dan hanya menghasilkan satu baris. Berikut ini adalah contoh respons format JSON:

accept: application/json;verbose {"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":<original output of the model>}

Jika accept diatur keapplication/json, maka model hanya mengeluarkan kotak, kelas, dan skor yang dinormalisasi.

Rekomendasi instans Amazon EC2 untuk Deteksi Objek - algoritma TensorFlow

Deteksi Objek - TensorFlow algoritma mendukung semua instans GPU untuk pelatihan, termasuk:

  • ml.p2.xlarge

  • ml.p2.16xlarge

  • ml.p3.2xlarge

  • ml.p3.16xlarge

Kami merekomendasikan instans GPU dengan lebih banyak memori untuk pelatihan dengan ukuran batch besar. Instance CPU (seperti M5) dan GPU (P2 atau P3) dapat digunakan untuk inferensi. Untuk daftar lengkap instans SageMaker pelatihan dan inferensi di seluruh AWS Wilayah, lihat Harga Amazon SageMaker .

Deteksi Objek - TensorFlow contoh buku catatan

Untuk informasi selengkapnya tentang cara menggunakan TensorFlow algoritma Deteksi SageMaker Objek - untuk pembelajaran transfer pada kumpulan data kustom, lihat buku catatan Pengantar SageMaker TensorFlow - Deteksi Objek.

Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh, lihat. SageMaker Instans SageMaker Notebook Amazon Setelah Anda membuat instance notebook dan membukanya, pilih tab SageMakerContoh untuk melihat daftar semua SageMaker sampel. Untuk membuka buku catatan, pilih tab Use dan pilih Create copy.