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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

TensorFlow Lite cung cấp một số công cụ để tích hợp các 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 với Kotlin, Java và C ++, cũng như hỗ trợ phát triển TensorFlow Lite trong Android Studio.

Để bắt đầu viết nhanh mã Android, hãy xem Quickstart dành cho Android

Các công cụ để xây dựng với 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 bộ thư viện tác vụ cụ thể mạnh mẽ và dễ sử dụng dành cho 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 ngoài hộp được tối ưu hóa cho các tác vụ học máy phổ biến, chẳng hạn như phân loại hình ảnh, câu hỏi và trả lời, v.v. Các giao diện mô hình được thiết kế đặc biệt 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ụ 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 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ả cá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ể 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 Android NDK.

Thư viện hỗ trợ TensorFlow Lite

Thư viện hỗ trợ TensorFlow Lite Android 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 theo yêu cầu của mô hình 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 cả hình ảnh và mảng. Nó cũng cung cấp các đơn vị xử lý trước và sau thực hiện các tác vụ như thay đổi kích thước và cắt ả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 Thư viện hỗ trợ TensorFlow Lite AAR đượ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 cho thư viện

Thư viện minSdkVersion Yêu cầu thiết bị
tensorflow-lite 19 Việc sử dụng NNAPI yêu cầu API 27+
tensorflow-lite-gpu 19 GLES 3.1 hoặc OpenCL (thường chỉ có trên API 21+
tensorflow-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-audio 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ũng 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 các tệp mô hình .tflite vào ứng dụng Android hiện có của bạn và tạo các lớp giao diện để giúp tích hợp mã của bạn với một 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 Tệp> Mới> Khác> Mô hình TensorFlow Lite .

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

  3. Nhấp vào Finish tất để bắt đầu quá trình nhập. Khi quá trình nhập kết thúc, công cụ sẽ hiển thị màn hình mô tả mô hình, bao gồm các bộ căng đầ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ác công cụ để xây dựng với 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ộ phát triển bản địa 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 với NDK:

API TFLite C

Sử dụng API này là cách tiếp cận được khuyến nghị cho các nhà phát triển sử dụng NDK. Tải xuống tệp 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 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 TFLite C API.

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 được chia sẻ C ++:

32bit armeabi-v7a:

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ào đơn giản để trích xuất tất cả các tệp tiêu đề cần thiết, vì vậy bạn phải bao gồm tất cả các tệp tiêu đề trong tensorflow/lite/ từ kho lưu trữ TensorFlow. Ngoài ra, bạn sẽ cần các tệp tiêu đề từ FlatBuffersAbseil .

,

TensorFlow Lite cung cấp một số công cụ để tích hợp các 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 với Kotlin, Java và C ++, cũng như hỗ trợ phát triển TensorFlow Lite trong Android Studio.

Để bắt đầu viết nhanh mã Android, hãy xem Quickstart dành cho Android

Các công cụ để xây dựng với 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 bộ thư viện tác vụ cụ thể mạnh mẽ và dễ sử dụng dành cho 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 ngoài hộp được tối ưu hóa cho các tác vụ học máy phổ biến, chẳng hạn như phân loại hình ảnh, câu hỏi và trả lời, v.v. Các giao diện mô hình được thiết kế đặc biệt 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ụ 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 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ả cá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ể 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 Android NDK.

Thư viện hỗ trợ TensorFlow Lite

Thư viện hỗ trợ TensorFlow Lite Android 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 theo yêu cầu của mô hình 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 cả hình ảnh và mảng. Nó cũng cung cấp các đơn vị xử lý trước và sau thực hiện các tác vụ như thay đổi kích thước và cắt ả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 Thư viện hỗ trợ TensorFlow Lite AAR đượ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 cho thư viện

Thư viện minSdkVersion Yêu cầu thiết bị
tensorflow-lite 19 Việc sử dụng NNAPI yêu cầu API 27+
tensorflow-lite-gpu 19 GLES 3.1 hoặc OpenCL (thường chỉ có trên API 21+
tensorflow-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-audio 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ũng 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 các tệp mô hình .tflite vào ứng dụng Android hiện có của bạn và tạo các lớp giao diện để giúp tích hợp mã của bạn với một 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 Tệp> Mới> Khác> Mô hình TensorFlow Lite .

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

  3. Nhấp vào Finish tất để bắt đầu quá trình nhập. Khi quá trình nhập kết thúc, công cụ sẽ hiển thị màn hình mô tả mô hình, bao gồm các bộ căng đầ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ác công cụ để xây dựng với 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ộ phát triển bản địa 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 với NDK:

API TFLite C

Sử dụng API này là cách tiếp cận được khuyến nghị cho các nhà phát triển sử dụng NDK. Tải xuống tệp 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 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 TFLite C API.

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 được chia sẻ C ++:

32bit armeabi-v7a:

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ào đơn giản để trích xuất tất cả các tệp tiêu đề cần thiết, vì vậy bạn phải bao gồm tất cả các tệp tiêu đề trong tensorflow/lite/ từ kho lưu trữ TensorFlow. Ngoài ra, bạn sẽ cần các tệp tiêu đề từ FlatBuffersAbseil .