Men-deploy tutorial Edge ke iOS (Core ML)

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.

gambar aplikasi yang diubah

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

  1. Download folder yang berisi model Core ML yang telah dilatih sebelumnya. Anda akan menggunakan model tersebut dalam tutorial ini.

  2. Mengekstrak file zip yang didownload.

  3. 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:

  1. Xcode
  2. 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:

  1. Meluncurkan aplikasi dengan memilih tombol play ikon xcode play di sudut kiri atas jendela Xcode.
  2. 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:

klasifikasi menggunakan aplikasi asli umum: furnitur, buah, tanaman

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

  1. Mendownload model bunga kustom Anda (model.mlmodel Core ML yang diekspor) yang Anda dapatkan dengan menyelesaikan panduan memulai model perangkat Edge. File model.mlmodel dan dict.txt dari ekspor model Core ML akan berada di lokasi Google Cloud Storage yang Anda tentukan.

  2. Mengganti nama model kustom Anda menjadi AutoML.mlmodel.

  3. Menghapus model yang ada dari project (MobileNet.mlmodel).

  4. Menambahkan model kustom ke dalam project di folder Vision+ML Example.

    menarik model kustom ke gambar Xcode

  5. Mengubah baris 30 di ImageClassificationViewController. Menghapus

    let 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 ikon xcode 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:

gambar aplikasi yang diubah

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.

  1. 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
  2. Buat VisionRequestHandler dengan gambar input menggunakan kode berikut:

    let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation)
  3. 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.