TensorFlow Lite ve Firebase - iOS Codelab ile uygulamanıza cihaz üzerinde metin sınıflandırma ekleyin

1. Genel Bakış

classification_result_screen.png

TensorFlow Lite ve Firebase ile metin sınıflandırması codelab'ine hoş geldiniz. Bu codelab'de, uygulamanıza metin sınıflandırma modeli eğitmek ve dağıtmak için TensorFlow Lite ve Firebase'i nasıl kullanacağınızı öğreneceksiniz. Bu codelab, bu TensorFlow Lite örneğine dayanmaktadır.

Metin sınıflandırması, metne içeriğine göre etiket veya kategori atama işlemidir. Yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş uygulamaları olan doğal dil işleme (NLP) temel görevlerinden biridir.

Duygu analizi, metin verilerindeki duyguların (pozitif, olumsuz ve nötr) metin analizi tekniklerini kullanarak yorumlanması ve sınıflandırılmasıdır. Duygu analizi, işletmelerin online sohbetlerde ve geri bildirimlerde müşterilere göre ürün, marka veya hizmetlere yönelik duyguları belirlemesine olanak tanır.

Bu eğitimde, özellikle metni olumlu veya olumsuz olarak sınıflandıran bir duygu analizi makine öğrenimi modelinin nasıl oluşturulacağı gösterilmektedir. Bu, önemli ve geniş çapta uygulanabilir bir makine öğrenimi problemi türü olan ikili (veya iki sınıflı) sınıflandırmaya örnektir.

Neler öğreneceksiniz?

  • TF Lite Model Maker ile TF Lite duyarlı analiz modeli eğitme
  • TF Lite modellerini Firebase ML'ye dağıtma ve uygulamanızdan bunlara erişme
  • Firebase Analytics ile model doğruluğunu ölçmek için kullanıcı geri bildirimlerini takip etme
  • Firebase Performance Monitoring aracılığıyla profil modeli performansı
  • Dağıtılan birden fazla modelden hangisinin Remote Config üzerinden yükleneceğini seçin
  • Firebase A/B Testi ile farklı modellerle deneme yapma

Gerekenler

  • Xcode 11 (veya üzeri)
  • CocoaPods 1.9.1 veya sonraki sürümler

Bu eğitimi nasıl kullanacaksınız?

Yalnızca okuma Okuyun ve alıştırmaları tamamlayın

Android uygulaması oluşturma deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Seviye Uzman

2. Firebase Konsolu projesi oluşturma

Firebase'i projeye ekleme

  1. Firebase konsoluna gidin.
  2. Yeni Proje Oluştur'u seçin ve projenize "Firebase ML iOS Codelab" adını verin.

3. Örnek Projeyi İndirin

Kodu indirme

Örnek projeyi klonlayarak ve proje dizininde pod update'yi çalıştırarak başlayın:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

Git yüklü değilse örnek projeyi GitHub sayfasından veya bu bağlantıyı tıklayarak da indirebilirsiniz. Projeyi indirdikten sonra Xcode'da çalıştırın ve metin sınıflandırmasında denemeler yaparak işleyiş şeklini öğrenin.

Firebase'i ayarlama

Yeni bir Firebase projesi oluşturmak için belgeleri uygulayın. Projenizi oluşturduktan sonra Firebase konsolundan projenizin GoogleService-Info.plist dosyasını indirip Xcode projesinin köküne sürükleyin.

9efb62a92f27e939.png

Firebase'i Podfile dosyanıza ekleyin ve pod install komutunu çalıştırın.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

AppDelegate'ın didFinishLaunchingWithOptions yönteminde, dosyanın en üstüne Firebase'i içe aktarın

import FirebaseCore

Ardından, Firebase'i yapılandırmak için bir çağrı ekleyin.

FirebaseApp.configure()

Uygulamanın doğru yapılandırıldığından ve başlatılırken kilitlenmediğinden emin olmak için projeyi tekrar çalıştırın.

4. Yaklaşım analizi modeli eğitme

