يمكن لأدوات رصد العناصر تحديد أي من مجموعة معروفة من الكائنات قد تكون موجودة وتقديم معلومات حول مواضعهم داخل الصورة أو مقطع فيديو معين دفق. يتم تدريب أداة رصد الأجسام على رصد وجود فئات متعددة من الكائنات. على سبيل المثال، قد يتم تدريب أحد النماذج باستخدام الصور تحتوي على قطع فاكهة مختلفة، بالإضافة إلى تصنيف يحدد نوع الفاكهة التي تمثلها (مثل تفاحة أو موزة أو فراولة)، بيانات تحدد مكان ظهور كل كائن في الصورة. يمكنك الاطّلاع على مثال على رصد الكائنات لمزيد من المعلومات عن أدوات رصد الأجسام.
استخدام واجهة برمجة تطبيقات ObjectDetector
لمكتبة المهام لتفعيل أدوات رصد العناصر المخصّصة
أو مُدرَّبة مسبقًا على تطبيقات الأجهزة الجوّالة
الميزات الرئيسية لواجهة برمجة التطبيقات ObjectDetector
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم ومساحة اللون تحويل.
تصنيف لغة الخريطة.
الحد الأدنى للنتيجة لفلترة النتائج.
نتائج رصد أعلى ترتيب
القائمة المسموح بها للتصنيفات وقائمة الحظر.
النماذج المتوافقة مع أدوات رصد الأجسام
نؤكّد أنّ النماذج التالية متوافقة مع ObjectDetector
.
واجهة برمجة التطبيقات.
تشير رسالة الأشكال البيانية نماذج رصد الأجسام المدرَّبة مسبقًا على TensorFlow Hub.
نماذج أنشأها اكتشاف الكائنات في AutoML Vision Edge:
نماذج أنشأها أداة تطوير النماذج TensorFlow Lite لأداة رصد الكائنات
تتوافق النماذج المخصصة التي تلبي متطلبات توافق النموذج.
تنفيذ الاستنتاج باستخدام Java
يمكنك الاطّلاع على
التطبيق المرجعي لميزة "رصد العناصر"
للاطّلاع على مثال حول كيفية استخدام "ObjectDetector
" في تطبيق Android.
الخطوة 1: استيراد تبعية Gradle والإعدادات الأخرى
انسخ ملف النموذج .tflite
إلى دليل مواد العرض في وحدة Android.
ومكان تطبيق النموذج. حدِّد أنّه يجب عدم ضغط الملف.
إضافة مكتبة TensorFlow Lite إلى ملف build.gradle
الخاص بالوحدة:
android {
// Other settings
// Specify tflite file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
الخطوة 2: استخدام النموذج
// Initialization
ObjectDetectorOptions options =
ObjectDetectorOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setMaxResults(1)
.build();
ObjectDetector objectDetector =
ObjectDetector.createFromFileAndOptions(
context, modelFile, options);
// Run inference
List<Detection> results = objectDetector.detect(image);
يمكنك الاطّلاع على
الرمز المصدر وJavadoc
لمزيد من الخيارات لضبط ObjectDetector
.
تنفيذ الاستنتاج في نظام iOS
الخطوة 1: تثبيت الاعتماديات
تتيح مكتبة المهام إمكانية التثبيت باستخدام CocoaPods. تأكَّد من أنّ بيانات CocoaPods مثبت على نظامك. يُرجى الاطّلاع على دليل تثبيت CocoaPods للحصول على التعليمات.
يُرجى الاطّلاع على دليل CocoaPods لـ تفاصيل حول إضافة مجموعات لوحات إلى مشروع Xcode.
أضِف لوحة TensorFlowLiteTaskVision
في Podfile.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
احرص على أن يكون النموذج .tflite
الذي ستستخدمه للاستنتاج متاحًا في
حِزمة تطبيقك.
الخطوة 2: استخدام النموذج
Swift
// Imports
import TensorFlowLiteTaskVision
// Initialization
guard let modelPath = Bundle.main.path(forResource: "ssd_mobilenet_v1",
ofType: "tflite") else { return }
let options = ObjectDetectorOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let detector = try ObjectDetector.detector(options: options)
// Convert the input image to MLImage.
// There are other sources for MLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
guard let image = UIImage (named: "cats_and_dogs.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let detectionResult = try detector.detect(mlImage: mlImage)
Objective-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"ssd_mobilenet_v1" ofType:@"tflite"];
TFLObjectDetectorOptions *options = [[TFLObjectDetectorOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLObjectDetector *detector = [TFLObjectDetector objectDetectorWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"dogs.jpg"];
// There are other sources for GMLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
GMLImage *gmlImage = [[GMLImage alloc] initWithImage:image];
// Run inference
TFLDetectionResult *detectionResult = [detector detectWithGMLImage:gmlImage error:nil];
يمكنك الاطّلاع على
رمز المصدر
لمزيد من الخيارات لضبط TFLObjectDetector
.
تنفيذ الاستنتاج في بايثون
الخطوة 1: تثبيت حزمة pip
pip install tflite-support
الخطوة 2: استخدام النموذج
# Imports
from tflite_support.task import vision
from tflite_support.task import core
from tflite_support.task import processor
# Initialization
base_options = core.BaseOptions(file_name=model_path)
detection_options = processor.DetectionOptions(max_results=2)
options = vision.ObjectDetectorOptions(base_options=base_options, detection_options=detection_options)
detector = vision.ObjectDetector.create_from_options(options)
# Alternatively, you can create an object detector in the following manner:
# detector = vision.ObjectDetector.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_path)
detection_result = detector.detect(image)
يمكنك الاطّلاع على
رمز المصدر
لمزيد من الخيارات لضبط ObjectDetector
.
تنفيذ الاستنتاج بلغة C++
// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const DetectionResult result = object_detector->Detect(*frame_buffer).value();
يمكنك الاطّلاع على
رمز المصدر
لمزيد من الخيارات لضبط ObjectDetector
.
أمثلة النتائج
فيما يلي مثال على نتائج اكتشاف الإصدار 1 من شبكة جوّال ssd من TensorFlow Hub
Results:
Detection #0 (red):
Box: (x: 355, y: 133, w: 190, h: 206)
Top-1 class:
index : 17
score : 0.73828
class name : dog
Detection #1 (green):
Box: (x: 103, y: 15, w: 138, h: 369)
Top-1 class:
index : 17
score : 0.73047
class name : dog
عرض المربّعات المحيطية على صورة الإدخال:
جرب البساطة أداة عرض واجهة سطر الأوامر (CLI) في ObjectDetector باستخدام نموذجك الخاص وبيانات الاختبار.
متطلبات توافق النموذج
تتوقع واجهة برمجة التطبيقات ObjectDetector
نموذج TFLite مع
البيانات الوصفية لنماذج TFLite: الاطلاع على أمثلة للإنشاء
البيانات الوصفية لأدوات رصد الكائنات باستخدام
TensorFlow Lite Metadata Writer API.
يجب أن تستوفي نماذج أدوات رصد الكائنات المتوافقة المتطلبات التالية:
أداة "إدخال صورة الإدخال": (kTfLiteUInt8/kTfLiteFloat32)
- إدخال صورة بحجم
[batch x height x width x channels]
. - لا تتوفّر إمكانية الاستنتاج المجمَّع (يجب أن تكون القيمة
batch
1). - يتم توفير إدخالات نموذج أحمر أخضر أزرق فقط (يجب أن تكون القيمة
channels
3). - إذا كان النوع kTfLiteFloat32، يجب أن تكون خيارات التسوية مطلوبة المرفقة بالبيانات الوصفية لتسوية المدخلات.
- إدخال صورة بحجم
يجب أن تكون مُخرجات الإخراج هي المُخرجات الأربعة لعملية
DetectionPostProcess
، أي:- مكتبة المواقع الجغرافية (kTfLiteFloat32)
- موتّر الحجم
[1 x num_results x 4]
، الصفيفة الداخلية التي تمثل الإحاطة بالإطارات على شكل [أعلى، يسار، يمين، أسفل]. - يجب إرفاق BoundingBoxProperties بالبيانات الوصفية.
ويجب تحديد
type=BOUNDARIES
و"format_type=RATIO":
- موتّر الحجم
Classes tensor (kTfLiteFloat32)
- مأخذ الحجم
[1 x num_results]
، وتمثل كل قيمة مؤشر عدد صحيح لفئةٍ ما. - يمكن إرفاق خرائط (خرائط) تصنيفات اختيارية(ولكن يُنصح باستخدامها) كـ
الملفات المرتبطة بالنوع TENSOR_VALUE_LABELS، وتحتوي على تصنيف واحد
لكل سطر. يمكنك الاطّلاع على
مثال على ملف التصنيفات.
يتم استخدام أول ملف AssociatedFile (إن وُجد) لملء
الحقل "
class_name
" من النتائج. الحقلdisplay_name
هو يتم ملؤه من الملف AssociatedFile (إن وجد) الذي تتطابق لغته مع الحقلdisplay_names_locale
منObjectDetectorOptions
المستخدم في وقت الإنشاء ("en" تلقائيًا، أي الإنجليزية). إذا لم يكن أي منها المتاحة، سيتم ملء حقلindex
فقط من النتائج.
- مأخذ الحجم
مؤشر تنسور (kTfLiteFloat32)
- مأخذ الحجم
[1 x num_results]
، وتمثل كل قيمة للجسم المرصود.
- مأخذ الحجم
عدد مترابط الكشف (kTfLiteFloat32)
- العدد الصحيح num_results كأتينس بالحجم
[1]
.
- العدد الصحيح num_results كأتينس بالحجم
- مكتبة المواقع الجغرافية (kTfLiteFloat32)