Google Play hizmetlerinde (BETA) TensorFlow Lite

TensorFlow Lite, 17 Şubat 2022'den itibaren Play hizmetlerinin güncel sürümünü çalıştıran tüm Android cihazlarda herkese açık beta olarak Google Play hizmetleri API'sinde mevcuttur. Bu API, TensorFlow Lite kitaplıklarını uygulamanıza statik olarak eklemeden makine öğrenimi modellerini çalıştırmanıza olanak tanır. şunları yapmanıza izin verir:

  • Uygulamanızın boyutunu küçültün
  • TensorFlow Lite'ın en son, kararlı sürümünden gelişmiş performans elde edin

Bu sayfa, Android uygulamanızda Google Play hizmetleri API'lerinde yeni TensorFlow Lite'ın nasıl kullanılacağına dair kısa bir genel bakış sağlar.

Google Play hizmetleri hakkında daha fazla bilgi için Google Play hizmetleri web sitesine bakın.

Uygulamanıza TensorFlow Lite ekleyin

Uygulama modülü bağımlılıklarınızda birkaç değişiklik yaparak, yeni API'yi başlatarak ve yorumlayıcı nesneniz olarak belirli bir sınıfı kullanarak Google Play hizmetleri API'sinde TensorFlow Lite'ı kullanabilirsiniz. Aşağıdaki talimatlar, uygulama kodunuzu nasıl değiştireceğiniz konusunda daha fazla ayrıntı sağlar.

1. Proje bağımlılıkları ekleyin

TensorFlow Lite için Play Services API'sine erişmek için uygulama proje kodunuza aşağıdaki bağımlılıkları ekleyin:

dependencies {
...
    // Tensorflow Lite dependencies for Google Play services
    implementation 'com.google.android.gms:play-services-tflite-java:16.0.0-beta02'
    // Optional: include Tensorflow Lite Support Library
    implementation 'com.google.android.gms:play-services-tflite-support:16.0.0-beta02'
...
}

2. TensorFlow Lite'ın başlatılmasını ekleyin

TensorFlow Lite API'lerini kullanmadan önce Google Play hizmetleri API'sinin TensorFlow Lite bileşenini başlatın:

Kotlin

val initializeTask: Task<Void> by lazy { TfLite.initialize(this) }

Java

Task<Void> initializeTask = TfLite.initialize(context);

3. Bir Yorumlayıcı oluşturun ve çalışma zamanı seçeneğini ayarlayın

InterpreterApi.create() kullanarak bir yorumlayıcı oluşturun ve aşağıdaki örnek kodda gösterildiği gibi InterpreterApi.Options.setRuntime() çağırarak onu Google Play hizmetleri çalışma zamanını kullanacak şekilde yapılandırın:

Kotlin

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private lateinit var interpreter: InterpreterApi
...
initializeTask.addOnSuccessListener {
  val interpreterOption =
    InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
  interpreter = InterpreterApi.create(
    modelBuffer,
    interpreterOption
  )}
  .addOnFailureListener { e ->
    Log.e("Interpreter", "Cannot initialize interpreter", e)
  }

Java

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private InterpreterApi interpreter;
...
initializeTask.addOnSuccessListener(a -> {
    interpreter = InterpreterApi.create(modelBuffer,
      new InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY));
  })
  .addOnFailureListener(e -> {
    Log.e("Interpreter", String.format("Cannot initialize interpreter: %s",
          e.getMessage()));
  });

Android kullanıcı arabirimi dizisini engellemekten kaçındığı için yukarıdaki uygulamayı kullanmalısınız. İş parçacığı yürütmesini daha yakından yönetmeniz gerekiyorsa, yorumlayıcı oluşturmaya Tasks.await() çağrısı ekleyebilirsiniz:

Kotlin

import androidx.lifecycle.lifecycleScope
...
lifecycleScope.launchWhenStarted { // uses coroutine
  initializeTask.await()
}

Java

@BackgroundThread
InterpreterApi initializeInterpreter() {
    Tasks.await(initializeTask);
    return InterpreterApi.create(...);
}

4. Çıkarımları çalıştırın

Oluşturduğunuz interpreter nesnesini kullanarak bir çıkarım oluşturmak için run() yöntemini çağırın.

Kotlin

interpreter.run(inputBuffer, outputBuffer)

Java

interpreter.run(inputBuffer, outputBuffer);

Google Play hizmetlerinde TensorFlow Lite

