آشکارسازهای اشیاء می توانند تشخیص دهند که کدام یک از یک مجموعه شناخته شده از اشیاء ممکن است وجود داشته باشد و اطلاعاتی در مورد موقعیت آنها در تصویر داده شده یا یک جریان ویدئو ارائه دهد. یک آشکارساز شی برای تشخیص حضور و مکان چندین کلاس از اشیا آموزش دیده است. به عنوان مثال، یک مدل ممکن است با تصاویری که حاوی قطعات مختلف میوه هستند، همراه با برچسبی که کلاس میوه ای را که آنها نشان می دهند (مثلاً یک سیب، یک موز یا یک توت فرنگی) مشخص می کند، و داده هایی که مشخص می کند هر شی در کجا ظاهر می شود، آموزش داده شود. تصویر. برای اطلاعات بیشتر در مورد آشکارسازهای شی، مقدمه تشخیص شی را ببینید.
از Task Library ObjectDetector
API برای استقرار آشکارسازهای شی سفارشی یا از پیش آموزش دیده خود در برنامه های تلفن همراه خود استفاده کنید.
ویژگی های کلیدی ObjectDetector API
پردازش تصویر ورودی، از جمله چرخش، تغییر اندازه، و تبدیل فضای رنگ.
محل نقشه را برچسب بزنید.
آستانه امتیاز برای فیلتر کردن نتایج.
نتایج تشخیص Top-k
لیست مجاز و رد لیست را برچسب بزنید.
مدلهای آشکارساز شی پشتیبانی شده
مدلهای زیر با API ObjectDetector
سازگار هستند.
مدلهای ایجاد شده توسط AutoML Vision Edge Object Detection .
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای آشکارساز شی .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از ObjectDetector
در یک برنامه Android، به برنامه مرجع تشخیص شیء مراجعه کنید.
مرحله 1: وابستگی Gradle و تنظیمات دیگر را وارد کنید
فایل مدل .tflite
. را در فهرست داراییهای ماژول اندروید که مدل اجرا میشود، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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 (NNAPI is included)
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);
برای گزینه های بیشتر برای پیکربندی ObjectDetector
به کد منبع و جاوادوک مراجعه کنید.
استنتاج را در iOS اجرا کنید
مرحله 1: وابستگی ها را نصب کنید
Task Library از نصب با استفاده از CocoaPods پشتیبانی می کند. مطمئن شوید که CocoaPods روی سیستم شما نصب شده است. لطفاً راهنمای نصب CocoaPods را برای دستورالعمل ها ببینید.
لطفاً راهنمای CocoaPods را برای جزئیات بیشتر در مورد افزودن غلاف به پروژه Xcode ببینید.
غلاف TensorFlowLiteTaskVision
را در Podfile اضافه کنید.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
مطمئن شوید که مدل .tflite
. که برای استنتاج استفاده می کنید در بسته نرم افزاری شما وجود دارد.
مرحله 2: استفاده از مدل
سریع
// 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)
هدف ج
// 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
به کد منبع مراجعه کنید.
نتایج نمونه
در اینجا نمونه ای از نتایج تشخیص ssd mobilenet v1 از 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
API یک مدل TFLite با فراداده مدل TFLite اجباری را انتظار دارد. نمونههایی از ایجاد ابرداده برای آشکارسازهای شی با استفاده از TensorFlow Lite Metadata Writer API را ببینید.
مدلهای آشکارساز شی سازگار باید شرایط زیر را برآورده کنند:
تانسور تصویر ورودی: (kTfLiteUInt8/kTfLiteFloat32)
- اندازه ورودی تصویر
[batch x height x width x channels]
. - استنتاج دسته ای پشتیبانی نمی شود (
batch
باید 1 باشد). - فقط ورودی های RGB پشتیبانی می شوند (
channels
ها باید 3 باشند). - اگر نوع kTfLiteFloat32 باشد، برای عادی سازی ورودی، باید NormalizationOptions به ابرداده پیوست شود.
- اندازه ورودی تصویر
تانسورهای خروجی باید 4 خروجی یک عملیات
DetectionPostProcess
باشند، به عنوان مثال:- تانسور مکان (kTfLiteFloat32)
- تانسور اندازه
[1 x num_results x 4]
، آرایه داخلی کادرهای محدود کننده را به شکل [بالا، چپ، راست، پایین] نشان میدهد. - BoundingBoxProperties برای پیوست شدن به ابرداده الزامی است و باید
type=BOUNDARIES
و `coordinate_type=RATIO را مشخص کند.
- تانسور اندازه
تانسور کلاس ها (kTfLiteFloat32)
- تانسور اندازه
[1 x num_results]
، که هر مقدار نمایانگر شاخص عدد صحیح یک کلاس است. - نقشه(های) برچسب اختیاری (اما توصیه شده) را می توان به عنوان AssociatedFile-s با نوع 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)
آشکارسازهای اشیاء می توانند تشخیص دهند که کدام یک از یک مجموعه شناخته شده از اشیاء ممکن است وجود داشته باشد و اطلاعاتی در مورد موقعیت آنها در تصویر داده شده یا یک جریان ویدئو ارائه دهد. یک آشکارساز شی برای تشخیص حضور و مکان چندین کلاس از اشیا آموزش دیده است. به عنوان مثال، یک مدل ممکن است با تصاویری که حاوی قطعات مختلف میوه هستند، همراه با برچسبی که کلاس میوه ای را که آنها نشان می دهند (مثلاً یک سیب، یک موز یا یک توت فرنگی) مشخص می کند، و داده هایی که مشخص می کند هر شی در کجا ظاهر می شود، آموزش داده شود. تصویر. برای اطلاعات بیشتر در مورد آشکارسازهای شی، مقدمه تشخیص شی را ببینید.
از Task Library ObjectDetector
API برای استقرار آشکارسازهای شی سفارشی یا از پیش آموزش دیده خود در برنامه های تلفن همراه خود استفاده کنید.
ویژگی های کلیدی ObjectDetector API
پردازش تصویر ورودی، از جمله چرخش، تغییر اندازه، و تبدیل فضای رنگ.
محل نقشه را برچسب بزنید.
آستانه امتیاز برای فیلتر کردن نتایج.
نتایج تشخیص Top-k
لیست مجاز و رد لیست را برچسب بزنید.
مدلهای آشکارساز شی پشتیبانی شده
مدلهای زیر با API ObjectDetector
سازگار هستند.
مدلهای ایجاد شده توسط AutoML Vision Edge Object Detection .
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای آشکارساز شی .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از ObjectDetector
در یک برنامه Android، به برنامه مرجع تشخیص شیء مراجعه کنید.
مرحله 1: وابستگی Gradle و تنظیمات دیگر را وارد کنید
فایل مدل .tflite
. را در فهرست داراییهای ماژول اندروید که مدل اجرا میشود، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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 (NNAPI is included)
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);
برای گزینه های بیشتر برای پیکربندی ObjectDetector
به کد منبع و جاوادوک مراجعه کنید.
استنتاج را در iOS اجرا کنید
مرحله 1: وابستگی ها را نصب کنید
Task Library از نصب با استفاده از CocoaPods پشتیبانی می کند. مطمئن شوید که CocoaPods روی سیستم شما نصب شده است. لطفاً راهنمای نصب CocoaPods را برای دستورالعمل ها ببینید.
لطفاً راهنمای CocoaPods را برای جزئیات بیشتر در مورد افزودن غلاف به پروژه Xcode ببینید.
غلاف TensorFlowLiteTaskVision
را در Podfile اضافه کنید.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
مطمئن شوید که مدل .tflite
. که برای استنتاج استفاده می کنید در بسته نرم افزاری شما وجود دارد.
مرحله 2: استفاده از مدل
سریع
// 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)
هدف ج
// 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
به کد منبع مراجعه کنید.
نتایج نمونه
در اینجا نمونه ای از نتایج تشخیص ssd mobilenet v1 از 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
API یک مدل TFLite با فراداده مدل TFLite اجباری را انتظار دارد. نمونههایی از ایجاد ابرداده برای آشکارسازهای شی با استفاده از TensorFlow Lite Metadata Writer API را ببینید.
مدلهای آشکارساز شی سازگار باید شرایط زیر را برآورده کنند:
تانسور تصویر ورودی: (kTfLiteUInt8/kTfLiteFloat32)
- اندازه ورودی تصویر
[batch x height x width x channels]
. - استنتاج دسته ای پشتیبانی نمی شود (
batch
باید 1 باشد). - فقط ورودی های RGB پشتیبانی می شوند (
channels
ها باید 3 باشند). - اگر نوع kTfLiteFloat32 باشد، برای عادی سازی ورودی، باید NormalizationOptions به ابرداده پیوست شود.
- اندازه ورودی تصویر
تانسورهای خروجی باید 4 خروجی یک عملیات
DetectionPostProcess
باشند، به عنوان مثال:- تانسور مکان (kTfLiteFloat32)
- تانسور اندازه
[1 x num_results x 4]
، آرایه داخلی کادرهای محدود کننده را به شکل [بالا، چپ، راست، پایین] نشان میدهد. - BoundingBoxProperties برای پیوست شدن به ابرداده الزامی است و باید
type=BOUNDARIES
و `coordinate_type=RATIO را مشخص کند.
- تانسور اندازه
تانسور کلاس ها (kTfLiteFloat32)
- تانسور اندازه
[1 x num_results]
، که هر مقدار نمایانگر شاخص عدد صحیح یک کلاس است. - نقشه(های) برچسب اختیاری (اما توصیه شده) را می توان به عنوان AssociatedFile-s با نوع 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)