Библиотека задач TensorFlow Lite содержит набор мощных и простых в использовании библиотек для конкретных задач, которые позволяют разработчикам приложений создавать возможности машинного обучения с помощью TFLite. Он предоставляет оптимизированные готовые интерфейсы моделей для популярных задач машинного обучения, таких как классификация изображений, вопросы и ответы и т. д. Интерфейсы моделей специально разработаны для каждой задачи для достижения максимальной производительности и удобства использования. Библиотека задач работает кроссплатформенно и поддерживается на Java, C++ и Swift.
Чего ожидать от библиотеки задач
Чистые и четко определенные API, которые могут использовать неспециалисты в области машинного обучения.
Вывод можно сделать всего за 5 строк кода. Используйте мощные и простые в использовании API-интерфейсы библиотеки задач в качестве строительных блоков, которые помогут вам легко разрабатывать машинное обучение с помощью TFLite на мобильных устройствах.Сложная, но распространенная обработка данных
Поддерживает логику общего видения и обработки естественного языка для преобразования ваших данных в формат данных, требуемый моделью. Обеспечивает одну и ту же общую логику обработки для обучения и вывода.Высокий прирост производительности
Обработка данных займет не более нескольких миллисекунд, что обеспечивает быстрый вывод с использованием TensorFlow Lite.Расширяемость и настройка
Вы можете использовать все преимущества инфраструктуры библиотеки задач и легко создавать собственные API вывода для Android/iOS.
Поддерживаемые задачи
Ниже приведен список поддерживаемых типов задач. Ожидается, что этот список будет расти по мере того, как мы продолжаем предоставлять все больше и больше вариантов использования.
API-интерфейсы визуализации
API естественного языка (NL)
Аудио API
Пользовательские API
- Расширьте инфраструктуру Task API и создайте индивидуальный API .
Запуск библиотеки задач с делегатами
Делегаты обеспечивают аппаратное ускорение моделей TensorFlow Lite, используя встроенные в устройство ускорители, такие как графический процессор и Coral Edge TPU . Их использование для операций нейронной сети дает огромные преимущества с точки зрения задержки и энергоэффективности. Например, графические процессоры могут обеспечить увеличение задержки до 5 раз на мобильных устройствах, а TPU Coral Edge — в 10 раз быстрее , чем процессоры настольных компьютеров.
Библиотека задач обеспечивает простую настройку и резервные возможности для настройки и использования делегатов. В Task API теперь поддерживаются следующие ускорители:
- Андроид
- Графический процессор : Java/С++
- ННАПИ : Java/C++.
- Шестиугольник : С++
- Линукс/Мак
- Коралловый край ТПУ : C++
- iOS
- Основной делегат ML : C++
Поддержка ускорения в Task Swift/Web API появится в ближайшее время.
Пример использования графического процессора на Android в Java
Шаг 1. Добавьте библиотеку плагинов делегатов графического процессора в файл build.gradle
вашего модуля:
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'
}
Шаг 2. Настройте делегат графического процессора в параметрах задачи через BaseOptions . Например, вы можете настроить графический процессор в ObjectDetector
следующим образом:
// 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);
Пример использования графического процессора на Android на C++
Шаг 1. В зависимости от подключаемого модуля делегата графического процессора в цели сборки Bazel, например:
deps = [
"//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]
Другие варианты делегирования включают в себя:
"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon
Шаг 2. Настройте делегат графического процессора в параметрах задачи. Например, вы можете настроить графический процессор в BertQuestionAnswerer
следующим образом:
// 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);
Ознакомьтесь с более расширенными настройками акселератора здесь .
Пример использования Coral Edge TPU в Python
Настройте Coral Edge TPU в базовых параметрах задачи. Например, вы можете настроить Coral Edge TPU в ImageClassifier
следующим образом:
# 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)
Пример использования Coral Edge TPU в C++
Шаг 1. В зависимости от плагина делегата Coral Edge TPU в целевой сборке Bazel, например:
deps = [
"//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]
Шаг 2. Настройте Coral Edge TPU в параметрах задачи. Например, вы можете настроить Coral Edge TPU в ImageClassifier
следующим образом:
// 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();
Шаг 3. Установите пакет libusb-1.0-0-dev
как показано ниже. Если он уже установлен, перейдите к следующему шагу.
# On the Linux
sudo apt-get install libusb-1.0-0-dev
# On the macOS
port install libusb
# or
brew install libusb
Шаг 4. Скомпилируйте команду 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.
Попробуйте демонстрационный инструмент CLI библиотеки задач на своих устройствах Coral Edge TPU. Узнайте больше о предварительно обученных моделях Edge TPU и расширенных настройках Edge TPU .
Пример использования Core ML Delegate в C++
Полный пример можно найти в Image Classifier Core ML Delegate Test .
Шаг 1. В зависимости от подключаемого модуля делегата Core ML в целевой сборке bazel, например:
deps = [
"//tensorflow_lite_support/acceleration/configuration:coreml_plugin", # for Core ML Delegate
]
Шаг 2. Настройте Core ML Delegate в параметрах задачи. Например, вы можете настроить Core ML Delegate в ImageClassifier
следующим образом:
// 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();