Google Play hizmetleri API'sindeki TensorFlow Lite, Play hizmetlerinde yeni bir yöntem kullanarak başlattıktan sonra uygulamanızdaki gerçek TensorFlow Lite Java API'sine erişmenizi sağlar. Bu yaklaşım, mevcut uygulamalar için kod değişikliklerini minimumda tutmanızı sağlar ve yeni uygulamaları basitleştirir. Bu özelliğin API'si hakkında daha fazla bilgi için TensorFlow Lite API referansına bakın.

Bağımsız TensorFlow Lite'tan Taşıma

Uygulamanızı bağımsız TensorFlow Lite'tan Play hizmetleri API'sine taşımayı planlıyorsanız, uygulama proje kodunuzu güncellemek için aşağıdaki ek kılavuzu inceleyin:

  1. Kullanım durumunuzun desteklendiğinden emin olmak için bu sayfanın Sınırlamalar bölümünü inceleyin.
  2. Kodunuzu güncellemeden önce, özellikle TensorFlow Lite'ın 2.1'den önceki sürümlerini kullanıyorsanız, modelleriniz için performans ve doğruluk kontrolleri yapın, böylece yeni uygulamayla karşılaştırmak için bir temeliniz olur.
  3. Kodunuzun tamamını TensorFlow Lite için Play hizmetleri API'sini kullanmak üzere taşıdıysanız, mevcut TensorFlow Lite çalışma zamanı kitaplığı bağımlılıklarını ( org.tensorflow: tensorflow-lite :* ile girişler) build.gradle dosyanızdan kaldırmalısınız. uygulamanızın boyutunu küçültebilir.
  4. Kodunuzda new Interpreter nesnesi oluşturmanın tüm oluşumlarını tanımlayın ve InterpreterApi.create() çağrısını kullanacak şekilde değiştirin. Bu yeni API eşzamansızdır; bu, çoğu durumda bunun bir yedek parça olmadığı ve çağrı tamamlandığında bir dinleyici kaydetmeniz gerektiği anlamına gelir. Adım 3 kodundaki kod parçacığına bakın.
  5. import org.tensorflow.lite.InterpreterApi; ve import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime; org.tensorflow.lite.Interpreter veya org.tensorflow.lite.InterpreterApi sınıflarını kullanarak herhangi bir kaynak dosyaya.
  6. Sonuç olarak InterpreterApi.create() çağrılarından herhangi birinin yalnızca tek bir bağımsız değişkeni varsa, bağımsız değişken listesine new InterpreterApi.Options() öğesini ekleyin.
  7. InterpreterApi.create() çağrılarının son argümanına .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) ekleyin.
  8. org.tensorflow.lite.Interpreter sınıfının diğer tüm oluşumlarını org.tensorflow.lite.InterpreterApi ile değiştirin.

Bağımsız TensorFlow Lite ve Play hizmetleri API'sini yan yana kullanmak istiyorsanız, TensorFlow Lite 2.9 (veya üstü) kullanmanız gerekir. TensorFlow Lite 2.8 ve önceki sürümleri, Play hizmetleri API sürümüyle uyumlu değildir.

Örnek Uygulama

Örnek uygulamada Google Play hizmetlerinde TensorFlow Lite'ın örnek bir uygulamasını inceleyebilir ve test edebilirsiniz.

Test yapmak

Google Play hizmetlerinde TensorFlow Lite'ı uyguladıktan sonra, uygulamanızı test ettiğinizden ve uygulamanızın makine öğrenimi modeli işlevlerini uyguladığınızdan emin olun. Çözemediğiniz hatalar veya sorunlarla karşılaşırsanız, lütfen bunları aşağıdaki Destek ve geri bildirim bölümünde belirtilen kanalları kullanarak bildirin.

LoadingException: Kabul edilebilir modül yok

Beta başlatma döneminde uygulamanızı bir geliştirme ortamında test ederken, uygulamanız TensorFlow Lite sınıfını ( TfLite.intialize(context) ) başlatmaya çalıştığında bir istisna alabilirsiniz:

com.google.android.gms.dynamite.DynamiteModule$LoadingException:
  No acceptable module com.google.android.gms.tflite_dynamite found.
  Local version is 0 and remote version is 0.

Bu hata, Google Play hizmetleri API'sindeki TensorFlow Lite'ın test cihazınızda henüz mevcut olmadığı anlamına gelir. Cihazınızda test etmek için kullandığınız kullanıcı hesabıyla bu Google grubuna tflite-play-services-beta-access'e katılarak bu istisnayı çözebilirsiniz. Beta erişim grubuna eklendikten sonra bu istisnanın çözülmesi gerekir.

