Android için TensorFlow Lite'ı oluşturun

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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. Yalnızca kullanmak istiyorsanız, bunları Android projelerinizde nasıl kullanacağınızla ilgili daha fazla ayrıntı için Android hızlı başlangıcına bakın.

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 {
    repositories {      // should be already there
        mavenCentral()  // should be already there
        maven {         // add this repo to use snapshots
          name 'ossrh-snapshot'
          url 'https://oss.sonatype.org/content/repositories/snapshots'
        }
    }
}

TensorFlow Lite'ı yerel olarak oluşturun

Bazı durumlarda, yerel bir TensorFlow Lite yapısı kullanmak isteyebilirsiniz. Örneğin, TensorFlow'dan seçilen işlemleri içeren özel bir ikili dosya oluşturuyor olabilirsiniz veya TensorFlow Lite'ta 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 için tıklayarak, Android Studio ve Android Native Development Kit'in tüm kullanımının https://developer.android.com/studio/terms adresinde bulunan Android Yazılım Geliştirme Kiti Lisans Sözleşmesine tabi olacağını kabul edersiniz (bu URL, Google tarafından zaman zaman güncellenebilir veya değiştirilebilir).

Dosyayı indirmek için hizmet şartlarını kabul etmelisiniz.onaylayın

  • İ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ü kapsayıcını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):
sdkmanager \
  "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
  "platform-tools" \
  "platforms;android-${ANDROID_API_LEVEL}"

Şimdi, yapı ayarlarını yapılandırmak için WORKSPACE ve .bazelrc'yi Yapılandır bölümüne geçmelisiniz.

Kitaplıkları oluşturmayı bitirdikten sonra, ana bilgisayarda 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. Bazel yapı sisteminin en son sürümünü yükleyin.
  2. Yerel (C/C++) TensorFlow Lite kodunu oluşturmak için Android NDK gereklidir. Mevcut önerilen sürüm, burada bulunabilecek 19c'dir.
  3. Android SDK ve oluşturma araçları buradan veya alternatif olarak Android Studio'nun bir parçası olarak edinilebilir. 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. Kök TensorFlow ödeme dizininde ./configure komut dosyasını çalıştırın ve komut dosyası Android derlemeleri için ./WORKSPACE etkileşimli olarak yapılandırmak istediğinde "Evet" yanıtını verin. 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, kök klasördeki .tf_configure.bazelrc dosyasında aşağıdakine benzer girişler sağlamalıdır:

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, bazel-bin/tensorflow/lite/java/ içinde bir AAR dosyası oluşturacaktır. 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.

Yalnızca bir dizi modeli hedefleyen daha küçük AAR dosyaları aşağıdaki gibi oluşturabilirsiniz:

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

Yukarıdaki komut dosyası, tensorflow-lite.aar dosyasını ve modellerden biri Tensorflow ops kullanıyorsa isteğe bağlı olarak tensorflow-lite-select-tf-ops.aar dosyasını oluşturur. Daha fazla ayrıntı için lütfen TensorFlow Lite ikili boyutunu küçültme bölümüne bakın.

Doğrudan projeye AAR ekleyin

tensorflow-lite.aar dosyasını projenizde libs adlı bir dizine taşıyın. Yeni dizine başvurmak için uygulamanızın build.gradle dosyasını değiştirin ve mevcut TensorFlow Lite bağımlılığını yeni yerel kitaplıkla değiştirin, örneğin:

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

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

AAR'yi 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 build.gradle , mavenLocal() bağımlılığına sahip olduğunuzdan emin olun ve standart TensorFlow Lite bağımlılığını belirli TensorFlow işlemleri için desteği olanla değiştirin:

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

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

Buradaki 0.1.100 sürümünün yalnızca test/geliştirme amaçlı olduğunu unutmayın. Yerel AAR kuruluyken, uygulama kodunuzda standart TensorFlow Lite Java çıkarım API'lerini kullanabilirsiniz.