ספריית המשימות של TensorFlow Lite

ספריית המשימות TensorFlow Lite מכילה קבוצה של ספריות עוצמתיות וקלות לשימוש ספציפיות למשימות עבור מפתחי אפליקציות ליצירת חוויות ML עם TFLite. הוא מספק ממשקי מודל אופטימליים מחוץ לקופסה למשימות פופולריות של למידת מכונה, כגון סיווג תמונה, שאלה ותשובה וכו'. ממשקי הדגם תוכננו במיוחד עבור כל משימה כדי להשיג את הביצועים והשימושיות הטובים ביותר. ספריית המשימות פועלת בפלטפורמות שונות ונתמכת ב-Java, C++ ו-Swift.

למה לצפות מספריית המשימות

  • ממשקי API נקיים ומוגדרים היטב הניתנים לשימוש על ידי מומחים שאינם ML
    ניתן לעשות הסקה בתוך 5 שורות קוד בלבד. השתמש בממשקי ה-API החזקים והקלים לשימוש בספריית המשימות כאבני בניין כדי לעזור לך לפתח בקלות ML עם TFLite במכשירים ניידים.

  • עיבוד נתונים מורכב אך נפוץ
    תומך בראייה משותפת ולוגיקת עיבוד שפה טבעית להמרה בין הנתונים שלך לפורמט הנתונים הנדרש על ידי המודל. מספק את אותו היגיון עיבוד שניתן לשיתוף לאימון והסקת מסקנות.

  • רווח ביצועים גבוהים
    עיבוד הנתונים ייקח לא יותר מכמה אלפיות שניות, מה שמבטיח את חוויית ההסקה המהירה באמצעות TensorFlow Lite.

  • הרחבה והתאמה אישית
    אתה יכול למנף את כל היתרונות שתשתית ספריית המשימות מספקת ולבנות בקלות ממשקי API משלך להסקת Android/iOS.

משימות נתמכות

להלן רשימת סוגי המשימות הנתמכים. הרשימה צפויה לגדול ככל שנמשיך לאפשר יותר ויותר מקרי שימוש.

הפעל ספריית משימות עם נציגים

הנציגים מאפשרים האצת חומרה של דגמי TensorFlow Lite על ידי מינוף מאיצים במכשיר כגון GPU ו- Coral Edge TPU . השימוש בהם לפעולות רשת עצביות מספק יתרונות עצומים במונחים של חביון ויעילות צריכת חשמל. לדוגמה, מעבדי GPU יכולים לספק מהירות של עד פי 5 בהשהייה במכשירים ניידים, ומעבדי Coral Edge TPU מסיקים פי 10 מהר יותר ממעבדים שולחניים.

ספריית המשימות מספקת תצורה קלה ואפשרויות חזרה להגדרה ולהשתמש בנציגים. המאיצים הבאים נתמכים כעת ב-Task API:

תמיכת האצה ב-Task Swift / Web API תגיע בקרוב.

שימוש לדוגמה ב-GPU באנדרואיד ב-Java

שלב 1. הוסף את ספריית הפלאגין של נציג GPU לקובץ 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. הגדר את נציג GPU באפשרויות המשימות דרך BaseOptions . לדוגמה, אתה יכול להגדיר GPU ב- 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);

שימוש לדוגמה ב-GPU באנדרואיד ב-C++

שלב 1. תלוי בתוסף הנציג של GPU ביעד בניית ה-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. הגדר את נציג GPU באפשרויות המשימות. לדוגמה, אתה יכול להגדיר GPU ב- 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.

נסה את כלי ההדגמה של Task Library CLI עם מכשירי Coral Edge TPU שלך. גלה עוד על דגמי Edge TPU המאומנים מראש ועל הגדרות Edge TPU מתקדמות .

דוגמה לשימוש ב-Core ML Delegate ב-C++

דוגמה מלאה ניתן למצוא ב- Image Classifier Core ML Delegate Test .

שלב 1. תלוי בתוסף Core ML delegate ביעד ה-bazel build שלך, כגון:

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