طبقه بندی تصویر یک استفاده رایج از یادگیری ماشینی برای شناسایی آنچه یک تصویر نشان می دهد است. به عنوان مثال، ممکن است بخواهیم بدانیم چه نوع حیوانی در یک تصویر داده شده ظاهر می شود. وظیفه پیش بینی آنچه که یک تصویر نشان می دهد طبقه بندی تصویر نامیده می شود. یک طبقه بندی کننده تصویر برای تشخیص دسته های مختلف تصاویر آموزش دیده است. برای مثال، ممکن است یک مدل آموزش ببیند که عکسهایی را که نشان دهنده سه نوع حیوان مختلف است، تشخیص دهد: خرگوش، همستر، و سگ. برای اطلاعات بیشتر در مورد طبقهبندیکنندههای تصویر ، مثال طبقهبندی تصویر را ببینید.
از Task Library ImageClassifier
API برای استقرار طبقهبندیکنندههای تصویر سفارشی یا از پیش آموزشدیدهشده در برنامههای تلفن همراه خود استفاده کنید.
ویژگی های کلیدی ImageClassifier API
پردازش تصویر ورودی، از جمله چرخش، تغییر اندازه و تبدیل فضای رنگ.
منطقه مورد علاقه تصویر ورودی.
محل نقشه را برچسب بزنید.
آستانه امتیاز برای فیلتر کردن نتایج.
نتایج طبقه بندی Top-k
لیست مجاز و رد لیست را برچسب بزنید.
مدل های طبقه بندی کننده تصویر پشتیبانی شده
مدل های زیر تضمین شده است که با ImageClassifier
API سازگار هستند.
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای طبقهبندی تصاویر .
مدل های طبقه بندی تصویر از پیش آموزش دیده در TensorFlow Hub .
مدلهای ایجاد شده توسط AutoML Vision Edge Image Classification .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از ImageClassifier
در برنامه 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
ImageClassifierOptions options =
ImageClassifierOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setMaxResults(1)
.build();
ImageClassifier imageClassifier =
ImageClassifier.createFromFileAndOptions(
context, modelFile, options);
// Run inference
List<Classifications> results = imageClassifier.classify(image);
برای گزینه های بیشتر برای پیکربندی ImageClassifier
به کد منبع و جاوادوک مراجعه کنید.
استنتاج را در 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: "birds_V1",
ofType: "tflite") else { return }
let options = ImageClassifierOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let classifier = try ImageClassifier.classifier(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: "sparrow.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let classificationResults = try classifier.classify(mlImage: mlImage)
هدف-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"birds_V1" ofType:@"tflite"];
TFLImageClassifierOptions *options =
[[TFLImageClassifierOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLImageClassifier *classifier = [TFLImageClassifier imageClassifierWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"sparrow.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
TFLClassificationResult *classificationResult =
[classifier classifyWithGMLImage:gmlImage error:nil];
برای گزینه های بیشتر برای پیکربندی TFLImageClassifier
به کد منبع مراجعه کنید.
استنتاج را در پایتون اجرا کنید
مرحله 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)
classification_options = processor.ClassificationOptions(max_results=2)
options = vision.ImageClassifierOptions(base_options=base_options, classification_options=classification_options)
classifier = vision.ImageClassifier.create_from_options(options)
# Alternatively, you can create an image classifier in the following manner:
# classifier = vision.ImageClassifier.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_path)
classification_result = classifier.classify(image)
برای گزینه های بیشتر برای پیکربندی ImageClassifier
به کد منبع مراجعه کنید.
استنتاج را در C++ اجرا کنید
// Initialization
ImageClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::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 ClassificationResult result = image_classifier->Classify(*frame_buffer).value();
برای گزینه های بیشتر برای پیکربندی ImageClassifier
به کد منبع مراجعه کنید.
نتایج نمونه
در اینجا نمونه ای از نتایج طبقه بندی یک طبقه بندی پرنده آورده شده است.
Results:
Rank #0:
index : 671
score : 0.91406
class name : /m/01bwb9
display name: Passer domesticus
Rank #1:
index : 670
score : 0.00391
class name : /m/01bwbt
display name: Passer montanus
Rank #2:
index : 495
score : 0.00391
class name : /m/0bwm6m
display name: Passer italiae
ابزار آزمایشی ساده CLI را برای ImageClassifier با مدل و داده های آزمایشی خود امتحان کنید.
الزامات سازگاری مدل
ImageClassifier
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)
- با
N
کلاس و 2 یا 4 بعد، یعنی[1 x N]
یا[1 x 1 x 1 x N]
- نقشه(های) برچسب اختیاری (اما توصیه شده) به عنوان AssociatedFile-s با نوع TENSOR_AXIS_LABELS، حاوی یک برچسب در هر خط. نمونه فایل برچسب را ببینید. اولین AssociatedFile (در صورت وجود) برای پر کردن فیلد
label
(با نامclass_name
در C++) نتایج استفاده میشود. فیلدdisplay_name
از AssociatedFile (در صورت وجود) پر می شود که منطقه آن با فیلدdisplay_names_locale
ازImageClassifierOptions
استفاده شده در زمان ایجاد ("en" به طور پیش فرض، یعنی انگلیسی) مطابقت دارد. اگر هیچ یک از اینها در دسترس نباشد، فقط قسمتindex
نتایج پر می شود.
- با