TensorFlow Lite Görev Kitaplığı

TensorFlow Lite Görev Kitaplığı, uygulama geliştiricilerin TFLite ile makine öğrenimi deneyimleri oluşturması için bir dizi güçlü ve kullanımı kolay göreve özgü 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ş kullanıma 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'te desteklenir.

Görev Kitaplığı'ndan ne beklenir?

  • Makine öğrenimi uzmanı olmayanlar tarafından kullanılabilen temiz ve iyi tanımlanmış API'ler
    Çıkarım sadece 5 kod satırında yapılabilir. Mobil cihazlarda TFLite ile makine öğrenimini kolayca geliştirmenize yardımcı olması 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ürme yapmak için ortak görüş 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

Desteklenen görev türlerinin listesi aşağıdadır. Gittikçe daha fazla kullanım durumu sağlamaya devam ettikçe listenin büyümesi bekleniyor.

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

Delegeler, GPU ve Coral Edge TPU gibi cihazdaki hızlandırıcılardan yararlanarak TensorFlow Lite modellerinin donanım hızlandırmasını etkinleştirir. Bunları sinir ağı işlemleri için kullanmak, gecikme süresi 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ğlayabilir.

Görev Kitaplığı, delegeleri 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. GPU temsilci eklenti kitaplığını modülünüzün build.gradle dosyasına 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'
}

2. Adım. BaseOptions aracılığıyla görev seçeneklerinde GPU temsilcisini yapılandırın. Örneğin, ObjectDetector 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ı

1. Adım. Bazel oluşturma hedefinizdeki GPU temsilci eklentisine bağlı olarak, ö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);

Burada daha gelişmiş hızlandırıcı ayarlarını keşfedin.

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

Görevin temel seçeneklerinde Coral Edge TPU'yu yapılandırın. Örneğin, Coral Edge TPU'yu ImageClassifier 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ı

1. Adım. Bazel oluşturma hedefinizdeki Coral Edge TPU temsilci eklentisine bağlı olarak, ö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, Coral Edge TPU'yu 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 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 yüklüyse, 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 yapılandırmalarla 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.

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

C++'da Core ML Delegate'in örnek kullanımı

Eksiksiz bir örnek Image Classifier Core ML Delegate Test adresinde bulunabilir.

Adım 1. Bazel oluşturma hedefinizdeki Core ML temsilci eklentisine bağlı olarak, örneğin:

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

2. Adım. Görev seçeneklerinde Core ML Delegesini yapılandırın. Örneğin, Core ML Delegate'i 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(::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();