Giúp bảo vệ Great Barrier Reef với TensorFlow trên Kaggle Tham Challenge

Build TensorFlow Lite cho Android

Tài liệu này mô tả cách xây dựng thư viện TensorFlow Lite Android của riêng bạn. Thông thường, bạn không cần phải xây dựng cục bộ thư viện TensorFlow Lite Android. Nếu bạn chỉ muốn sử dụng nó, cách dễ nhất là sử dụng TensorFlow Lite AAR lưu trữ tại MavenCentral . Xem Android QuickStart để biết thêm chi tiết về làm thế nào để sử dụng chúng trong các dự án Android của bạn.

Sử dụng Ảnh chụp nhanh hàng đêm

Để sử dụng ảnh chụp nhanh hàng đêm, hãy thêm repo sau vào cấu hình bản dựng Gradle gốc của bạn.

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

Xây dựng TensorFlow Lite cục bộ

Trong một số trường hợp, bạn có thể muốn sử dụng bản dựng cục bộ của TensorFlow Lite. Ví dụ, bạn có thể xây dựng một nhị phân tùy chỉnh bao gồm các hoạt động được lựa chọn từ TensorFlow , hoặc bạn có thể muốn thực hiện thay đổi địa phương để TensorFlow Lite.

Thiết lập môi trường xây dựng bằng Docker

  • Tải xuống tệp Docker. Bằng cách tải xuống tệp Docker, bạn đồng ý rằng các điều khoản dịch vụ sau đây chi phối việc bạn sử dụng tệp đó:

Bằng việc nhấp để chấp nhận, bạn đồng ý rằng tất cả việc sử dụng phát triển Android Studio và Android Native Kit sẽ được điều chỉnh bởi License Agreement Phát triển phần mềm Android Kit có sẵn tại https://developer.android.com/studio/terms (URL như vậy có thể được cập nhật hoặc thay đổi bởi Google theo thời gian).

Bạn phải thừa nhận các điều khoản của dịch vụ để tải về các tập tin. Thừa nhận

  • Bạn có thể tùy chọn thay đổi phiên bản Android SDK hoặc NDK. Đặt tệp Docker đã tải xuống vào một thư mục trống và xây dựng hình ảnh docker của bạn bằng cách chạy:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Khởi động vùng chứa docker một cách tương tác bằng cách gắn thư mục hiện tại của bạn vào / host_dir bên trong vùng chứa (lưu ý rằng / tensorflow_src là kho lưu trữ TensorFlow bên trong vùng chứa):
docker run -it -v $PWD:/host_dir tflite-builder bash

Nếu bạn sử dụng PowerShell trên Windows, hãy thay thế "$ PWD" bằng "pwd".

Nếu bạn muốn sử dụng kho lưu trữ TensorFlow trên máy chủ, hãy gắn kết thư mục máy chủ đó thay thế (-v hostDir: / host_dir).

  • Khi bạn đã ở bên trong vùng chứa, bạn có thể chạy phần sau để tải xuống các công cụ và thư viện Android bổ sung (lưu ý rằng bạn có thể cần chấp nhận giấy phép):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

Bây giờ bạn nên tiến hành vào Configure Workspace và .bazelrc phần để cấu hình các thiết lập xây dựng.

Sau khi xây dựng xong các thư viện, bạn có thể sao chép chúng vào / host_dir bên trong vùng chứa để có thể truy cập chúng trên máy chủ.

Thiết lập môi trường xây dựng mà không có Docker

Cài đặt Bazel và Điều kiện tiên quyết của Android

Bazel là hệ thống xây dựng chính cho TensorFlow. Để xây dựng với nó, bạn phải có nó và cài đặt NDK và SDK Android trên hệ thống của mình.

  1. Cài đặt phiên bản mới nhất của xây dựng hệ thống Bazel .
  2. Android NDK là bắt buộc để tạo mã TensorFlow Lite (C / C ++) gốc. Phiên bản khuyến cáo hiện nay là 19c, có thể được tìm thấy ở đây .
  3. Android SDK và xây dựng các công cụ có thể thu được ở đây , hoặc cách khác như một phần của Android Studio . Xây dựng công cụ API> = 23 là phiên bản được khuyến nghị để xây dựng TensorFlow Lite.

Định cấu hình WORKSPACE và .bazelrc

Đây là bước cấu hình một lần được yêu cầu để xây dựng các thư viện TF Lite. Chạy ./configure script trong thư mục kiểm tra TensorFlow root, và câu trả lời "Có" khi kịch bản yêu cầu tương tác cấu hình ./WORKSPACE dành cho Android được xây dựng. Tập lệnh sẽ cố gắng định cấu hình cài đặt bằng các biến môi trường sau:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Nếu các biến này không được đặt, chúng phải được cung cấp một cách tương tác trong lời nhắc tập lệnh. Cấu hình thành công nên năng suất mục tương tự như sau trong .tf_configure.bazelrc tập tin trong thư mục gốc:

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"

Xây dựng và cài đặt

Khi Bazel được định cấu hình đúng cách, bạn có thể xây dựng TensorFlow Lite AAR từ thư mục kiểm tra gốc như sau:

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

Điều này sẽ tạo ra một file AAR trong bazel-bin/tensorflow/lite/java/ . Lưu ý rằng điều này xây dựng một AAR "béo" với một số kiến ​​trúc khác nhau; nếu bạn không cần tất cả chúng, hãy sử dụng tập hợp con phù hợp với môi trường triển khai của bạn.

Bạn có thể tạo các tệp AAR nhỏ hơn chỉ nhắm mục tiêu một tập hợp các mô hình như sau:

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

Trên kịch bản sẽ tạo ra tensorflow-lite.aar tập tin và tùy chọn các tensorflow-lite-select-tf-ops.aar tập tin nếu một trong những mô hình được sử dụng ops Tensorflow. Để biết thêm chi tiết, vui lòng xem Giảm TensorFlow Lite kích thước nhị phân phần.

Thêm AAR trực tiếp vào dự án

Di chuyển tensorflow-lite.aar tập tin vào một thư mục gọi là libs trong dự án của bạn. Sửa đổi ứng dụng của bạn build.gradle tập tin để tham khảo các thư mục mới và thay thế phụ thuộc TensorFlow Lite hiện với thư viện địa phương mới, ví dụ như:

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

Cài đặt AAR vào kho lưu trữ Maven cục bộ

Thực thi lệnh sau từ thư mục kiểm tra gốc của bạ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

Trong ứng dụng của bạn build.gradle , đảm bảo bạn có mavenLocal() phụ thuộc và thay thế các tiêu chuẩn phụ thuộc với một trong đó có hỗ trợ cho chọn ops TensorFlow TensorFlow Lite:

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

Lưu ý rằng 0.1.100 phiên bản ở đây là hoàn toàn vì lợi ích của thử nghiệm / phát triển. Với AAR địa phương cài đặt, bạn có thể sử dụng các tiêu chuẩn API suy luận TensorFlow Lite Java trong mã ứng dụng của bạn.