Algoritma Segmentasi Semantik - Amazon SageMaker

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

Algoritma Segmentasi Semantik

Algoritma segmentasi SageMaker semantik menyediakan pendekatan tingkat piksel berbutir halus untuk mengembangkan aplikasi visi komputer. Ini menandai setiap piksel dalam gambar dengan label kelas dari satu set kelas yang telah ditentukan. Penandaan sangat penting untuk memahami adegan, yang sangat penting untuk peningkatan jumlah aplikasi visi komputer, seperti kendaraan self-driving, diagnostik pencitraan medis, dan penginderaan robot.

Sebagai perbandingan, SageMaker Klasifikasi Gambar - MXNet ini adalah algoritma pembelajaran yang diawasi yang hanya menganalisis seluruh gambar, mengklasifikasikannya ke dalam salah satu dari beberapa kategori keluaran. Deteksi Objek - MXNetIni adalah algoritma pembelajaran yang diawasi yang mendeteksi dan mengklasifikasikan semua contoh objek dalam gambar. Ini menunjukkan lokasi dan skala setiap objek dalam gambar dengan kotak pembatas persegi panjang.

Karena algoritma segmentasi semantik mengklasifikasikan setiap piksel dalam sebuah gambar, ia juga memberikan informasi tentang bentuk objek yang terkandung dalam gambar. Output segmentasi direpresentasikan sebagai gambar skala abu-abu, yang disebut topeng segmentasi. Masker segmentasi adalah gambar skala abu-abu dengan bentuk yang sama dengan gambar input.

Algoritma segmentasi SageMaker semantik dibangun menggunakan kerangka MXNet Gluon dan toolkit Gluon CV. Ini memberi Anda pilihan tiga algoritma bawaan untuk melatih jaringan saraf yang dalam. Anda dapat menggunakan algoritma Fully-Convolutional Network (FCN), algoritma Pyramid Scene Parsing (PSP), atau V3. DeepLab

Masing-masing dari tiga algoritma memiliki dua komponen yang berbeda:

  • Tulang punggung (atau encoder) —Jaringan yang menghasilkan peta aktivasi fitur yang andal.

  • Dekoder —Jaringan yang membangun topeng segmentasi dari peta aktivasi yang dikodekan.

Anda juga memiliki pilihan tulang punggung untuk algoritma FCN, PSP, dan DeepLab V3:50 atau 101. ResNet ResNet Tulang punggung ini termasuk artefak terlatih yang awalnya dilatih pada tugas klasifikasi. ImageNet Anda dapat menyempurnakan tulang punggung ini untuk segmentasi menggunakan data Anda sendiri. Atau, Anda dapat menginisialisasi dan melatih jaringan ini dari awal hanya menggunakan data Anda sendiri. Decoder tidak pernah dilatih sebelumnya.

Untuk menerapkan model terlatih untuk inferensi, gunakan SageMaker layanan hosting. Selama inferensi, Anda dapat meminta topeng segmentasi baik sebagai gambar PNG atau sebagai satu set probabilitas untuk setiap kelas untuk setiap piksel. Anda dapat menggunakan masker ini sebagai bagian dari pipeline yang lebih besar yang mencakup pemrosesan gambar hilir tambahan atau aplikasi lain.

Notebook Sampel Segmentasi Semantik

Untuk contoh notebook Jupyter yang menggunakan algoritma segmentasi SageMaker semantik untuk melatih model dan menyebarkannya untuk melakukan inferensi, lihat Contoh Segmentasi Semantik. Untuk petunjuk tentang cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh, lihat. SageMaker Instans SageMaker Notebook Amazon

Untuk melihat daftar semua SageMaker sampel, buat dan buka instance buku catatan, dan pilih tab SageMaker Contoh. Contoh notebook segmentasi semantik terletak di bawah Algoritma Pengantar Amazon. Untuk membuka buku catatan, pilih tab Use, dan pilih Create copy.

Antarmuka Input/Output untuk Algoritma Segmentasi Semantik

SageMaker segmentasi semantik mengharapkan dataset pelatihan pelanggan berada di Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3). Setelah dilatih, ia menghasilkan artefak model yang dihasilkan di Amazon S3. Format antarmuka input untuk segmentasi SageMaker semantik mirip dengan kebanyakan kumpulan data pembandingan segmentasi semantik standar. Dataset di Amazon S3 diharapkan akan disajikan dalam dua saluran, satu train untuk dan satu untuk menggunakan empat direktori, dua validation untuk gambar dan dua untuk anotasi. Anotasi diharapkan berupa gambar PNG yang tidak terkompresi. Dataset mungkin juga memiliki peta label yang menjelaskan bagaimana pemetaan anotasi dibuat. Jika tidak, algoritma menggunakan default. Ini juga mendukung format gambar manifes tambahan (application/x-image) untuk pelatihan dalam mode input Pipe langsung dari Amazon S3. Untuk inferensi, titik akhir menerima gambar dengan tipe konten. image/jpeg

