Bu belge, TensorFlow Lite Android kitaplığının kendi başınıza nasıl oluşturulacağını açıklar. Normalde yerel olarak TensorFlow Lite Android kitaplığı oluşturmanız gerekmez. Yalnızca kullanmak istiyorsanız, bunları Android projelerinizde nasıl kullanacağınız hakkında daha fazla ayrıntı için Android hızlı başlangıcına bakın.
Gecelik Anlık Görüntüleri Kullan
Gece anlık görüntülerini kullanmak için, kök Gradle yapı yapılandırmanıza aşağıdaki depoyu 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, 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şmesi'ne tabi olacağını kabul etmiş olursunuz (bu URL, Google tarafından zaman zaman güncellenebilir veya değiştirilebilir).
Dosyayı indirmek için hizmet şartlarını kabul etmelisiniz.- İ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 görüntünüzü oluşturun:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- Geçerli klasörünüzü kapsayıcı içindeki /host_dir konumuna bağlayarak docker kapsayıcısını etkileşimli olarak başlatın (/tensorflow_src'nin 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ının içine girdikten sonra, ek Android araçlarını ve kitaplıklarını 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şebilmek için bunları kapsayıcının içindeki /host_dir dizinine kopyalayabilirsiniz.
Docker olmadan derleme ortamı kurun
Bazel ve Android Ön Koşullarını Yükleyin
Bazel, TensorFlow için birincil yapı sistemidir. Onunla derlemek için sisteminizde yüklü olması ve Android NDK ile SDK'ya sahip olmanız gerekir.
- Bazel derleme sisteminin en son sürümünü yükleyin.
- Yerel (C/C++) TensorFlow Lite kodunu oluşturmak için Android NDK gereklidir. Önerilen mevcut sürüm, burada bulunabilen 21e'dir.
- Android SDK ve derleme araçları buradan veya alternatif olarak Android Studio'nun bir parçası olarak edinilebilir. Derleme araçları API'sı >= 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 gereken 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ı ./WORKSPACE
for Android derlemelerini etkileşimli olarak yapılandırmak istediğinde "Evet" yanıtını verin. Betik, 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 ayarlanmamışsa, komut isteminde etkileşimli olarak sağlanmalıdırlar. Başarılı yapılandırma, kök klasördeki .tf_configure.bazelrc
dosyasında aşağıdakine benzer girdiler vermelidir:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r21e"
build --action_env ANDROID_NDK_API_LEVEL="26"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
İnşa et ve kur
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 \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//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ğuna dikkat edin; hepsine ihtiyacınız yoksa dağıtım ortamınıza uygun altkümeyi kullanın.
Yalnızca bir dizi modeli hedefleyen daha küçük AAR dosyalarını 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 betik, 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şturacaktır. Daha fazla ayrıntı için lütfen TensorFlow Lite ikili boyutunu azalt bölümüne bakın.
AAR'ı doğrudan projeye ekleyin
tensorflow-lite.aar
dosyasını projenizde libs
adlı bir dizine taşıyın. Uygulamanızın build.gradle
dosyasını yeni dizine referans verecek şekilde değiştirin ve mevcut TensorFlow Lite bağımlılığını yeni yerel kitaplıkla değiştirin, örn.:
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'ı yerel Maven deposuna kurun
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
dosyasında, mavenLocal()
bağımlılığına sahip olduğunuzdan emin olun ve standart TensorFlow Lite bağımlılığını, belirli TensorFlow operasyonlarını destekleyen bir bağımlılıkla 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 tamamen test etme/geliştirme amaçlı olduğunu unutmayın. Yerel AAR kuruluyken, uygulama kodunuzda standart TensorFlow Lite Java çıkarım API'lerini kullanabilirsiniz.