TensorFlow Lite Görev Kitaplığı

TensorFlow Lite Görev Kitaplığı, uygulama geliştiricilerin TFLite ile ML deneyimleri oluşturmaları için bir dizi güçlü ve kullanımı kolay göreve özel kitaplık içerir. Görüntü sınıflandırma, soru-cevap vb. gibi popüler makine öğrenimi görevleri için optimize edilmiş hazır model arabirimleri sağlar. Model arabirimleri, en iyi performansı ve kullanılabilirliği elde etmek için her görev için özel olarak tasarlanmıştır. Görev Kitaplığı platformlar arası çalışır ve Java, C++ ve Swift'de desteklenir.

Görev Kitaplığından neler beklenebilir?

  • Makine öğrenimi uzmanı olmayanlar tarafından kullanılabilen temiz ve iyi tanımlanmış API'ler
    Sadece 5 satır kod ile çıkarım yapılabilir. Mobil cihazlarda TFLite ile kolayca ML geliştirmenize yardımcı olmak için Görev kitaplığındaki güçlü ve kullanımı kolay API'leri yapı taşları olarak kullanın.

  • Karmaşık ama yaygın veri işleme
    Verileriniz ile modelin gerektirdiği veri formatı arasında dönüştürmek için ortak vizyon ve doğal dil işleme mantığını destekler. Eğitim ve çıkarım için aynı, paylaşılabilir işleme mantığını sağlar.

  • Yüksek performans kazancı
    Veri işleme, birkaç milisaniyeden fazla sürmez ve TensorFlow Lite kullanarak hızlı çıkarım deneyimi sağlar.

  • Genişletilebilirlik ve özelleştirme
    Görev Kitaplığı altyapısının sağladığı tüm avantajlardan yararlanabilir ve kendi Android/iOS çıkarım API'lerinizi kolayca oluşturabilirsiniz.

Desteklenen görevler

Aşağıda desteklenen görev türlerinin listesi bulunmaktadır. Gittikçe daha fazla kullanım örneğini etkinleştirmeye devam ettikçe listenin büyümesi bekleniyor.

Delegelerle Görev Kitaplığını Çalıştırın

Delegeler , GPU ve Coral Edge TPU gibi cihazdaki hızlandırıcılardan yararlanarak TensorFlow Lite modellerinin donanım hızlandırmasını sağlar. Bunları sinir ağı işlemleri için kullanmak, gecikme ve güç verimliliği açısından büyük faydalar sağlar. Örneğin, GPU'lar mobil cihazlarda gecikmede 5 kata kadar hızlanma sağlayabilir ve Coral Edge TPU'lar masaüstü CPU'lardan 10 kat daha hızlı çıkarım sağlar.

Görev Kitaplığı, temsilciler kurmanız ve kullanmanız için kolay yapılandırma ve geri dönüş seçenekleri sağlar. Aşağıdaki hızlandırıcılar artık Task API'de desteklenmektedir:

Task Swift / Web API'de hızlandırma desteği yakında geliyor.

Java'da Android'de GPU'nun örnek kullanımı

Adım 1. Modülünüzün build.gradle dosyasına GPU temsilci eklenti kitaplığını ekleyin:

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'
}

Adım 2. BaseOptions aracılığıyla görev seçeneklerinde GPU temsilcisini yapılandırın. Örneğin, ObjectDetecor GPU'yu aşağıdaki gibi ayarlayabilirsiniz:

// 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);

C++'da Android'de GPU'nun örnek kullanımı

Adım 1. Bazel oluşturma hedefinizdeki GPU temsilci eklentisine güvenin, örneğin:

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

Diğer temsilci seçenekleri şunları içerir:

"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon

Adım 2. Görev seçeneklerinde GPU temsilcisini yapılandırın. Örneğin, BertQuestionAnswerer GPU'yu aşağıdaki gibi ayarlayabilirsiniz:

// 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);

Daha gelişmiş hızlandırıcı ayarlarını buradan keşfedin.

Python'da Coral Edge TPU'nun örnek kullanımı

Görevin temel seçeneklerinde Coral Edge TPU'yu yapılandırın. Örneğin, ImageClassifier Coral Edge TPU'yu aşağıdaki gibi ayarlayabilirsiniz:

# 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'nun C++'da örnek kullanımı

Adım 1. Bazel oluşturma hedefinizdeki Coral Edge TPU temsilci eklentisine güvenin, örneğin:

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

Adım 2. Görev seçeneklerinde Coral Edge TPU'yu yapılandırın. Örneğin, ImageClassifier Coral Edge TPU'yu aşağıdaki gibi ayarlayabilirsiniz:

// 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();

Adım 3. libusb-1.0-0-dev paketini aşağıdaki gibi kurun. Zaten kuruluysa, bir sonraki adıma geçin.

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

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

Adım 4. Bazel komutunuzda aşağıdaki konfigürasyonlarla derleyin:

# 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.

Coral Edge TPU cihazlarınızla Görev Kitaplığı CLI demo aracını deneyin. Önceden eğitilmiş Edge TPU modelleri ve gelişmiş Edge TPU ayarları hakkında daha fazlasını keşfedin.

Core ML Delegesinin C++'da örnek kullanımı

Tam bir örnek, Image Classifier Core ML Delege Test'te bulunabilir.

Adım 1. Bazel oluşturma hedefinizdeki Core ML temsilci eklentisine güvenin, örneğin:

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

Adım 2. Görev seçeneklerinde Core ML Temsilcisini yapılandırın. Örneğin, Core ML Delegesini ImageClassifier aşağıdaki gibi ayarlayabilirsiniz:

// 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(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(CoreMLDelegateSettings::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();