Android için TensorFlow Lite'ı oluşturun

Bu belge, TensorFlow Lite Android kitaplığını kendi başınıza nasıl oluşturacağınızı açıklar. Normalde TensorFlow Lite Android kitaplığını yerel olarak oluşturmanız gerekmez. Sadece bunu kullanmak istiyorsanız, en kolay yolu kullanıyor MavenCentral barındırılan TensorFlow Lite AAR . Bkz Android hızlı başlangıç Android projelerde bunların nasıl kullanılacağı hakkında daha fazla ayrıntı için.

Gecelik Anlık Görüntüleri Kullan

Gecelik anlık görüntüleri kullanmak için, kök Gradle derleme yapılandırmanıza aşağıdaki repoyu ekleyin.

allprojects {     // should be already there
    mavenCentral  // should be already there
    maven {       // add this repo to use snapshots
      name 'ossrh-snapshot'
      url 'http://oss.sonatype.org/content/repositories/snapshots'
    }
}

TensorFlow Lite'ı yerel olarak oluşturun

Bazı durumlarda, yerel bir TensorFlow Lite yapısı kullanmak isteyebilirsiniz. Örneğin, içeren özel bir ikili yapı olabilir TensorFlow seçilen operasyonları veya TensorFlow Lite yerel değişiklikler yapmak isteyebilirsiniz.

Docker kullanarak yapı ortamını kurun

  • Docker dosyasını indirin. Docker dosyasını indirerek, bunları kullanımınızın aşağıdaki hizmet şartlarına tabi olduğunu kabul etmiş olursunuz:

Kabul etmek tıklayarak, bu vesile ile Android Studio ve Android Yerel Geliştirme Kiti tüm kullanım mevcut Android Yazılım Geliştirme Kiti Lisans Sözleşmesi'ne tabi olacağını kabul edersiniz https://developer.android.com/studio/terms (örneğin adresten may Google tarafından zaman zaman güncellenebilir veya değiştirilebilir).

Dosyayı indirmek için hizmet şartlarını kabul etmesi gerekir. Onay

  • İsteğe bağlı olarak Android SDK veya NDK sürümünü değiştirebilirsiniz. İndirilen Docker dosyasını boş bir klasöre koyun ve aşağıdakileri çalıştırarak docker imajınızı oluşturun:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Geçerli klasörünüzü kabın içindeki /host_dir dizinine bağlayarak docker kapsayıcısını etkileşimli olarak başlatın (/tensorflow_src öğesinin kap içindeki TensorFlow deposu olduğunu unutmayın):
docker run -it -v $PWD:/host_dir tflite-builder bash

Windows'ta PowerShell kullanıyorsanız, "$PWD"yi "pwd" ile değiştirin.

Ana bilgisayarda bir TensorFlow deposu kullanmak istiyorsanız, bunun yerine o ana bilgisayar dizinini bağlayın (-v hostDir:/host_dir).

  • Kapsayıcıya girdikten sonra, ek Android araçları ve kitaplıkları indirmek için aşağıdakileri çalıştırabilirsiniz (lisansı kabul etmeniz gerekebileceğini unutmayın):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

Şimdi devam etmelidir yapılandır çalışma alanı ve .bazelrc inşa ayarlarını yapılandırmak için bölüm.

Kitaplıkları oluşturmayı bitirdikten sonra, ana bilgisayardan erişebilmeniz için bunları kapsayıcının içindeki /host_dir dizinine kopyalayabilirsiniz.

Docker olmadan yapı ortamını kurun

Bazel ve Android Ön Koşullarını Yükleyin

Bazel, TensorFlow için birincil yapı sistemidir. Bununla inşa etmek için, sisteminizde yüklü olan Android NDK ve SDK'ya sahip olmanız gerekir.

  1. En son sürümünü yükleyin Bazel yapı sistemine .
  2. Yerel (C/C++) TensorFlow Lite kodunu oluşturmak için Android NDK gereklidir. Önerilen geçerli sürümü bulunabilir 19c vardır burada .
  3. Android SDK ve yapı araçları elde edilebilir burada veya alternatif bir parçası olarak Android Studio . Derleme araçları API'si >= 23, TensorFlow Lite oluşturmak için önerilen sürümdür.

WORKSPACE ve .bazelrc'yi yapılandırın

Bu, TF Lite kitaplıklarını oluşturmak için gerekli olan tek seferlik bir yapılandırma adımıdır. Run ./configure kök TensorFlow çıkış dizinde komut ve komut dosyası etkileşimli yapılandırmak istediğinde cevap "Evet" ./WORKSPACE Android inşa için. Komut dosyası, aşağıdaki ortam değişkenlerini kullanarak ayarları yapılandırmaya çalışacaktır:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Bu değişkenler ayarlanmadıysa, komut dosyası isteminde etkileşimli olarak sağlanmaları gerekir. Başarılı yapılandırma içinde aşağıdakine benzer girdileri vermelidir .tf_configure.bazelrc kök klasöründe dosyanın:

build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r19c"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3"
build --action_env ANDROID_SDK_API_LEVEL="23"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"

Derleyin ve kurun

Bazel düzgün bir şekilde yapılandırıldıktan sonra, kök kontrol dizininden TensorFlow Lite AAR'ı aşağıdaki gibi oluşturabilirsiniz:

bazel build -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
  --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
  //tensorflow/lite/java:tensorflow-lite

Bu bir AAR dosyası oluşturur bazel-bin/tensorflow/lite/java/ . Bunun birkaç farklı mimariye sahip "şişman" bir AAR oluşturduğunu unutmayın; hepsine ihtiyacınız yoksa dağıtım ortamınıza uygun alt kümeyi kullanın.

bash tensorflow/lite/tools/build_aar.sh \
  --input_models=model1,model2 \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

Senaryo Üstü üretecektir tensorflow-lite.aar dosyası ve isteğe bağlı olarak tensorflow-lite-select-tf-ops.aar modellerinden biri Tensorflow ops kullanıyorsa dosyayı. Daha fazla ayrıntı için bakınız TensorFlow Lite ikili boyutu azaltın bölümü.

Doğrudan projeye AAR ekleyin

Taşı tensorflow-lite.aar bir dizin olarak adlandırılan dosyayı libs projenizde. Uygulamanızın değiştirin build.gradle yeni dizinine başvurmak ve yeni yerel kütüphane, örneğin mevcut TensorFlow Lite bağımlılığını değiştirmek için dosyayı:

allprojects {
    repositories {
        mavenCentral()
        maven {  // Only for snapshot artifacts
            name 'ossrh-snapshot'
            url 'http://oss.sonatype.org/content/repositories/snapshots'
        }
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}

AAR'ı yerel Maven deposuna yükleyin

Kök ödeme dizininizden aşağıdaki komutu yürütün:

mvn install:install-file \
  -Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
  -DgroupId=org.tensorflow \
  -DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar

Uygulamanızın olarak build.gradle , sahip olmak mavenLocal() bağımlılık basıp TensorFlow operasyonunu desteği vardır biri ile standart TensorFlow Lite bağımlılığını değiştirin:

allprojects {
    repositories {
        mavenCentral()
        maven {  // Only for snapshot artifacts
            name 'ossrh-snapshot'
            url 'http://oss.sonatype.org/content/repositories/snapshots'
        }
        mavenLocal()
    }
}

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}

O Not 0.1.100 sürüm burada test / gelişme uğruna saf olduğunu. Yerel AAR yüklü ile, standart kullanabilirsiniz TensorFlow Lite Java çıkarım API'leri uygulama kodunuzda.