Erişimin verilmesi ve hatanın giderilmesi için bu gruba katıldıktan sonra en az bir iş günü bekleyin. Bu hatayı yaşamaya devam ederseniz, aşağıdaki Destek ve geri bildirim bölümünde belirtilen kanalları kullanarak durumu bildirin.

sınırlamalar

Google Play hizmetlerindeki TensorFlow Lite şu anda genel beta sürümündedir ve aşağıdaki sınırlamalara sahiptir:

  • Şu anda Google Play hizmetleri tarafından yalnızca NNAPI Temsilcisi desteklenmektedir. GPU ve Flex dahil diğer TensorFlow Lite Delegeleri şu anda desteklenmemektedir.
  • Yerel API'ler aracılığıyla TensorFlow Lite'a erişim desteklenmez. Google Play hizmetleri aracılığıyla yalnızca TensorFlow Lite Java API'leri kullanılabilir.
  • Özel işlemler de dahil olmak üzere deneysel veya kullanımdan kaldırılmış TensorFlow Lite API'leri desteklenmez.

Destek ve geri bildirim

TensorFlow Sorun İzleyici aracılığıyla bu beta sürüm özelliği için geri bildirim sağlayabilir ve destek alabilirsiniz. Lütfen Google Play hizmetlerinde TensorFlow Lite için Sorun şablonunu kullanarak sorunları ve destek isteklerini bildirin.

Şartlar ve Gizlilik Politikası

TensorFlow Lite'ın Google Play hizmetlerinde kullanımı, Google API Hizmet Şartları'na tabidir. Google Play hizmetlerindeki TensorFlow Lite'ın beta sürümünde olduğunu ve bu nedenle işlevselliğinin yanı sıra ilişkili API'lerin önceden haber verilmeksizin değişebileceğini unutmayın.

Google Play hizmetleri API'lerinde TensorFlow Lite kullandığınızda, resimler, video, metin gibi giriş verilerinin işlenmesi tamamen cihazda gerçekleşir ve Google Play hizmetlerinde TensorFlow Lite bu verileri Google sunucularına göndermez. Sonuç olarak, cihazdan çıkmaması gereken verileri işlemek için API'lerimizi kullanabilirsiniz.

Google Play hizmetleri API'lerindeki TensorFlow Lite, hata düzeltmeleri, güncellenmiş modeller ve donanım hızlandırıcı uyumluluk bilgileri gibi şeyler almak için zaman zaman Google sunucularıyla iletişim kurabilir. Google Play hizmetleri API'lerindeki TensorFlow Lite, uygulamanızdaki API'lerin performansı ve kullanımıyla ilgili ölçümleri de Google'a gönderir. Google bu metrik verilerini, performansı ölçmek, hata ayıklamak, API'leri korumak ve iyileştirmek ve Gizlilik Politikamızda daha ayrıntılı olarak açıklandığı gibi kötüye kullanımı veya kötüye kullanımı tespit etmek için kullanır.

Uygulamanızın kullanıcılarını, yürürlükteki yasanın gerektirdiği şekilde Google'ın Google Play hizmetleri metrik verilerini işlemesi hakkında bilgilendirmekle sorumlusunuz.

Topladığımız veriler şunları içerir:

  • Cihaz bilgileri (üretici, model, işletim sistemi sürümü ve yapı gibi) ve kullanılabilir ML donanım hızlandırıcıları (GPU ve DSP). Tanılama ve kullanım analitiği için kullanılır.
  • Tanılama ve kullanım analitiği için kullanılan cihaz tanımlayıcısı.
  • Uygulama bilgileri (paket adı, uygulama sürümü). Tanılama ve kullanım analitiği için kullanılır.
  • API yapılandırması (hangi delegelerin kullanıldığı gibi). Tanılama ve kullanım analitiği için kullanılır.
  • Olay türü (tercüman oluşturma, çıkarım gibi). Tanılama ve kullanım analitiği için kullanılır.
  • Hata kodları. Teşhis için kullanılır.
  • Performans metrikleri. Teşhis için kullanılır.

Sonraki adımlar

TensorFlow Lite ile mobil uygulamanızda makine öğrenimini uygulama hakkında daha fazla bilgi için TensorFlow Lite Geliştirici Kılavuzu'na bakın. TensorFlow Hub'da görüntü sınıflandırma, nesne algılama ve diğer uygulamalar için ek TensorFlow Lite modelleri bulabilirsiniz.