Công cụ phát triển cho Android

TensorFlow Lite cung cấp một số công cụ để tích hợp mô hình vào ứng dụng Android. Trang này mô tả các công cụ phát triển để sử dụng trong việc xây dựng ứng dụng bằng Kotlin, Java và C++, cũng như hỗ trợ phát triển TensorFlow Lite trong Android Studio.

Để bắt đầu viết mã Android nhanh chóng, hãy xem Khởi động nhanh cho Android

Công cụ xây dựng bằng Kotlin và Java

Các phần sau đây mô tả các công cụ phát triển cho TensorFlow Lite sử dụng ngôn ngữ Kotlin và Java.

Thư viện tác vụ TensorFlow Lite

Thư viện tác vụ TensorFlow Lite chứa một tập hợp các thư viện dành riêng cho tác vụ mạnh mẽ và dễ sử dụng để các nhà phát triển ứng dụng xây dựng bằng TensorFlow Lite. Nó cung cấp các giao diện mô hình sẵn dùng được tối ưu hóa cho các tác vụ machine learning phổ biến, chẳng hạn như phân loại hình ảnh, câu hỏi và câu trả lời, v.v. Các giao diện mô hình được thiết kế riêng cho từng tác vụ để đạt được hiệu suất và khả năng sử dụng tốt nhất. Thư viện tác vụ hoạt động đa nền tảng và được hỗ trợ trên Java và C++.

Để sử dụng Thư viện tác vụ trong ứng dụng Android của bạn, hãy sử dụng AAR từ MavenCentral cho thư viện Tầm nhìn tác vụ , thư viện Văn bản tác vụThư viện âm thanh tác vụ tương ứng.

Bạn có thể chỉ định điều này trong phần phụ thuộc build.gradle của mình như sau:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-task-vision:+'
    implementation 'org.tensorflow:tensorflow-lite-task-text:+'
    implementation 'org.tensorflow:tensorflow-lite-task-audio:+'
}

Nếu bạn sử dụng ảnh chụp nhanh hàng đêm, hãy đảm bảo bạn thêm kho lưu trữ ảnh chụp nhanh Sonatype vào dự án của mình.

Xem phần giới thiệu trong tổng quan về Thư viện tác vụ TensorFlow Lite để biết thêm chi tiết.

Thư viện TensorFlow Lite

Sử dụng thư viện TensorFlow Lite trong ứng dụng Android của bạn bằng cách thêm AAR được lưu trữ tại MavenCentral vào dự án phát triển của bạn.

Bạn có thể chỉ định điều này trong phần phụ thuộc build.gradle của mình như sau:

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

Nếu bạn sử dụng ảnh chụp nhanh hàng đêm, hãy đảm bảo bạn thêm kho lưu trữ ảnh chụp nhanh Sonatype vào dự án của mình.

AAR này bao gồm các tệp nhị phân cho tất cả ABI của Android . Bạn có thể giảm kích thước tệp nhị phân của ứng dụng bằng cách chỉ bao gồm các ABI mà bạn cần hỗ trợ.

Trừ khi bạn đang nhắm mục tiêu phần cứng cụ thể, bạn nên bỏ qua ABI x86 , x86_64arm32 trong hầu hết các trường hợp. Bạn có thể định cấu hình điều này bằng cấu hình Gradle sau. Nó đặc biệt chỉ bao gồm armeabi-v7aarm64-v8a và sẽ bao gồm hầu hết các thiết bị Android hiện đại.

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

Để tìm hiểu thêm về abiFilters , hãy xem Android ABI trong tài liệu NDK của Android.

Thư viện hỗ trợ TensorFlow Lite

Thư viện hỗ trợ Android TensorFlow Lite giúp tích hợp các mô hình vào ứng dụng của bạn dễ dàng hơn. Nó cung cấp các API cấp cao giúp chuyển đổi dữ liệu đầu vào thô thành dạng mà mô hình yêu cầu và diễn giải đầu ra của mô hình, giảm số lượng mã soạn sẵn cần thiết.

Nó hỗ trợ các định dạng dữ liệu phổ biến cho đầu vào và đầu ra, bao gồm hình ảnh và mảng. Nó cũng cung cấp các đơn vị tiền xử lý và hậu xử lý để thực hiện các tác vụ như thay đổi kích thước và cắt xén hình ảnh.

Sử dụng Thư viện hỗ trợ trong ứng dụng Android của bạn bằng cách bao gồm AAR Thư viện hỗ trợ TensorFlow Lite được lưu trữ tại MavenCentral .

Bạn có thể chỉ định điều này trong phần phụ thuộc build.gradle của mình như sau:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

