قطعه سازهای تصویر پیش بینی می کنند که آیا هر پیکسل از یک تصویر با یک کلاس خاص مرتبط است یا خیر. این بر خلاف تشخیص اشیا است که اشیاء را در مناطق مستطیلی تشخیص می دهد و طبقه بندی تصویر که تصویر کلی را طبقه بندی می کند. برای اطلاعات بیشتر در مورد قطعهسازهای تصویر، به مثال نمای کلی تقسیمبندی تصویر مراجعه کنید.
از Task Library ImageSegmenter
API برای استقرار بخشکنندههای تصویر سفارشی یا موارد از پیش آموزشدیده خود در برنامههای تلفن همراه خود استفاده کنید.
ویژگی های کلیدی ImageSegmenter API
پردازش تصویر ورودی، از جمله چرخش، تغییر اندازه و تبدیل فضای رنگ.
محل نقشه را برچسب بزنید.
دو نوع خروجی، ماسک دسته بندی و ماسک اطمینان.
برچسب رنگی برای هدف نمایش
مدل های قطعه ساز تصویر پشتیبانی شده
سازگاری مدل های زیر با ImageSegmenter
API تضمین شده است.
مدلهای تقسیمبندی تصویر از پیش آموزشدیده در TensorFlow Hub .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از ImageSegmenter
در برنامه Android، به برنامه مرجع Image Segmentation مراجعه کنید.
مرحله 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);
برای گزینه های بیشتر برای پیکربندی ImageSegmenter
به کد منبع و جاوادوک مراجعه کنید.
استنتاج را در 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: "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)
هدف-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
API انتظار یک مدل TFLite با فراداده مدل TFLite اجباری را دارد. نمونههایی از ایجاد ابرداده برای قطعهکنندههای تصویر با استفاده از TensorFlow Lite Metadata Writer API را ببینید.
تانسور تصویر ورودی (kTfLiteUInt8/kTfLiteFloat32)
- اندازه ورودی تصویر
[batch x height x width x channels]
. - استنتاج دسته ای پشتیبانی نمی شود (
batch
باید 1 باشد). - فقط ورودی های RGB پشتیبانی می شوند (
channels
باید 3 باشند). - اگر نوع kTfLiteFloat32 باشد، برای عادی سازی ورودی، باید NormalizationOptions به ابرداده پیوست شود.
- اندازه ورودی تصویر
تانسور ماسک خروجی: (kTfLiteUInt8/kTfLiteFloat32)
- تانسور اندازه
[batch x mask_height x mask_width x num_classes]
، که در آنbatch
باید 1 باشد،mask_width
وmask_height
ابعاد ماسک های تقسیم بندی تولید شده توسط مدل هستند وnum_classes
تعداد کلاس های پشتیبانی شده توسط مدل است. - نقشه(های) برچسب اختیاری (اما توصیه شده) را می توان به عنوان AssociatedFile-s با نوع TENSOR_AXIS_LABELS، حاوی یک برچسب در هر خط، پیوست کرد. اولین AssociatedFile (در صورت وجود) برای پر کردن فیلد
label
(با نامclass_name
در C++) نتایج استفاده میشود. فیلدdisplay_name
از AssociatedFile (در صورت وجود) پر می شود که منطقه آن با فیلدdisplay_names_locale
ImageSegmenterOptions
استفاده شده در زمان ایجاد ("en" به طور پیش فرض، یعنی انگلیسی) مطابقت دارد. اگر هیچ یک از اینها در دسترس نباشد، فقط قسمتindex
نتایج پر می شود.
- تانسور اندازه