Trang này được dịch bởi Cloud Translation API.
Switch to English

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 tạo 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 được lưu trữ tại JCenter . Xem phần khởi động nhanh Android để biết thêm chi tiết về cách sử dụng chúng trong các dự án Android của bạn.

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ể đang tạo một tệp nhị phân tùy chỉnh bao gồm các hoạt động được chọn từ TensorFlow hoặc bạn có thể muốn thực hiện các thay đổi cục bộ đối với 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 cách nhấp để chấp nhận, bạn đồng ý rằng tất cả việc sử dụng Android Studio và Android Native Development Kit sẽ chịu sự điều chỉnh của Thỏa thuận cấp phép Bộ phát triển phần mềm Android 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 xác nhận các điều khoản dịch vụ để tải tệp xuống. 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 / tmp 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:/tmp 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: / tmp).

  • 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 có thể tiếp tục phần "Xây dựng và Cài đặt". Sau khi xây dựng xong các thư viện, bạn có thể sao chép chúng vào / tmp 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 hệ thống xây dựng Bazel .
  2. Android NDK là bắt buộc để tạo mã TensorFlow Lite gốc (C / C ++). Phiên bản được đề xuất hiện tại là 17c, bạn có thể tìm thấy phiên bản này tại đây .
  3. SDK Android và các công cụ xây dựng có thể lấy tại đây hoặc cách khác là 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

Chạy tập lệnh ./configure trong thư mục kiểm tra TensorFlow gốc và trả lời "Có" khi tập lệnh yêu cầu định cấu hình tương tác ./WORKSPACE cho các bản dựng Android. 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 sẽ mang lại các mục nhập tương tự như sau trong tệp .tf_configure.bazelrc trong thư mục gốc:

build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r17c"
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ể tạo 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

Thao tác này sẽ tạo tệp 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.

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

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

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

Di chuyển tensorflow-lite.aar vào một thư mục có tên là libs trong dự án của bạn. Sửa đổi tệp build.gradle của ứng dụng để tham chiếu đến thư mục mới và thay thế phần phụ thuộc TensorFlow Lite hiện có bằng thư viện cục bộ mới, ví dụ:

allprojects {
    repositories {
        jcenter()
        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 build.gradle của ứng dụng, hãy đảm bảo bạn có phần phụ thuộc mavenLocal() và thay thế phần phụ thuộc TensorFlow Lite tiêu chuẩn bằng phần phụ thuộc có hỗ trợ cho các hoạt động TensorFlow được chọn:

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

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

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