Nếu bạn sử dụng ảnh chụp nhanh hàng đêm, hãy đảm bảo bạn thêm kho lưu trữ ảnh chụp nhanh Sonatype vào dự án của mình.

Để biết hướng dẫn về cách bắt đầu, hãy xem Thư viện hỗ trợ Android TensorFlow Lite .

Phiên bản SDK Android tối thiểu dành cho thư viện

Thư viện minSdkVersion Yêu cầu về thiết bị
tenorflow-lite 19 Việc sử dụng NNAPI yêu cầu API 27+
tenorflow-lite-gpu 19 GLES 3.1 hoặc OpenCL (thường chỉ khả dụng trên API 21+
tenorflow-lite-hexagon 19 -
hỗ trợ tensorflow-lite 19 -
tensorflow-lite-task-vision 21 API liên quan đến android.graphics.Color yêu cầu API 26+
tensorflow-lite-task-text 21 -
tensorflow-lite-task-âm thanh 23 -
siêu dữ liệu tensorflow-lite 19 -

Sử dụng Android Studio

Ngoài các thư viện phát triển được mô tả ở trên, Android Studio còn cung cấp hỗ trợ tích hợp các mô hình TensorFlow Lite, như được mô tả bên dưới.

Liên kết mô hình Android Studio ML

Tính năng ML Model Binding của Android Studio 4.1 trở lên cho phép bạn nhập tệp mô hình .tflite vào ứng dụng Android hiện có của mình và tạo các lớp giao diện để giúp tích hợp mã của bạn với mô hình dễ dàng hơn.

Để nhập mô hình TensorFlow Lite (TFLite):

  1. Nhấp chuột phải vào mô-đun bạn muốn sử dụng mô hình TFLite hoặc nhấp vào File > New > Other > TensorFlow Lite Model .

  2. Chọn vị trí tệp TensorFlow Lite của bạn. Lưu ý rằng công cụ này sẽ định cấu hình phần phụ thuộc của mô-đun bằng liên kết Mô hình ML và tự động thêm tất cả các phần phụ thuộc cần thiết vào tệp build.gradle của mô-đun Android của bạn.

  3. Nhấp vào Finish để bắt đầu quá trình nhập. Khi quá trình nhập hoàn tất, công cụ sẽ hiển thị màn hình mô tả mô hình, bao gồm cả các tensor đầu vào và đầu ra của nó.

  4. Để bắt đầu sử dụng mô hình, hãy chọn Kotlin hoặc Java, sao chép và dán mã vào phần Mã mẫu .

Bạn có thể quay lại màn hình thông tin mô hình bằng cách nhấp đúp vào mô hình TensorFlow Lite trong thư mục ml trong Android Studio. Để biết thêm thông tin về cách sử dụng tính năng Modle Binding của Android Studio, hãy xem ghi chú phát hành Android Studio. Để biết tổng quan về cách sử dụng liên kết mô hình trong Android Studio, hãy xem hướng dẫn ví dụ về mã.

Công cụ xây dựng bằng C và C++

Thư viện C và C++ cho TensorFlow Lite chủ yếu dành cho các nhà phát triển sử dụng Bộ công cụ phát triển gốc Android (NDK) để xây dựng ứng dụng của họ. Có hai cách để sử dụng TFLite thông qua C++ nếu bạn xây dựng ứng dụng của mình bằng NDK:

API TFLite C

Sử dụng API này là phương pháp được đề xuất cho các nhà phát triển sử dụng NDK. Tải xuống TensorFlow Lite AAR được lưu trữ tại tệp MavenCentral , đổi tên thành tensorflow-lite-*.zip và giải nén nó. Bạn phải bao gồm bốn tệp tiêu đề trong các thư mục headers/tensorflow/lite/headers/tensorflow/lite/c/ và thư viện động libtensorflowlite_jni.so có liên quan trong thư mục jni/ trong dự án NDK của bạn.

Tệp tiêu đề c_api.h chứa tài liệu cơ bản về cách sử dụng API TFLite C.

API TFLite C++

Nếu bạn muốn sử dụng TFLite thông qua API C++, bạn có thể xây dựng các thư viện dùng chung C++:

armeabi-v7a 32bit:

bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so

64bit arm64-v8a:

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

Hiện tại, không có cách đơn giản nào để trích xuất tất cả các tệp tiêu đề cần thiết, vì vậy bạn phải đưa tất cả các tệp tiêu đề vào tensorflow/lite/ từ kho lưu trữ TensorFlow. Ngoài ra, bạn sẽ cần các tệp tiêu đề từ FlatBuffersAbseil .