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ırma codelab'ine hoş geldiniz. Bu codelab'de, bir metin sınıflandırma modelini eğitip uygulamanıza dağıtmak için TensorFlow Lite ve Firebase'i nasıl kullanacağınızı öğreneceksiniz. Bu codelab, TensorFlow Lite örneğini temel alır.

Metin sınıflandırma, metne içeriğine göre etiket veya kategori atama işlemidir. Bu, doğal dil işlemedeki (NLP) temel görevlerden biridir ve yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş bir uygulama alanına sahiptir.

Duygu analizi, metin analizi teknikleri kullanılarak metin verilerindeki duyguların (olumlu, olumsuz ve nötr) yorumlanması ve sınıflandırılmasıdır. Duygu analizi, işletmelerin online görüşmelerde ve geri bildirimlerde müşterilerin ürünlere, markalara veya hizmetlere yönelik duygularını belirlemesine olanak tanır.

Bu eğiticide, duygu analizi için makine öğrenimi modelinin nasıl oluşturulacağı (özellikle metnin olumlu veya olumsuz olarak sınıflandırılması) gösterilmektedir. Bu, önemli ve yaygın olarak uygulanabilen bir makine öğrenimi problemi türü olan ikili (veya iki sınıflı) sınıflandırma örneğidir.

Neler öğreneceksiniz?

  • TF Lite Model Maker ile TF Lite yaklaşım analizi modeli eğitme
  • TF Lite modellerini Firebase ML'ye dağıtma ve uygulamanızdan bu modellere erişme
  • Firebase Analytics ile model doğruluğunu ölçmek için kullanıcı geri bildirimlerini izleme
  • Firebase Performance Monitoring ile model performansını profilleme
  • Dağıtılan birden fazla modelden hangisinin Remote Config aracılığıyla yükleneceğini seçme
  • Firebase A/B Testi ile farklı modelleri deneyin

Gerekenler

  • Xcode 11 veya sonraki sürümler
  • CocoaPods 1.9.1 veya sonraki sürümler

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

Sadece okuyun Okuyun ve alıştırmaları tamamlayın

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

Başlangıç Orta İleri

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 Alma

Kodu indirme

Örnek projeyi klonlayıp proje dizininde pod update komutunu ç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 nasıl çalıştığını anlamak için metin sınıflandırmasıyla oynayın.

Firebase'i ayarlama

Yeni bir Firebase projesi oluşturmak için dokümanları inceleyin. Projenizi oluşturduktan sonra GoogleService-Info.plist dosyasını Firebase konsolundan indirip Xcode projesinin kök dizinine 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'nizin didFinishLaunchingWithOptions yönteminde, dosyanın en üstüne Firebase'i içe aktarın.

import FirebaseCore

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

FirebaseApp.configure()

Uygulamanın doğru şekilde yapılandırıldığından ve başlatıldığında 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 modelini 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ığınızda, bir mobil uygulamaya dağıtıma hazır bir TensorFlow Lite duygu analizi modeliniz olur.

5. Firebase ML'ye model dağıtma

Bir modeli Firebase ML'ye dağıtmak iki temel nedenden dolayı faydalıdır:

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

Model, konsol aracılığıyla veya Firebase Admin SDK kullanılarak programatik olarak dağıtılabilir. Bu adımda, konsol üzerinden dağıtım yapacağız.

İlk olarak Firebase konsolunu açın ve soldaki gezinme panelinde Machine Learning'i tıklayın. Bu özelliği ilk kez açıyorsanız "Başlayın"ı tıklayın. Ardından "Özel"e gidin ve "Model ekle" düğmesini tıklayın.

İstendiğinde modele sentiment_analysis adını verin ve önceki adımda Colab'den indirdiğiniz dosyayı yükleyin.

3c3c50e6ef12b3b.png

6. Firebase ML'den modeli indirme

TFLite modelleri nispeten büyük olabileceğinden, uzaktaki modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. Modelimiz yalnızca bir özellik için kullanılıyorsa ve kullanıcı bu özelliği hiç kullanmıyorsa önemli miktarda veriyi boşuna indirmiş oluruz. Bu nedenle, uygulamayı başlattığımızda modeli hemen yüklemekten kaçınmak isteriz. Ayrıca, yalnızca kablosuz ağa bağlıyken modelleri getirme gibi indirme seçenekleri de ayarlayabiliriz. Modelin ağ bağlantısı olmasa bile kullanılabilmesini istiyorsanız yedek olarak uygulamayla birlikte paketlememeniz önemlidir.

Basitlik adına, varsayılan olarak paketlenmiş modeli kaldıracağız ve uygulama ilk kez başlatıldığında her zaman Firebase'den bir model indireceğiz. Bu sayede, yaklaşım analizi yaparken çıkarımın Firebase'den sağlanan modelle yapıldığından emin olabilirsiniz.

ModelLoader.swift dosyasının en üstüne 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 uzaktan modelin başarıyla indirildiğini belirten bir günlük görmeniz gerekir. Biraz metin yazmayı deneyin ve uygulamanın davranışının değişmediğini onaylayın.

7. Modeli uygulamanıza entegre edin

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

Bağımlılığı ekleme

Uygulamanın Podfile'ına gidin ve TensorFlow Lite Görev Kitaplığı'nı (Metin) uygulamanın bağımlılıklarına ekleyin. Bağımlılığı target 'TextClassification' bildirimi 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ı başlatma

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

ViewController.swift

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

import TensorFlowLiteTaskText

Bu yorumu, son adımda değiştirdiğimiz yöntemin üzerinde bulun:

// TODO: Add a TFLNLClassifier property.

TODO'yu aşağıdaki kodla değiştirin:

private var classifier: TFLNLClassifier?

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

// TODO: Initialize an NLClassifier from the downloaded model

TODO'yu aşağıdaki kodla değiştirin:

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

Metni sınıflandırma

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

ViewController.swift

classify(text:) yönteminde, YAPILACAKLAR 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. Son uygulamayı çalıştırma

Yaklaşım analizi modelini uygulamaya entegre ettiniz. Şimdi bunu test edelim. iOS cihazınızı bağlayın ve Xcode araç çubuğunda Run'ı ( execute.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ı desteklemek için başka özellikler de sunar:

  • Kullanıcıların cihazında çalışan model çıkarım hızınızı ölçmek için Firebase Performance Monitoring.
  • Kullanıcı tepkisini ölçerek modelinizin üretimdeki performansını ölçmek için Firebase Analytics.
  • Modelinizin birden fazla 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, hangi sürümün üretimde daha iyi performans gösterdiğini öğrenmek için iyi bir yöntemdir.

Bu özelliklerden uygulamanızda nasıl yararlanacağınız hakkında daha fazla bilgi edinmek için aşağıdaki codelab'leri inceleyin:

10. Tebrikler!

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

İşlediğimiz konular

  • TensorFlow Lite
  • Firebase ML

Sonraki adımlar

  • Model çıkarım hızınızı Firebase Performance Monitoring ile ölçün.
  • Firebase ML Model Yönetimi API'si aracılığıyla modeli doğrudan Colab'den 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 testine tabi tutun.

Daha Fazla Bilgi

Sorunuz mu var?

Sorunları Bildirme