Thư viện TensorFlow Lite Task

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

Những tính năng của Thư viện tác vụ

  • Các API rõ ràng và đơn giản mà các chuyên gia không phải chuyên gia về học máy có thể sử dụng
    Bạn có thể thực hiện quá trình suy luận chỉ trong vòng 5 dòng mã. Hãy sử dụng các API dễ sử dụng trong thư viện Tác vụ dưới dạng thành phần để giúp bạn dễ dàng phát triển công nghệ học máy bằng TFLite trên thiết bị di động.

  • Quá trình xử lý dữ liệu phức tạp nhưng thông thường
    Hỗ trợ thị giác chung và logic xử lý ngôn ngữ tự nhiên để chuyển đổi giữa dữ liệu của bạn và định dạng dữ liệu mà mô hình yêu cầu. Cung cấp logic xử lý tương tự, có thể chia sẻ để huấn luyện và suy luận.

  • Mức tăng hiệu suất cao
    Quá trình xử lý dữ liệu sẽ chỉ mất không quá vài mili giây, đảm bảo kinh nghiệm suy luận nhanh bằng TensorFlow Lite.

  • Khả năng mở rộng và tuỳ chỉnh
    Bạn có thể tận dụng tất cả lợi ích mà cơ sở hạ tầng Thư viện Tác vụ mang lại cũng như dễ dàng tạo API suy luận Android/iOS của riêng bạn.

Tác vụ được hỗ trợ

Dưới đây là danh sách các loại tác vụ được hỗ trợ. Danh sách này dự kiến sẽ mở rộng khi chúng tôi tiếp tục cung cấp thêm nhiều trường hợp sử dụng.

Chạy Thư viện tác vụ với người được uỷ quyền

Uỷ quyền bật tính năng tăng tốc phần cứng Các mô hình TensorFlow Lite bằng cách tận dụng các trình tăng tốc trên thiết bị như GPUCoral Edge TPU. Sử dụng cho các hoạt động mạng nơron mang lại lợi ích to lớn về độ trễ và hiệu quả sử dụng năng lượng. Ví dụ: GPU có thể cung cấp hiệu suất lên tới 5 lần tăng tốc độ trễ trên thiết bị di động và suy luận TPU San hô 10 lần nhanh hơn so với CPU của máy tính.

Thư viện tác vụ giúp bạn dễ dàng định cấu hình và có các lựa chọn dự phòng để thiết lập và sử dụng tính năng uỷ quyền. Các trình tăng tốc sau đây hiện được hỗ trợ trong Task API:

Chúng tôi sẽ sớm hỗ trợ tính năng tăng tốc trong Task Swift / API Web.

Ví dụ về cách sử dụng GPU trên Android trong Java

Bước 1. Thêm thư viện trình bổ trợ uỷ quyền GPU vào build.gradle của mô-đun tệp:

dependencies {
    // Import Task Library dependency for vision, text, or audio.

    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}

Bước 2. Định cấu hình tính năng uỷ quyền GPU trong các tuỳ chọn tác vụ thông qua BaseOptions. Chẳng hạn như bạn có thể thiết lập GPU trong ObjectDetector như sau:

// Turn on GPU delegation.
BaseOptions baseOptions = BaseOptions.builder().useGpu().build();
// Configure other options in ObjectDetector
ObjectDetectorOptions options =
    ObjectDetectorOptions.builder()
        .setBaseOptions(baseOptions)
        .setMaxResults(1)
        .build();

// Create ObjectDetector from options.
ObjectDetector objectDetector =
    ObjectDetector.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Detection> results = objectDetector.detect(image);

Ví dụ về cách sử dụng GPU trên Android trong C++

Bước 1. Phụ thuộc vào trình bổ trợ uỷ quyền GPU trong mục tiêu bản dựng bazel của bạn, chẳng hạn như:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

Bước 2. Định cấu hình việc uỷ quyền GPU trong các tuỳ chọn tác vụ. Ví dụ: bạn có thể thiết lập GPU trong BertQuestionAnswerer như sau:

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

Khám phá các chế độ cài đặt nâng cao khác của trình tăng tốc tại đây.

Ví dụ về cách sử dụng TPU san hô trong Python

Định cấu hình TPU San hô trong các tuỳ chọn cơ sở của nhiệm vụ. Ví dụ: bạn có thể thiết lập TPU San hô trong ImageClassifier như sau:

# Imports
from tflite_support.task import vision
from tflite_support.task import core

# Initialize options and turn on Coral Edge TPU delegation.
base_options = core.BaseOptions(file_name=model_path, use_coral=True)
options = vision.ImageClassifierOptions(base_options=base_options)

# Create ImageClassifier from options.
classifier = vision.ImageClassifier.create_from_options(options)

# Run inference on Coral Edge TPU.
image = vision.TensorImage.create_from_file(image_path)
classification_result = classifier.classify(image)

Ví dụ về cách sử dụng TPU San hô trong C++

Bước 1. Phụ thuộc vào trình bổ trợ uỷ quyền TPU của Palm Edge trong mục tiêu bản dựng bazel của bạn, chẳng hạn như:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

Bước 2. Định cấu hình TPU San hô trong các tuỳ chọn nhiệm vụ. Ví dụ: bạn có thể đặt triển khai TPU San hô trong ImageClassifier như sau:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Bước 3. Cài đặt gói libusb-1.0-0-dev như bên dưới. Nếu đã hãy bỏ qua bước này và chuyển sang bước tiếp theo.

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

Bước 4. Biên dịch với các cấu hình sau trong lệnh bazel:

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

Xem thử bản minh hoạ CLI của Thư viện tác vụ công cụ bằng thiết bị TPU San hô của bạn. Khám phá thêm về TPU Edge đã qua huấn luyện trước các mẫu máy tínhTPU cạnh nâng cao cài đặt.

Ví dụ về cách sử dụng Core ML uỷ quyền trong C++

Bạn có thể xem ví dụ đầy đủ tại bài viết Uỷ quyền ML cho sản phẩm cốt lõi của Trình phân loại hình ảnh Thử nghiệm.

Bước 1. Phụ thuộc vào trình bổ trợ uỷ quyền Core ML cho mục tiêu bản dựng bazel, chẳng hạn như dưới dạng:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:coreml_plugin", # for Core ML Delegate
]

Bước 2. Định cấu hình Uỷ quyền học máy cốt lõi trong các tuỳ chọn tác vụ. Ví dụ: bạn có thể đặt thêm Core ML Ủy quyền trong ImageClassifier như sau:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Core ML delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(::tflite::proto::Delegate::CORE_ML);
// Set DEVICES_ALL to enable Core ML delegation on any device (in contrast to
// DEVICES_WITH_NEURAL_ENGINE which creates Core ML delegate only on devices
// with Apple Neural Engine).
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->mutable_coreml_settings()->set_enabled_devices(::tflite::proto::CoreMLSettings::DEVICES_ALL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Core ML.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();