تصنيف الصور هو استخدام شائع للتعلم الآلي لتحديد ما تمثله الصورة. على سبيل المثال ، قد نرغب في معرفة نوع الحيوان الذي يظهر في صورة معينة. مهمة التنبؤ بما تمثله الصورة تسمى تصنيف الصورة . يتم تدريب مصنف الصور على التعرف على فئات مختلفة من الصور. على سبيل المثال ، قد يتم تدريب النموذج على التعرف على الصور التي تمثل ثلاثة أنواع مختلفة من الحيوانات: الأرانب والهامستر والكلاب. راجع نظرة عامة على تصنيف الصور للحصول على مزيد من المعلومات حول مصنفات الصور.
استخدم واجهة برمجة تطبيقات ImageClassifier
لمكتبة المهام لنشر مصنفات الصور المخصصة الخاصة بك أو المصنفات سابقة التدريب في تطبيقات الهاتف المحمول الخاصة بك.
الملامح الرئيسية لواجهة برمجة تطبيقات ImageClassifier
إدخال معالجة الصورة ، بما في ذلك التدوير وتغيير الحجم وتحويل مساحة اللون.
منطقة الاهتمام بالصورة المدخلة.
لغة خريطة التسمية.
عتبة النتيجة لتصفية النتائج.
نتائج تصنيف Top-k.
تسمية allowlist و denylist.
نماذج تصنيف الصور المدعومة
النماذج التالية مضمونة لتكون متوافقة مع ImageClassifier
API.
النماذج التي تم إنشاؤها بواسطة TensorFlow Lite Model Maker لتصنيف الصور .
نماذج تصنيف الصور التي تم اختبارها مسبقًا على TensorFlow Hub .
النماذج التي تم إنشاؤها بواسطة AutoML Vision Edge Image Classification .
النماذج المخصصة التي تلبي متطلبات توافق النموذج .
تشغيل الاستدلال في 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 (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
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: استخدام النموذج
سويفت
// 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)
ج موضوعية
// 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 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 بنموذجك الخاص وبيانات الاختبار.
متطلبات توافق النموذج
تتوقع واجهة API ImageClassifier
نموذج TFLite مع بيانات تعريف إلزامية لنموذج TFLite . شاهد أمثلة على إنشاء البيانات الأولية لمصنفات الصور باستخدام TensorFlow Lite Metadata Writer API .
يجب أن تفي نماذج مصنف الصور المتوافقة بالمتطلبات التالية:
موتر صورة الإدخال (kTfLiteUInt8 / kTfLiteFloat32)
- إدخال الصورة بالحجم
[batch x height x width x channels]
. - الاستدلال الدفعي غير مدعوم (يجب أن تكون
batch
1). - يتم دعم مدخلات RGB فقط (يجب أن تكون
channels
3). - إذا كان النوع هو kTfLiteFloat32 ، فإن خيارات Normalization مطلوبة ليتم إرفاقها بالبيانات الوصفية لتطبيع الإدخال.
- إدخال الصورة بالحجم
موتر درجة الإخراج (kTfLiteUInt8 / kTfLiteFloat32)
- مع فئات
N
وإما 2 أو 4 أبعاد ، أي[1 x N]
أو[1 x 1 x 1 x N]
- خريطة (خرائط) تسمية اختيارية (لكن موصى بها) كملفات مقترنة بالنوع TENSOR_AXIS_LABELS ، تحتوي على تسمية واحدة في كل سطر. انظر مثال ملف التسمية . يتم استخدام أول ملف AssociatedFile (إن وجد) لملء حقل
label
(المسمىclass_name
في C ++) من النتائج. يتم ملء حقلdisplay_name
من AssociatedFile (إن وجد) الذي تتطابق إعداداته المحلية مع حقلdisplay_names_locale
لخياراتImageClassifierOptions
المستخدمة في وقت الإنشاء ("en" افتراضيًا ، أي الإنجليزية). إذا لم يكن أي منها متاحًا ، فسيتم ملء حقلindex
الخاص بالنتائج فقط.
- مع فئات