TensorFlow Lite Görev Kitaplığı

TensorFlow Lite Görev Kitaplığı, uygulama geliştiricilerin TFLite ile makine öğrenimi deneyimleri oluşturmasına yönelik bir dizi güçlü ve kullanımı kolay, göreve özel kitaplıklar içerir. Görüntü sınıflandırma, soru-cevap gibi popüler makine öğrenimi görevleri için optimize edilmiş kullanıma hazır model arayüzleri sağlar. Model arayüzleri, en iyi performansı ve kullanılabilirliği elde etmek amacıyla 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ın kullanabileceği temiz ve iyi tanımlanmış API'ler
    Çıkarım yalnızca 5 satırlık kodla yapılabilir. Mobil cihazlarda TFLite ile makine öğrenimini kolayca geliştirmenize yardımcı olacak yapı taşları olarak Görev kitaplığındaki güçlü ve kullanımı kolay API'leri kullanın.

  • Karmaşık ama yaygın veri işleme
    Verileriniz ile modelin gerektirdiği veri formatı arasında dönüşüm 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şlemenin birkaç milisaniyeden fazla sürmemesi TensorFlow Lite kullanarak hızlı çıkarım deneyimi sağlıyor.

  • 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. Biz daha fazla kullanım örneğini etkinleştirmeye devam ettikçe listenin büyümesi bekleniyor.

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

Temsilciler, GPU ve Coral Edge TPU gibi cihaz içi hızlandırıcılardan yararlanarak TensorFlow Lite modellerinin donanım hızlandırmasını etkinleştirir. Bunları sinir ağı operasyonları 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 yapabilir.

Görev Kitaplığı, delegeleri ayarlamanız ve kullanmanız için kolay yapılandırma ve geri çekilme seçenekleri sağlar. Aşağıdaki hızlandırıcılar artık Görev API'sinde desteklenmektedir:

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

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

1. Adım. 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'
}

Adım 2. 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 derleme 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ı burada 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)

C++'da Coral Edge TPU'nun örnek kullanımı

1. Adım. Bazel derleme hedefinizdeki Coral Edge TPU delege 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 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 konfigürasyonları 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 Delegesinin örnek kullanımı

Tam bir örneği Image Classifier Core ML Delegate Test'te bulabilirsiniz.

1. Adım. Bazel derleme hedefinizdeki Core ML temsilci eklentisine güvenin:

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

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