Hal yang akan Anda buat
Dalam tutorial ini, Anda akan mendownload model Core ML kustom yang diekspor
(.mlmodel
). Kemudian, Anda akan
menjalankan aplikasi iOS
siap pakai yang menggunakan model untuk mengidentifikasi gambar bunga.
Tujuan
Dalam panduan pengantar menyeluruh ini, Anda akan menggunakan kode untuk:
- Menjalankan model Core ML terlatih di aplikasi iOS.
Ringkasan
Dengan framework Core ML, Anda dapat menggunakan model machine learning terlatih untuk mengklasifikasikan data input. Framework Vision bekerja sama dengan Core ML untuk menerapkan model klasifikasi ke gambar, dan untuk melakukan pra-pemrosesan gambar untuk melakukan pra-pemrosesan gambar tersebut agar tugas machine learning menjadi lebih mudah dan lebih andal.
Sebelum memulai
Mendownload model Edge umum
Download folder yang berisi model Core ML yang telah dilatih sebelumnya. Anda akan menggunakan model tersebut dalam tutorial ini.
Mengekstrak file zip yang didownload.
Sebelum memulai tutorial, buka direktori project root:
cd ClassifyingImagesWithVisionAndCoreML
Anda akan menjalankan semua contoh kode berikut dari direktori ini.
Melatih & mengekspor model Edge yang disesuaikan
Sebelum melanjutkan, selesaikan panduan memulai model perangkat Edge dengan modifikasi berikut:
- Gunakan set data bunga yang tersedia, atau gunakan set data Anda sendiri.
- Pada langkah Melatih model Anda, pilih opsi pilihan model Edge.
- Pada langkah Mengekspor model, ikuti petunjuk cara mengekspor model ML Core.
Anda akan menggunakan file model.mlmodel
Core ML flower yang dihasilkan untuk menjalankan
versi kustom dari aplikasi iOS yang ada.
Menyiapkan aplikasi iOS
Aplikasi iOS demo memerlukan beberapa alat tambahan:
- Xcode
- Alat command line Xcode
Mendownload Xcode
Gunakan link berikut untuk mendownload Xcode di komputer Anda.
Menginstal alat command line Xcode
Instal alat command line Xcode dengan menjalankan perintah berikut di command line:
xcode-select --install
Membuka project
Buka project dengan Xcode. Anda dapat membuka project baik melalui command line ataupun menggunakan Google Cloud Platform Console. Untuk membuka project menggunakan command line, jalankan perintah berikut:
open ./Vision+ML\ Example.xcodeproj
Menjalankan aplikasi asli
Untuk meluncurkan aplikasi di Simulator dan mendapatkan anotasi gambar, selesaikan langkah-langkah berikut:
- Meluncurkan aplikasi dengan memilih tombol play di sudut kiri atas jendela Xcode.
- Memberikan gambar prediksi ke aplikasi. Anda dapat menyediakan gambar dengan dua cara:
- Mengambil foto dengan kamera perangkat, atau
- menambahkan foto ke galeri foto perangkat dengan menarik lalu melepasnya ke jendela Simulator
Aplikasi ini menampilkan dua kategori klasifikasi teratas sesuai urutan skor keyakinan yang ditetapkan model untuk masing-masing kategori.
Hasilnya akan menampilkan anotasi yang mirip dengan gambar berikut:
Menjalankan aplikasi yang disesuaikan
Aplikasi asli menggunakan model Core ML yang mengklasifikasikan gambar ke dalam salah satu dari 1.000 kelas ImageNet umum (hewan, buah, furnitur, tanaman, dll.), menggunakan MobileNet standar.
Mengubah aplikasi agar akan menggunakan model yang dilatih ulang dengan kategori gambar bunga kustom berikut:
- bunga aster
- dandelion
- mawar
- bunga matahari
- tulip
Menambahkan file model ke project
Mendownload model bunga kustom Anda (
model.mlmodel
Core ML yang diekspor) yang Anda dapatkan dengan menyelesaikan panduan memulai model perangkat Edge. Filemodel.mlmodel
dandict.txt
dari ekspor model Core ML akan berada di lokasi Google Cloud Storage yang Anda tentukan.Mengganti nama model kustom Anda menjadi
AutoML.mlmodel
.Menghapus model yang ada dari project (
MobileNet.mlmodel
).Menambahkan model kustom ke dalam project di folder
Vision+ML Example
.Mengubah baris 30 di
ImageClassificationViewController
. Menghapuslet model = try VNCoreMLModel(for: MobileNet().model)
Mengganti baris ini dengan:
let model = try VNCoreMLModel(for: AutoML().model)
Menjalankan aplikasi model kustom
Untuk meluncurkan kembali aplikasi di Simulator, pilih tombol play di sudut kiri atas jendela Xcode.
Untuk menguji modifikasi, tambahkan file gambar dari direktori flower_photos/
dan dapatkan prediksinya.
Hasilnya akan terlihat seperti ini:
Untuk mencoba model tersebut, tambahkan gambar data pelatihan yang Anda download sebelumnya, atau download gambar dari penelusuran Google untuk digunakan untuk prediksi.
Bagaimana cara kerjanya?
Sekarang setelah aplikasi Anda berjalan, lihat kode khusus CoreML dan Vision Framework.
Menyiapkan Vision dengan Model Core ML
Core ML secara otomatis menghasilkan class Swift yang memberikan akses mudah ke model ML Anda.
Dalam contoh ini, Core ML secara otomatis menghasilkan class MobileNet dari
MobileNetmodel
.
Dapatkan instance model dengan kode berikut:
let model = try VNCoreMLModel(for: MobileNet().model)
Buat permintaan Vision dengan model dan pengendali penyelesaian di atas. Pengendali penyelesaian menangani respons prediksi dari model.
Google Cloud Platform Console harus diperbarui di thread utama:
let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in DispatchQueue.main.async { guard let results = request.results else { self.classificationLabel.text = "Unable to classify image.\n\(error!.localizedDescription)" return }
results
akan selalu berada di VNClassificationObservation
, seperti yang ditentukan oleh
model Core ML dalam project ini.
let classifications = results as! [VNClassificationObservation] })
Pengendali penyelesaian permintaan Vision mengindikasikan apakah permintaan berhasil
atau menghasilkan error. Jika berhasil, properti hasilnya
akan berisi objek VNClassificationObservation
yang menjelaskan kemungkinan
klasifikasi yang diidentifikasi oleh model ML.
Model ML memproses gambar input dalam rasio aspek tetap, tetapi gambar input mungkin memiliki rasio aspek arbitrer, sehingga Vision harus menskalakan atau memangkas gambar agar sesuai. Untuk hasil terbaik, setel properti
imageCropAndScaleOption
permintaan agar sesuai dengan tata letak gambar yang digunakan untuk melatih model.request.imageCropAndScaleOption = .centerCrop
Buat
VisionRequestHandler
dengan gambar input menggunakan kode berikut:let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation)
Panggil fungsi tampil pengendali dengan meneruskan objek permintaan.
do { try handler.perform([self.classificationRequest]) } catch {
Pengendali ini menangkap error pemrosesan gambar umum. Pengendali penyelesaian
classificationRequest
processClassifications(_:error:)
menangkap error khusus untuk memproses permintaan tersebut.print("Failed to perform classification.\n\(error.localizedDescription)") }
Apa Selanjutnya:
Sekarang Anda telah menyelesaikan panduan aplikasi menggunakan model Core ML yang diekspor dari AutoML Vision Edge. Anda telah menggunakan model Core ML terlatih untuk menguji aplikasi klasifikasi gambar umum sebelum memodifikasinya dan mendapatkan anotasi sampel bunga kustom. Anda kemudian memeriksa kode khusus Core ML untuk memahami fungsi yang mendasarinya.
Referensi berikut dapat membantu Anda terus mempelajari model Core ML models dan AutoML Vision Edge:
- Pelajari CoreML lebih lanjut dari dokumentasi resmi dan repositori kode.
- Coba versi kamera aplikasi demo ini, yang menggunakan versi terkuantifikasi pada model. Hal ini memberikan kekuatan yang sama dalam paket yang lebih kecil dan lebih efisien.
- Coba beberapa model siap TFLitelainnya termasuk detektor kata kunci ucapan dan versi smart reply di perangkat.