Belirli bir metnin duygusunu tahmin etmek için metin sınıflandırma modeli eğitmek üzere TensorFlow Lite Model Maker'ı kullanacağız.

Bu adım, Google Colab'de açabileceğiniz bir Python not defteri olarak sunulur.

Colab'de aç

Bu adımı tamamladıktan sonra, mobil uygulamaya dağıtıma hazır bir TensorFlow Lite yaklaşım analizi modeliniz olur.

5. Firebase ML'ye model dağıtma

Bir modelin Firebase ML'ye dağıtılması iki ana nedenden dolayı yararlıdır:

  1. Uygulama yükleme boyutunu küçük tutup modeli yalnızca gerektiğinde indirebiliriz.
  2. Model, düzenli olarak ve uygulamanın tamamından farklı bir sürüm döngüsüyle güncellenebilir.

Model, Firebase Admin SDK'sı kullanılarak konsol üzerinden veya programatik olarak dağıtılabilir. Bu adımda, uygulamayı konsol üzerinden dağıtacağız.

Öncelikle Firebase Console'u açın ve sol gezinme panelinde Makine Öğrenimi'ni tıklayın. "Başlayın"ı tıklayın bu bağlantıyı ilk kez açıyorsanız. Ardından "Özel"e gidin ve "Model ekle" düğmesini tıklayın.

İstendiğinde modeli sentiment_analysis olarak adlandırın ve önceki adımda Colab'dan indirdiğiniz dosyayı yükleyin.

3c3c50e6ef12b3b.png

6. Modeli Firebase ML'den indirme

TFLite modelleri nispeten büyük boyutlara ulaşabileceğinden, uzak modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. İdeal olarak, modelimiz yalnızca bir özellik için kullanılıyorsa ve kullanıcı bu özelliği hiç kullanmıyorsa modelin uygulama başlatılır başlatılmaz yüklenmesini önlemek isteriz. Aksi takdirde, önemli miktarda veriyi nedensiz yere indirmiş oluruz. Modelleri yalnızca kablosuz ağa bağlıyken getirmek gibi indirme seçeneklerini de ayarlayabiliriz. Modelin ağ bağlantısı olmadan bile kullanılabilmesini istiyorsanız, modeli uygulama olmadan yedek olarak paketlemeniz de önemlidir.

Kolaylık sağlaması açısından, varsayılan paket halinde sunulan modeli kaldıracağız ve uygulama ilk kez başlatıldığında Firebase'den her zaman model indireceğiz. Bu sayede, yaklaşım analizini çalıştırırken çıkarım işleminin Firebase'den sağlanan modelle çalışacağından emin olabilirsiniz.

ModelLoader.swift üst kısımdan Firebase modülünü içe aktarın.

import FirebaseCore
import FirebaseMLModelDownloader

Ardından, aşağıdaki yöntemleri uygulayın.

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

ViewController.swift'nın viewDidLoad bölümünde, loadModel() çağrısını yeni model indirme yöntemimizle değiştirin.

// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")

  // TODO: Initialize an NLClassifier from the downloaded model
}

Uygulamanızı yeniden çalıştırın. Birkaç saniye sonra, Xcode'da uzak modelin başarıyla indirildiğini belirten bir günlük görürsünüz. Bir metin yazmayı deneyin ve uygulamanın davranışının değişmediğinden emin olun.

7. Modeli uygulamanıza entegre edin

TensorFlow Lite Görev Kitaplığı, TensorFlow Lite modellerini sadece birkaç satır kodla uygulamanıza entegre etmenize yardımcı olur. Firebase'den indirilen TensorFlow Lite modelini kullanarak bir TFLNLClassifier örneğini başlatacağız. Ardından, uygulama kullanıcılarının metin girişini sınıflandırmak ve sonucu kullanıcı arayüzünde göstermek için kullanacağız.

Bağımlılık ekleme

Uygulamanın Podfile dosyasına gidin ve uygulamanın bağımlılıklarına TensorFlow Lite Görev Kitaplığı'nı (Metin) ekleyin. Bağımlılığı target 'TextClassification' bildiriminin altına eklediğinizden emin olun.

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Yeni bağımlılığı yüklemek için pod install komutunu çalıştırın.

