ספריית המשימות TensorFlow Lite מכילה קבוצה של ספריות עוצמתיות וקלות לשימוש ספציפיות למשימות עבור מפתחי אפליקציות ליצירת חוויות ML עם TFLite. הוא מספק ממשקי מודל אופטימליים מחוץ לקופסה למשימות פופולריות של למידת מכונה, כגון סיווג תמונה, שאלה ותשובה וכו'. ממשקי הדגם תוכננו במיוחד עבור כל משימה כדי להשיג את הביצועים והשימושיות הטובים ביותר. ספריית המשימות פועלת בפלטפורמות שונות ונתמכת ב-Java, C++ ו-Swift.
למה לצפות מספריית המשימות
ממשקי API נקיים ומוגדרים היטב הניתנים לשימוש על ידי מומחים שאינם ML
ניתן לעשות הסקה בתוך 5 שורות קוד בלבד. השתמש בממשקי ה-API החזקים והקלים לשימוש בספריית המשימות כאבני בניין כדי לעזור לך לפתח בקלות ML עם TFLite במכשירים ניידים.עיבוד נתונים מורכב אך נפוץ
תומך בראייה משותפת ולוגיקת עיבוד שפה טבעית להמרה בין הנתונים שלך לפורמט הנתונים הנדרש על ידי המודל. מספק את אותו היגיון עיבוד שניתן לשיתוף לאימון והסקת מסקנות.רווח ביצועים גבוהים
עיבוד הנתונים ייקח לא יותר מכמה אלפיות שניות, מה שמבטיח את חוויית ההסקה המהירה באמצעות TensorFlow Lite.הרחבה והתאמה אישית
אתה יכול למנף את כל היתרונות שתשתית ספריית המשימות מספקת ולבנות בקלות ממשקי API משלך להסקת Android/iOS.
משימות נתמכות
להלן רשימת סוגי המשימות הנתמכים. הרשימה צפויה לגדול ככל שנמשיך לאפשר יותר ויותר מקרי שימוש.
ממשקי API של Vision
ממשקי API של שפה טבעית (NL).
ממשקי API של אודיו
ממשקי API מותאמים אישית
- הרחב את תשתית ה-API של Task ובנה ממשק API מותאם אישית .
הפעל ספריית משימות עם נציגים
הנציגים מאפשרים האצת חומרה של דגמי TensorFlow Lite על ידי מינוף מאיצים במכשיר כגון GPU ו- Coral Edge TPU . השימוש בהם לפעולות רשת עצביות מספק יתרונות עצומים במונחים של חביון ויעילות צריכת חשמל. לדוגמה, מעבדי GPU יכולים לספק מהירות של עד פי 5 בהשהייה במכשירים ניידים, ומעבדי Coral Edge TPU מסיקים פי 10 מהר יותר ממעבדים שולחניים.
ספריית המשימות מספקת תצורה קלה ואפשרויות חזרה להגדרה ולהשתמש בנציגים. המאיצים הבאים נתמכים כעת ב-Task API:
- דְמוּי אָדָם
- לינוקס / מק
- Coral Edge TPU : C++
- iOS
- נציג Core ML : C++
תמיכת האצה ב-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();