Klasifikimi i imazheve është një përdorim i zakonshëm i të mësuarit automatik për të identifikuar se çfarë përfaqëson një imazh. Për shembull, mund të duam të dimë se çfarë lloj kafshe shfaqet në një fotografi të caktuar. Detyra e parashikimit të asaj që përfaqëson një imazh quhet klasifikim imazhesh . Një klasifikues imazhesh trajnohet për të njohur klasa të ndryshme imazhesh. Për shembull, një model mund të trajnohet për të njohur foto që përfaqësojnë tre lloje të ndryshme kafshësh: lepuj, hamsterë dhe qen. Shihni shembullin e klasifikimit të imazheve për më shumë informacion rreth klasifikuesve të imazheve.
Përdorni API-n ImageClassifier të Bibliotekës së Detyrave për të vendosur klasifikuesit tuaj të personalizuar të imazheve ose ata të parapërgatitur në aplikacionet tuaja mobile.
Karakteristikat kryesore të API-t ImageClassifier
Përpunimi i imazhit hyrës, duke përfshirë rrotullimin, ndryshimin e madhësisë dhe konvertimin e hapësirës së ngjyrave.
Rajoni i interesit të imazhit të futur.
Etiketo vendndodhjen e hartës.
Pragu i pikëve për të filtruar rezultatet.
Rezultatet e klasifikimit Top-k.
Etiketo listën e lejimeve dhe listën e mohimeve.
Modelet e mbështetura të klasifikuesit të imazheve
Modelet e mëposhtme garantohen të jenë të pajtueshme me ImageClassifier API.
Modele të krijuara nga TensorFlow Lite Model Maker për Klasifikimin e Imazheve .
Modelet e para-trajnuara të klasifikimit të imazheve në TensorFlow Hub .
Modele të krijuara nga AutoML Vision Edge Image Classification .
Modele të personalizuara që plotësojnë kërkesat e përputhshmërisë së modelit .
Ekzekutoni përfundimin në Java
Shihni aplikacionin referues të Klasifikimit të Imazheve për një shembull se si të përdorni ImageClassifier në një aplikacion Android.
Hapi 1: Importoni varësinë e Gradle dhe cilësimet e tjera
Kopjoni skedarin e modelit .tflite në direktorinë e aseteve të modulit Android ku do të ekzekutohet modeli. Specifikoni që skedari nuk duhet të kompresohet dhe shtoni bibliotekën TensorFlow Lite në skedarin build.gradle të modulit:
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'
}
Hapi 2: Përdorimi i modelit
// 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);
Shihni kodin burimor dhe javadoc për më shumë opsione për të konfiguruar ImageClassifier .
Ekzekutoni përfundimin në iOS
Hapi 1: Instaloni varësitë
Biblioteka e Detyrave mbështet instalimin duke përdorur CocoaPods. Sigurohuni që CocoaPods është instaluar në sistemin tuaj. Ju lutemi shihni udhëzuesin e instalimit të CocoaPods për udhëzime.
Ju lutemi shihni udhëzuesin e CocoaPods për detaje mbi shtimin e pod-eve në një projekt Xcode.
Shtoni pod-in TensorFlowLiteTaskVision në Podfile.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Sigurohuni që modeli .tflite që do të përdorni për nxjerrjen e përfundimeve është i pranishëm në paketën e aplikacionit tuaj.
Hapi 2: Përdorimi i modelit
I shpejtë
// 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)
Objektivi-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];
Shihni kodin burimor për më shumë opsione për të konfiguruar TFLImageClassifier .
Ekzekutoni përfundimin në Python
Hapi 1: Instaloni paketën pip
pip install tflite-support
Hapi 2: Përdorimi i modelit
# 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)
Shihni kodin burimor për më shumë opsione për të konfiguruar ImageClassifier .
Ekzekutoni përfundimin në 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();
Shihni kodin burimor për më shumë opsione për të konfiguruar ImageClassifier .
Rezultatet e shembujve
Ja një shembull i rezultateve të klasifikimit të një klasifikuesi zogjsh .

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
Provoni mjetin e thjeshtë demo CLI për ImageClassifier me modelin tuaj dhe të dhënat e testimit.
Kërkesat e përputhshmërisë së modelit
API-ja ImageClassifier pret një model TFLite me Metadata të Modelit TFLite të detyrueshme. Shihni shembuj të krijimit të metadatave për klasifikuesit e imazheve duke përdorur API-në e Shkruesit të Metadatave TensorFlow Lite .
Modelet e klasifikuesve të imazheve të pajtueshme duhet të plotësojnë kërkesat e mëposhtme:
Tensori i imazhit të hyrjes (kTfLiteUInt8/kTfLiteFloat32)
- madhësia e hyrjes së imazhit
[batch x height x width x channels]. - Përfundimi i grupit nuk mbështetet (
batchduhet të jetë 1). - Mbështeten vetëm hyrjet RGB (
channelsduhet të jenë 3). - Nëse lloji është kTfLiteFloat32, NormalizationOptions duhet t'i bashkëngjiten meta të dhënave për normalizimin e hyrjes.
- madhësia e hyrjes së imazhit
Tensori i rezultatit të daljes (kTfLiteUInt8/kTfLiteFloat32)
- me
Nklasa dhe 2 ose 4 dimensione, dmth.[1 x N]ose[1 x 1 x 1 x N] - Harta(at) opsionale (por të rekomanduara) të etiketave si AssociatedFile-s me llojin TENSOR_AXIS_LABELS, që përmbajnë një etiketë për rresht. Shihni shembullin e skedarit të etiketës . AssociatedFile i parë i tillë (nëse ka) përdoret për të mbushur fushën e
label(e emërtuar siclass_namenë C++) të rezultateve. Fushadisplay_nameplotësohet nga AssociatedFile (nëse ka) lokalizimi i të cilit përputhet me fushëndisplay_names_localetëImageClassifierOptionstë përdorur në kohën e krijimit ("en" si parazgjedhje, dmth. Anglisht). Nëse asnjëra prej këtyre nuk është e disponueshme, vetëm fusha eindextë rezultateve do të plotësohet.
- me