تتنبأ أدوات تقسيم الصور بما إذا كان كل بكسل في الصورة مرتبطًا فئة معينة. ويختلف ذلك عن ميزة رصد الأجسام التي ترصد الأجسام في للمناطق المستطيلة وتصنيف الصور، والذي يصنف التصنيف . الاطّلاع على نظرة عامة على تصنيف الصور إلى قطاعات أو شرائح مثال لمزيد من المعلومات عن أدوات تقسيم الصور.
استخدِم واجهة برمجة تطبيقات ImageSegmenter
لمكتبة المهام لتفعيل أدوات تقسيم الصور المخصّصة.
أو مُدرَّبة مسبقًا على تطبيقات الأجهزة الجوّالة
الميزات الرئيسية لواجهة برمجة التطبيقات ImageSegmenter API
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم ومساحة اللون تحويل.
تصنيف لغة الخريطة.
هناك نوعان من النتائج، قناع الفئة وأقنعة الثقة.
تصنيف ملوّن لغرض العرض
النماذج المتوافقة لتقسيم الصور
نؤكّد أنّ النماذج التالية متوافقة مع ImageSegmenter
.
واجهة برمجة التطبيقات.
نماذج تصنيف الصور المدرَّبة مسبقًا على TensorFlow المحتوى الرئيسي.
الطُرز المخصصة التي تتوافق مع توافق النماذج متطلبات المشروع.
تنفيذ الاستنتاج باستخدام Java
الاطّلاع على مرجع تقسيم الصور
التطبيق
للاطّلاع على مثال حول كيفية استخدام "ImageSegmenter
" في تطبيق 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
ImageSegmenterOptions options =
ImageSegmenterOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setOutputType(OutputType.CONFIDENCE_MASK)
.build();
ImageSegmenter imageSegmenter =
ImageSegmenter.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<Segmentation> results = imageSegmenter.segment(image);
اطلع على شفرة المصدر
javadoc
لمزيد من الخيارات لضبط ImageSegmenter
.
تنفيذ الاستنتاج في نظام 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: "deeplabv3",
ofType: "tflite") else { return }
let options = ImageSegmenterOptions(modelPath: modelPath)
// Configure any additional options:
// options.outputType = OutputType.confidenceMasks
let segmenter = try ImageSegmenter.segmenter(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: "plane.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let segmentationResult = try segmenter.segment(mlImage: mlImage)
Objective-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"deeplabv3" ofType:@"tflite"];
TFLImageSegmenterOptions *options =
[[TFLImageSegmenterOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.outputType = TFLOutputTypeConfidenceMasks;
TFLImageSegmenter *segmenter = [TFLImageSegmenter imageSegmenterWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"plane.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
TFLSegmentationResult *segmentationResult =
[segmenter segmentWithGMLImage:gmlImage error:nil];
اطّلِع على المصدر
الرمز
لمزيد من الخيارات لضبط TFLImageSegmenter
.
تنفيذ الاستنتاج في بايثون
الخطوة 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)
segmentation_options = processor.SegmentationOptions(
output_type=processor.SegmentationOptions.output_type.CATEGORY_MASK)
options = vision.ImageSegmenterOptions(base_options=base_options, segmentation_options=segmentation_options)
segmenter = vision.ImageSegmenter.create_from_options(options)
# Alternatively, you can create an image segmenter in the following manner:
# segmenter = vision.ImageSegmenter.create_from_file(model_path)
# Run inference
image_file = vision.TensorImage.create_from_file(image_path)
segmentation_result = segmenter.segment(image_file)
اطّلِع على المصدر
الرمز
لمزيد من الخيارات لضبط ImageSegmenter
.
تنفيذ الاستنتاج بلغة C++
// Initialization
ImageSegmenterOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ImageSegmenter> image_segmenter = ImageSegmenter::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 SegmentationResult result = image_segmenter->Segment(*frame_buffer).value();
اطّلِع على المصدر
الرمز
لمزيد من الخيارات لضبط ImageSegmenter
.
أمثلة النتائج
وفيما يلي مثال لنتائج تقسيم إلى شرائح deeplab_v3، نموذج تقسيم عام متاح على TensorFlow Hub.
Color Legend:
(r: 000, g: 000, b: 000):
index : 0
class name : background
(r: 128, g: 000, b: 000):
index : 1
class name : aeroplane
# (omitting multiple lines for conciseness) ...
(r: 128, g: 192, b: 000):
index : 19
class name : train
(r: 000, g: 064, b: 128):
index : 20
class name : tv
Tip: use a color picker on the output PNG file to inspect the output mask with
this legend.
من المفترض أن يظهر قناع فئة التصنيف على النحو التالي:
جرِّب استخدام أداة CLI التجريبية البسيطة ImageSegmenter باستخدام نموذجك الخاص وبيانات الاختبار.
متطلبات توافق النموذج
تتوقع واجهة برمجة التطبيقات ImageSegmenter
نموذج TFLite مع نموذج TFLite الإلزامي.
البيانات الوصفية: الاطّلاع على أمثلة لإنشاء بيانات وصفية للصور
أدوات التقسيم باستخدام TensorFlow Lite Metadata Writer
API.
أداة تحميل صور الإدخال (kTfLiteUInt8/kTfLiteFloat32)
- إدخال صورة بحجم
[batch x height x width x channels]
. - لا تتوفّر إمكانية الاستنتاج المجمَّع (يجب أن تكون القيمة
batch
1). - يتم توفير إدخالات نموذج أحمر أخضر أزرق فقط (يجب أن تكون القيمة
channels
3). - إذا كان النوع kTfLiteFloat32، يجب أن تكون خيارات التسوية مطلوبة المرفقة بالبيانات الوصفية لتسوية المدخلات.
- إدخال صورة بحجم
أداة مترابط أقنعة الإخراج: (kTfLiteUInt8/kTfLiteFloat32)
- مأخذ الحجم
[batch x mask_height x mask_width x num_classes]
، حيث يجب أن تكون القيمةbatch
هي 1، وأنmask_width
وmask_height
هما وأبعاد أقنعة التجزئة الناتجة عن النموذج يمثلnum_classes
عدد الفئات التي يعتمدها النموذج. - يمكن إرفاق خرائط (خرائط) تصنيفات اختيارية(ولكن يُنصح باستخدامها) كـ
الملفات المرتبطة من النوع TENSOR_AXIS_LABELS، وتحتوي على تصنيف واحد لكل
الخط. يتم استخدام أول ملف AssociatedFile (إن وُجد) لملء
label
(باسمclass_name
في C++) للنتائج.display_name
من الملف AssociatedFile (إن وجد) الذي تتطابق لغته مع الحقلdisplay_names_locale
منImageSegmenterOptions
المستخدم في وقت الإنشاء ("en" تلقائيًا، أي الإنجليزية). إذا لم يكن أي منها المتاحة، سيتم ملء حقلindex
فقط من النتائج.
- مأخذ الحجم