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

1. Genel Bakış

sınıflandırma_sonucu_ekranı.png

TensorFlow Lite ve Firebase codelab ile Metin Sınıflandırma'ya 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ırma, metne göre etiket veya kategori atama işlemidir. Yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş kapsamlı uygulamalarla, doğal dil işleme (NLP) için temel görevlerden 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. Yaklaşım analizi, işletmelerin online görüşmeler ve geri bildirimler aracılığıyla ürünlere, markalara veya hizmetlere yönelik müşteri duyarlılığını belirlemelerine olanak tanır.

Bu eğitimde, yaklaşım analizi için, özellikle de metni pozitif veya negatif olarak sınıflandırmak için nasıl bir makine öğrenimi modeli oluşturulacağı açıklanmaktadır. 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 yaklaşım analizi modeli eğitme
  • TF Lite modellerini Firebase ML'ye dağıtıp uygulamanızdan bu modellere erişin
  • 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 aracılığıyla farklı modellerle denemeler yapma

Gerekenler

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

Bu eğiticiden nasıl yararlanacaksınız?

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

Android uygulamaları geliştirme deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Firebase konsol projesi oluşturun

Firebase'i projeye ekleyin

  1. Firebase konsoluna gidin.
  2. Create New Project'i (Yeni Proje Oluştur) seçin ve projenize "Firebase ML iOS Codelab" adını verin.

3. Örnek Projeyi Alma

Kodu İndirin

Ö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 metin sınıflandırmasında denemeler yaparak işleyiş şeklini öğrenin.

Firebase'i ayarlayın

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

9efb62a92f27e939.png

Firebase'i Podfile dosyanıza ekleyin ve kapsül yüklemesini çalıştırın.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

AppDelegate cihazınızın didFinishLaunchingWithOptions yönteminde, dosyanın en üstündeki 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 şekilde yapılandırıldığından ve başlatma sırasında kilitlenmediğinden emin olmak için projeyi tekrar çalıştırın.

4. Yaklaşım analizi modeli eğitme

Belirli bir metnin yaklaşımını tahmin etmek amacıyla metin sınıflandırma modelini eğitmek için 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 Konsolu'nu 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"yi tıklayın. 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. Modeli Firebase ML'den indir

TFLite modelleri nispeten büyük hale getirilebileceği için Firebase'den uzak modelin ne zaman uygulamanıza indirileceğini seçmek zor olabilir. İdeal olarak, uygulama başlatıldığında modelin hemen yüklenmesini önlemek isteriz. Çünkü modelimiz yalnızca bir özellik için kullanılırsa ve kullanıcı bu özelliği hiçbir zaman kullanmazsa önemli miktarda veri hiçbir sebep olmadan indirilmiş olur. 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. Böylece yaklaşım analizi çalıştırırken çıkarımın Firebase'den sağlanan modelle çalıştığı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 ürününün viewDidLoad öğesinde, 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. Metin yazmayı deneyin ve uygulamanın çalışma biçiminin değişmediğini onaylayın.

7. Modeli uygulamanıza entegre edin

Tensorflow Lite Görev Kitaplığı, TensorFlow Lite modellerini yalnızca 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ığı 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 öğesini 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ünde yeni bağımlılığı içe aktarın:

import TensorFlowLiteTaskText

Son adımda değiştirdiğimiz yöntemin üzerinde şu 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 şu 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, 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. 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 yorumunun yaklaşımını doğru bir şekilde tahmin edebilmelidir.

sınıflandırma_sonucu_ekranı.png

9. Daha fazla Firebase özelliğiyle uygulamayı güçlendirin

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:

  • Firebase Performance Monitoring, kullanıcıların cihaz modellerinde çalışan model çıkarım hızını ölçmenizi sağlar olanak tanır.
  • Firebase Analytics ile kullanıcı tepkisini ölçerek modelinizin üretimde ne kadar iyi performans gösterdiğini ölçün.
  • 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 Colab'den Firebase ML Model Management API aracılığıyla doğrudan Firebase'e dağıtın.
  • Kullanıcıların tahmin sonucu hakkında geri bildirim verebileceği bir mekanizma ekleyin ve kullanıcı geri bildirimlerini takip etmek için Firebase Analytics'i kullanın.
  • Firebase A/B testiyle Ortalama Kelime Vektörü modeli ve MobileBERT modeli üzerinde A/B testi gerçekleştirin.

Daha Fazla Bilgi

Sorunuz mu var?

Sorun Bildir