Bantuan melindungi Great Barrier Reef dengan TensorFlow pada Kaggle Bergabung Tantangan

Bangun TensorFlow Lite untuk Android

Dokumen ini menjelaskan cara membuat library Android TensorFlow Lite sendiri. Biasanya, Anda tidak perlu membuat library Android TensorFlow Lite secara lokal. Jika Anda hanya ingin menggunakannya, cara termudah adalah dengan menggunakan TensorFlow Lite AAR host di MavenCentral . Lihat Android QuickStart untuk rincian lebih lanjut tentang bagaimana untuk menggunakannya dalam proyek Android Anda.

Gunakan Snapshot Malam Hari

Untuk menggunakan snapshot malam, tambahkan repo berikut ke konfigurasi root Gradle build Anda.

allprojects {
    repositories {      // 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'
        }
    }
}

Bangun TensorFlow Lite secara lokal

Dalam beberapa kasus, Anda mungkin ingin menggunakan build lokal TensorFlow Lite. Sebagai contoh, Anda mungkin akan membangun biner kustom yang mencakup operasi yang dipilih dari TensorFlow , atau Anda mungkin ingin membuat perubahan lokal untuk TensorFlow Lite.

Siapkan lingkungan build menggunakan Docker

  • Unduh file Docker. Dengan mengunduh file Docker, Anda setuju bahwa persyaratan layanan berikut mengatur penggunaan Anda terhadapnya:

Dengan mengklik untuk menerima, Anda setuju bahwa semua penggunaan Android Studio dan Android asli Development Kit akan diatur oleh Perjanjian Lisensi Software Development Kit Android tersedia di https://developer.android.com/studio/terms (URL seperti mungkin diperbarui atau diubah oleh Google dari waktu ke waktu).

Anda harus mengakui persyaratan layanan untuk mendownload file. Mengakui

  • Anda dapat mengubah versi Android SDK atau NDK secara opsional. Letakkan file Docker yang diunduh di folder kosong dan buat gambar buruh pelabuhan Anda dengan menjalankan:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Mulai wadah buruh pelabuhan secara interaktif dengan memasang folder Anda saat ini ke /host_dir di dalam wadah (perhatikan bahwa /tensorflow_src adalah repositori TensorFlow di dalam wadah):
docker run -it -v $PWD:/host_dir tflite-builder bash

Jika Anda menggunakan PowerShell di Windows, ganti "$PWD" dengan "pwd".

Jika Anda ingin menggunakan repositori TensorFlow pada host, mount direktori host tersebut sebagai gantinya (-v hostDir:/host_dir).

  • Setelah Anda berada di dalam wadah, Anda dapat menjalankan yang berikut ini untuk mengunduh alat dan pustaka Android tambahan (perhatikan bahwa Anda mungkin perlu menerima lisensi):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

Sekarang Anda harus melanjutkan ke Konfigurasi ruang kerja dan .bazelrc bagian untuk mengkonfigurasi pengaturan membangun.

Setelah Anda selesai membangun perpustakaan, Anda dapat menyalinnya ke /host_dir di dalam wadah sehingga Anda dapat mengaksesnya di host.

Siapkan lingkungan build tanpa Docker

Instal Bazel dan Prasyarat Android

Bazel adalah sistem build utama untuk TensorFlow. Untuk membangunnya, Anda harus menginstalnya dan Android NDK dan SDK di sistem Anda.

  1. Menginstal versi terbaru dari Bazel membangun sistem .
  2. Android NDK diperlukan untuk membuat kode TensorFlow Lite asli (C/C++). Versi direkomendasikan saat ini adalah 19c, yang dapat ditemukan di sini .
  3. Android SDK dan alat membangun dapat diperoleh di sini , atau alternatif sebagai bagian dari Android Studio . Build tools API >= 23 adalah versi yang direkomendasikan untuk membuat TensorFlow Lite.

Konfigurasi WORKSPACE dan .bazelrc

Ini adalah langkah konfigurasi satu kali yang diperlukan untuk membangun perpustakaan TF Lite. Jalankan ./configure skrip di direktori checkout akar TensorFlow, dan jawabannya "Ya" ketika script meminta untuk interaktif mengkonfigurasi ./WORKSPACE untuk Android membangun. Skrip akan mencoba mengonfigurasi pengaturan menggunakan variabel lingkungan berikut:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Jika variabel ini tidak disetel, variabel tersebut harus disediakan secara interaktif di prompt skrip. Konfigurasi sukses harus menghasilkan entri mirip dengan berikut di .tf_configure.bazelrc file dalam folder root:

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"

Bangun dan pasang

Setelah Bazel dikonfigurasi dengan benar, Anda dapat membuat TensorFlow Lite AAR dari direktori checkout root sebagai berikut:

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

Ini akan menghasilkan file AAR di bazel-bin/tensorflow/lite/java/ . Perhatikan bahwa ini membangun AAR "gemuk" dengan beberapa arsitektur berbeda; jika Anda tidak membutuhkan semuanya, gunakan subset yang sesuai untuk lingkungan penerapan Anda.

Anda dapat membuat file AAR yang lebih kecil yang hanya menargetkan sekumpulan model sebagai berikut:

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

Di atas naskah akan menghasilkan tensorflow-lite.aar berkas dan opsional tensorflow-lite-select-tf-ops.aar berkas jika salah satu model menggunakan Tensorflow ops. Untuk lebih jelasnya, silakan lihat Mengurangi TensorFlow Lite ukuran biner bagian.

Tambahkan AAR langsung ke proyek

Pindahkan tensorflow-lite.aar file ke direktori yang disebut libs dalam proyek Anda. Memodifikasi aplikasi Anda build.gradle berkas untuk referensi direktori baru dan mengganti yang sudah ada ketergantungan TensorFlow Lite dengan perpustakaan lokal baru, misalnya:

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')
}

Instal AAR ke repositori Maven lokal

Jalankan perintah berikut dari direktori checkout root Anda:

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

Dalam aplikasi Anda build.gradle , pastikan Anda memiliki mavenLocal() ketergantungan dan menggantikan standar ketergantungan TensorFlow Lite dengan satu yang memiliki dukungan untuk pilih ops TensorFlow:

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'
}

Perhatikan bahwa 0.1.100 versi sini adalah semata-mata untuk kepentingan pengujian / pembangunan. Dengan AAR lokal diinstal, Anda dapat menggunakan standar API inferensi TensorFlow Lite Java dalam kode aplikasi Anda.