Bagaimana Pelatihan Bekerja

Data pelatihan dibagi menjadi empat direktori:train,, train_annotationvalidation, danvalidation_annotation. Ada saluran untuk masing-masing direktori ini. Dataset juga diharapkan memiliki satu label_map.json file per saluran untuk train_annotation dan validation_annotation masing-masing. Jika Anda tidak menyediakan file JSON ini, SageMaker berikan peta label set default.

Dataset yang menentukan file-file ini akan terlihat mirip dengan contoh berikut:

s3://bucket_name | |- train | | - 0000.jpg | - coffee.jpg |- validation | | - 00a0.jpg | - bananna.jpg |- train_annotation | | - 0000.png | - coffee.png |- validation_annotation | | - 00a0.png | - bananna.png |- label_map | - train_label_map.json | - validation_label_map.json

Setiap gambar JPG di direktori kereta dan validasi memiliki gambar label PNG yang sesuai dengan nama yang sama di direktori dantrain_annotation. validation_annotation Konvensi penamaan ini membantu algoritme untuk mengaitkan label dengan gambar yang sesuai selama pelatihan. Salurantrain, train_annotationvalidation, dan validation_annotation saluran adalah wajib. Anotasi adalah gambar PNG saluran tunggal. Format berfungsi selama metadata (mode) dalam gambar membantu algoritme membaca gambar anotasi ke dalam integer unsigned 8-bit saluran tunggal. Untuk informasi lebih lanjut tentang dukungan kami untuk mode, lihat dokumentasi Python Image Library. Sebaiknya gunakan piksel 8-bit, P mode warna sejati.

Gambar yang dikodekan adalah bilangan bulat 8-bit sederhana saat menggunakan mode. Untuk beralih dari pemetaan ini ke peta label, algoritme menggunakan satu file pemetaan per saluran, yang disebut peta label. Peta label digunakan untuk memetakan nilai dalam gambar dengan indeks label aktual. Di peta label default, yang disediakan secara default jika Anda tidak memberikannya, nilai piksel dalam matriks anotasi (gambar) langsung mengindeks label. Gambar-gambar ini dapat berupa file PNG skala abu-abu atau file PNG yang diindeks 8-bit. File peta label untuk kasus default yang tidak diskalakan adalah sebagai berikut:

{ "scale": "1" }

Untuk memberikan kontras untuk dilihat, beberapa perangkat lunak anotasi menskalakan gambar label dengan jumlah yang konstan. Untuk mendukung hal ini, algoritma segmentasi SageMaker semantik menyediakan opsi penskalaan ulang untuk menurunkan nilai ke nilai label aktual. Ketika penskalaan ke bawah tidak mengubah nilai menjadi bilangan bulat yang sesuai, algoritme default ke bilangan bulat terbesar kurang dari atau sama dengan nilai skala. Kode berikut menunjukkan cara mengatur nilai skala untuk mengubah skala nilai label:

{ "scale": "3" }

Contoh berikut menunjukkan bagaimana "scale" nilai ini digunakan untuk mengubah skala nilai gambar anotasi masukan ketika mereka dipetakan ke mapped_label nilai yang akan digunakan dalam pelatihan. encoded_label Nilai label dalam gambar anotasi input adalah 0, 3, 6, dengan skala 3, sehingga dipetakan ke 0, 1, 2 untuk pelatihan:

encoded_label = [0, 3, 6] mapped_label = [0, 1, 2]

Dalam beberapa kasus, Anda mungkin perlu menentukan pemetaan warna tertentu untuk setiap kelas. Gunakan opsi peta dalam pemetaan label seperti yang ditunjukkan pada contoh label_map file berikut:

{ "map": { "0": 5, "1": 0, "2": 2 } }

Pemetaan label untuk contoh ini adalah:

encoded_label = [0, 5, 2] mapped_label = [1, 0, 2]

Dengan pemetaan label, Anda dapat menggunakan sistem anotasi dan perangkat lunak anotasi yang berbeda untuk mendapatkan data tanpa banyak preprocessing. Anda dapat memberikan satu peta label per saluran. File untuk peta label di label_map saluran harus mengikuti konvensi penamaan untuk struktur empat direktori. Jika Anda tidak memberikan peta label, algoritme mengasumsikan skala 1 (default).