Metin sınıflandırıcıyı başlatma

Ardından, Görev Kitaplığı'nın NLClassifier işlevini kullanarak Firebase'den indirilen yaklaşım analizi modelini yükleriz.

ViewController.swift

Bir TFLNLClassifier örnek değişkeni tanımlayalım. Dosyanın üst kısmında yeni bağımlılığı içe aktarın:

import TensorFlowLiteTaskText

Son adımda değiştirdiğimiz yöntemin üzerindeki bu yorumu bulun:

// TODO: Add a TFLNLClassifier property.

TODO bölümünü aşağıdaki kodla değiştirin:

private var classifier: TFLNLClassifier?

textClassifier değişkenini Firebase'den indirilen yaklaşım analizi modeliyle başlatın. Son adımda eklediğimiz bu yorumu bulun:

// TODO: Initialize an NLClassifier from the downloaded model

TODO bölümünü aşağıdaki kodla değiştirin:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Metin sınıflandırma

classifier örneği ayarlandıktan sonra tek bir yöntem çağrısıyla yaklaşım analizi çalıştırabilirsiniz.

ViewController.swift

classify(text:) yönteminde TODO yorumunu bulun:

// TODO: Run sentiment analysis on the input text

Yorumu aşağıdaki kodla değiştirin:

guard let classifier = self.classifier else { return }

// Classify the text
let classifierResults = classifier.classify(text: text)

// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)

8. Uygulamanın son sürümünü çalıştırma

Yaklaşım analizi modelini uygulamaya entegre ettiniz. Şimdi test edelim. iOS cihazınızı bağlayın ve Xcode araç çubuğunda Çalıştır'ı ( yürütme.png) tıklayın.

Uygulama, girdiğiniz film incelemesinin duygusunu doğru şekilde tahmin edebilmelidir.

classification_result_screen.png

9. Uygulamayı daha fazla Firebase özelliğiyle güçlendirme

Firebase, TFLite modellerinizi barındırmanın yanı sıra makine öğrenimi kullanım alanlarınızı güçlendirmek için başka özellikler de sunar:

  • Firebase Performance Monitoring, kullanıcıların cihaz modellerinde çalışan model çıkarım hızını ölçmenizi sağlar olanak tanır.
  • Kullanıcı tepkisini ölçerek modelinizin üretimde ne kadar iyi performans gösterdiğini ölçmek için Firebase Analytics.
  • Modelinizin birden çok sürümünü test etmek için Firebase A/B Testi
  • Daha önce TFLite modelimizin iki sürümünü eğittiğimizi hatırlıyor musunuz? A/B testi, üretimde hangi sürümün daha iyi performans gösterdiğini öğrenmenin iyi bir yoludur.

Uygulamanızda bu özelliklerden nasıl yararlanacağınız hakkında daha fazla bilgi edinmek için aşağıdaki codelab'lere göz atın:

10. Tebrikler!

Bu codelab'de, yaklaşım analizi TFLite modelini eğitmeyi ve Firebase kullanarak bu modeli mobil uygulamanıza dağıtmayı öğrendiniz. TFLite ve Firebase hakkında daha fazla bilgi edinmek için diğer TFLite örneklerine ve Firebase başlangıç kılavuzlarına göz atın.

İşlediğimiz konular

  • TensorFlow Lite
  • Firebase ML

Sonraki adımlar

  • Firebase Performance Monitoring ile model çıkarım hızınızı ölçün.
  • Modeli, Firebase ML Model Management API üzerinden Colab'dan doğrudan Firebase'e dağıtın.
  • Kullanıcıların tahmin sonucuyla ilgili geri bildirimde bulunmasına olanak tanıyan bir mekanizma ekleyin ve kullanıcı geri bildirimlerini izlemek için Firebase Analytics'i kullanın.
  • Firebase A/B Testi ile Ortalama Kelime Vektörü modelini ve MobileBERT modelini A/B testi yapın.

Daha Fazla Bilgi

Sorunuz mu var?

Sorun Bildir