تصنيف الصور هو من الاستخدامات الشائعة لتعلُّم الآلة لتحديد صورة تمثله صورة واحدة. على سبيل المثال، قد نرغب في معرفة نوع الحيوان الذي يظهر على الشاشة في صورة معينة. يُطلق على مهمة التنبؤ بما تمثله الصورة تصنيف الصور: يتم تدريب مصنِّف الصور للتعرّف على أنواع وفئات الصور. على سبيل المثال، قد يتم تدريب نموذج للتعرّف على الصور. تمثل ثلاثة أنواع مختلفة من الحيوانات: الأرانب والهامستر والكلاب. عرض الـ مثال على تصنيف الصور لمزيد من المعلومات حول مصنِّفات الصور.
استخدِم واجهة برمجة التطبيقات Task Library ImageClassifier
API لنشر صورتك المخصّصة.
المصنِّفات أو المصنِّفات المُدرَّبة مسبقًا في تطبيقات الأجهزة الجوّالة.
الميزات الرئيسية لواجهة برمجة التطبيقات ImageClassifier API
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم ومساحة اللون تحويل.
المنطقة محط الاهتمام للصورة التي تم إدخالها.
تصنيف لغة الخريطة.
الحد الأدنى للنتيجة لفلترة النتائج.
نتائج تصنيف أعلى k.
القائمة المسموح بها للتصنيفات وقائمة الحظر.
نماذج مصنِّف الصور المتوافقة
نؤكّد أنّ النماذج التالية متوافقة مع ImageClassifier
.
واجهة برمجة التطبيقات.
نماذج أنشأها أداة إنشاء النماذج TensorFlow Lite لتصنيف الصور.
تشير رسالة الأشكال البيانية نماذج تصنيف الصور المدرَّبة مسبقًا على TensorFlow Hub.
نماذج أنشأها تصنيف صور AutoML Vision Edge:
تتوافق النماذج المخصصة التي تلبي متطلبات توافق النموذج.
تنفيذ الاستنتاج باستخدام Java
يمكنك الاطّلاع على
التطبيق المرجعي لتصنيف الصور
للاطّلاع على مثال حول كيفية استخدام "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);
يمكنك الاطّلاع على
الرمز المصدر وJavadoc
لمزيد من الخيارات لضبط ImageClassifier
.
تنفيذ الاستنتاج في نظام 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: "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)
Objective-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
نموذج TFLite مع
البيانات الوصفية لنماذج TFLite:
راجِع أمثلة على كيفية إنشاء بيانات وصفية لمصنِّفات الصور باستخدام
TensorFlow Lite Metadata Writer API.
يجب أن تستوفي نماذج أدوات تصنيف الصور المتوافقة المتطلبات التالية:
أداة تحميل صور الإدخال (kTfLiteUInt8/kTfLiteFloat32)
- إدخال صورة بحجم
[batch x height x width x channels]
. - لا تتوفّر إمكانية الاستنتاج المجمَّع (يجب أن تكون القيمة
batch
1). - يتم توفير إدخالات نموذج أحمر أخضر أزرق فقط (يجب أن تكون القيمة
channels
3). - إذا كان النوع kTfLiteFloat32، يجب أن تكون خيارات التسوية مطلوبة المرفقة بالبيانات الوصفية لتسوية المدخلات.
- إدخال صورة بحجم
متّصِل نتيجة الإخراج (kTfLiteUInt8/kTfLiteFloat32)
- في
N
فئة وبحدتَين أو 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
فقط من النتائج.
- في