Pelatihan dengan Augmented Manifest Format

Format manifes yang diperbesar memungkinkan Anda melakukan pelatihan dalam mode Pipe menggunakan file gambar tanpa perlu membuat file RecorDio. File manifes yang diperbesar berisi objek data dan harus dalam format JSON Lines, seperti yang dijelaskan dalam permintaan. CreateTrainingJob Setiap baris dalam manifes adalah entri yang berisi URI Amazon S3 untuk gambar dan URI untuk gambar anotasi.

Setiap objek JSON dalam file manifes harus berisi source-ref kunci. source-refKuncinya harus berisi nilai URI Amazon S3 ke gambar. Label disediakan di bawah nilai AttributeNames parameter sebagaimana ditentukan dalam CreateTrainingJobpermintaan. Ini juga dapat berisi metadata tambahan di bawah tag metadata, tetapi ini diabaikan oleh algoritma. Pada contoh di bawah ini, AttributeNames yang terkandung dalam daftar referensi ["source-ref", "city-streets-ref"] gambar dan anotasi. Nama-nama ini harus -ref ditambahkan padanya. Saat menggunakan algoritma Segmentasi Semantik dengan Augmented Manifest, nilai RecordWrapperType parameter harus "RecordIO" dan nilai parameter harus. ContentType application/x-recordio

{"source-ref": "S3 bucket location", "city-streets-ref": "S3 bucket location", "city-streets-metadata": {"job-name": "label-city-streets", }}

Untuk informasi selengkapnya tentang file manifes tambahan, lihatAugmented Manifest Files untuk Pekerjaan Pelatihan.

Pelatihan Inkremental

Anda juga dapat menyemai pelatihan model baru dengan model yang Anda latih sebelumnya SageMaker. Pelatihan tambahan ini menghemat waktu pelatihan ketika Anda ingin melatih model baru dengan data yang sama atau serupa. Saat ini, pelatihan tambahan hanya didukung untuk model yang dilatih dengan Segmentasi SageMaker Semantik bawaan.

Untuk menggunakan model pra-terlatih Anda sendiri, tentukan ChannelName sebagai “model” dalam InputDataConfig CreateTrainingJobpermintaan. Atur saluran ContentType untuk model keapplication/x-sagemaker-model. Parameter backbonealgorithm,crop_size,, dan num_classes input yang menentukan arsitektur jaringan harus secara konsisten ditentukan dalam hiperparameter input model baru dan model pra-terlatih yang Anda unggah ke saluran model. Untuk file model yang telah dilatih sebelumnya, Anda dapat menggunakan artefak terkompresi (.tar.gz) dari output. SageMaker Anda hanya dapat menggunakan format Gambar untuk memasukkan data. Untuk informasi lebih lanjut tentang pelatihan tambahan dan untuk instruksi tentang cara menggunakannya, lihatGunakan Pelatihan Inkremental di Amazon SageMaker.

Menghasilkan Kesimpulan

Untuk menanyakan model terlatih yang diterapkan ke titik akhir, Anda perlu memberikan gambar dan AcceptType yang menunjukkan jenis output yang diperlukan. Titik akhir mengambil gambar JPEG dengan tipe image/jpeg konten. Jika Anda meminta AcceptType dariimage/png, algoritme mengeluarkan file PNG dengan topeng segmentasi dalam format yang sama dengan label itu sendiri. Jika Anda meminta jenis penerimaanapplication/x-recordio-protobuf, algoritma mengembalikan probabilitas kelas yang dikodekan dalam format recordio-protobuf. Format yang terakhir menghasilkan tensor 3D di mana dimensi ketiga berukuran sama dengan jumlah kelas. Komponen ini menunjukkan probabilitas setiap label kelas untuk setiap piksel.

Rekomendasi Instans EC2 untuk Algoritma Segmentasi Semantik

Algoritma segmentasi SageMaker semantik hanya mendukung instans GPU untuk pelatihan, dan sebaiknya gunakan instans GPU dengan lebih banyak memori untuk pelatihan dengan ukuran batch yang besar. Algoritma dapat dilatih menggunakan instance P2, P3, G4dn, atau G5 dalam konfigurasi mesin tunggal.

Untuk inferensi, Anda dapat menggunakan instance CPU (seperti C5 dan M5) dan instance GPU (seperti P3 dan G4dn) atau keduanya. Untuk informasi tentang jenis instans yang menyediakan berbagai kombinasi CPU, GPU, memori, dan kapasitas jaringan untuk inferensi, lihat Jenis Instance Amazon SageMaker Amazon.