Tài liệu này mô tả cách xây dựng thư viện Android LiteRT trên của bạn. Thông thường, bạn không cần xây dựng cục bộ thư viện Android LiteRT. Nếu bạn chỉ muốn sử dụng AdSense, hãy xem Bắt đầu nhanh về Android để biết thêm thông tin chi tiết về cách sử dụng trong các dự án Android của bạn.
Sử dụng Ảnh chụp nhanh vào ban đêm
Để sử dụng ảnh chụp nhanh ban đêm, hãy thêm kho lưu trữ sau vào bản dựng Gradle gốc của bạn config của Google.
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'
}
}
}
thêm bản tổng quan nhanh hằng đêm vào các phần phụ thuộc (hoặc chỉnh sửa nếu cần) vào build.gradle của bạn
...
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-support:0.0.0-nightly-SNAPSHOT'
...
}
...
Tạo LiteRT cục bộ
Trong một số trường hợp, bạn có thể cần sử dụng bản dựng LiteRT cục bộ. Cho Ví dụ: bạn có thể đang tạo một tệp nhị phân tuỳ chỉnh bao gồm các thao tác đượ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 LiteRT.
Thiết lập môi trường xây dựng bằng Docker
- Tải tệp Docker xuống. Bằng cách tải tệp Docker xuống, bạn đồng ý rằng các điều khoản dịch vụ sau đây điều chỉnh việc bạn sử dụng các dịch vụ này:
Bằng việc nhấp để chấp nhận, bạn đồng ý rằng mọi việc sử dụng Android Studio và Android Native Development Kit sẽ chịu sự điều chỉnh của Phần mềm Android Thoả thuận cấp phép cho Bộ phát triển có tại https://developer.android.com/studio/terms (Chúng tôi có thể cập nhật hoặc thay đổi URL này của Google tuỳ từng thời điểm).
Bạn phải xác nhận điều khoản dịch vụ để tải .- Bạn có thể tuỳ ý thay đổi phiên bản NDK hoặc SDK Android. Đặt tệp đã tải xuống Tệp Docker trong một thư mục trống và tạo hình ảnh Docker bằng cách chạy:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- Khởi động vùng chứa Docker theo 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à TensorFlow kho lưu trữ 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 muốn sử dụng một kho lưu trữ TensorFlow trên máy chủ lưu trữ, hãy gắn máy chủ lưu trữ đó thư mục (-v hostDir:/host_dir).
- Khi đã ở bên trong vùng chứa, bạn có thể chạy lệnh sau để tải xuống các công cụ và thư viện Android bổ sung (xin lưu ý rằng bạn có thể phải chấp nhận giấy phép):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
Bây giờ, bạn nên chuyển đến phần Định cấu hình WORKSPACE và .bazelrc để định cấu hình các chế độ cài đặt bản dựng.
Sau khi xây dựng xong thư viện, bạn có thể sao chép các thư viện đó vào /host_dir bên trong vùng chứa để có thể truy cập vào các tệp đó trên máy chủ lưu trữ.
Thiết lập môi trường bản dựng mà không cần Docker
Cài đặt Bazel và điều kiện tiên quyết về Android
Bazel là hệ thống xây dựng chính cho TensorFlow. Để xây dựng ứng dụng bằng công cụ này, bạn phải cài đặt ứng dụng cũng như SDK và NDK Android trên hệ thống của bạn.
- Cài đặt phiên bản mới nhất của hệ thống xây dựng Bazel.
- Cần có Android NDK để xây dựng LiteRT (C/C++) gốc . Bạn có thể tìm thấy phiên bản hiện tại là 25b tại đây.
- SDK Android và công cụ xây dựng có thể được lấy tại đây hoặc hoặc là một phần của Android Studio. Xây dựng tools API >= 23 là phiên bản được đề xuất để xây dựng LiteRT.
Định cấu hình WORKSPACE và .bazelrc
Đây là bước định cấu hình một lần bắt buộc để tạo LiteRT
thư viện. Chạy tập lệnh ./configure
trong quy trình thanh toán gốc của TensorFlow
và trả lời "Có" khi tập lệnh yêu cầu định cấu hình ./WORKSPACE
theo cách tương tác
cho bản dựng Android. Tập lệnh sẽ cố định cấu hình cài đặt bằng cách sử dụ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 bạn không đặt các biến này, chúng phải được cung cấp theo cách có tính tương tác trong tập lệnh
. Cấu hình thành công sẽ mang lại các mục tương tự như sau
trong tệp .tf_configure.bazelrc
ở thư mục gốc:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
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"
Tạo và cài đặt
Sau khi Bazel được định cấu hình đúng cách, bạn có thể tạo LiteRT AAR từ thư mục thanh toán gốc như sau:
bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
--fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//tensorflow/lite/java:tensorflow-lite
Thao tác này sẽ tạo một tệp AAR trong bazel-bin/tensorflow/lite/java/
. Ghi chú
điều này sẽ tạo ra "chất béo" AAR với một số cấu trúc khác nhau; nếu bạn không
cần tất cả các gói, 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 đến một tập hợp 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
Tập lệnh ở trên sẽ tạo tệp tensorflow-lite.aar
và tuỳ chọn
Tệp tensorflow-lite-select-tf-ops.aar
nếu một trong các mô hình đang sử dụng
Hoạt động của Tensorflow. Để biết thêm chi tiết, vui lòng xem
Phần Giảm kích thước nhị phân LiteRT.
Thêm trực tiếp AAR vào dự án
Di chuyển tệp tensorflow-lite.aar
vào thư mục có tên là libs
trong
dự á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 LiteRT hiện có bằng thư viện cục bộ mới,
e.g.:
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')
}
Cài đặt AAR vào kho lưu trữ Maven cục bộ
Thực thi lệnh sau từ thư mục thanh toán gốc:
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 LiteRT tiêu chuẩn bằng phần phụ thuộc có hỗ trợ
để chọn hoạt động TensorFlow:
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'
}
Xin lưu ý rằng phiên bản 0.1.100
ở đây chỉ nhằm mục đích
kiểm thử/phát triển. Sau khi cài đặt AAR cục bộ, bạn có thể sử dụng
API dự đoán Java LiteRT trong mã ứng dụng của bạn.