Klasifikasi gambar adalah penggunaan umum machine learning untuk mengidentifikasi apa yang diwakili oleh suatu gambar. Misalnya, kita mungkin ingin mengetahui jenis hewan yang muncul dalam gambar tertentu. Tugas memprediksi apa yang direpresentasikan oleh suatu gambar disebut klasifikasi gambar. Pengklasifikasi gambar dilatih untuk mengenali berbagai kelas gambar. Misalnya, model dapat dilatih untuk mengenali foto yang menampilkan tiga jenis hewan yang berbeda: kelinci, hamster, dan. Lihat contoh klasifikasi gambar untuk mengetahui informasi selengkapnya tentang pengklasifikasi gambar.
Gunakan Task Library ImageClassifier API untuk men-deploy pengklasifikasi gambar kustom atau yang telah dilatih sebelumnya ke dalam aplikasi seluler Anda.
Fitur utama ImageClassifier API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Region yang diinginkan dari gambar input.
Label lokalitas peta.
Batas skor untuk memfilter hasil.
Hasil klasifikasi Top-k.
Daftar yang diizinkan dan daftar tolak label.
Model klasifikasi gambar yang didukung
Model berikut dijamin kompatibel dengan ImageClassifier
API.
Model yang dibuat oleh TensorFlow Lite Model Maker untuk Klasifikasi Gambar.
Model yang dibuat oleh AutoML Vision Edge Image Classification.
Model kustom yang memenuhi persyaratan kompatibilitas model.
Menjalankan inferensi di Java
Lihat aplikasi referensi Klasifikasi Gambar
untuk mengetahui contoh cara menggunakan ImageClassifier di aplikasi Android.
Langkah 1: Impor dependensi Gradle dan setelan lainnya
Salin file model .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tidak boleh dikompresi, dan
tambahkan library TensorFlow Lite ke file build.gradle modul:
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'
}
Langkah 2: Menggunakan model
// 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);
Lihat kode sumber dan
javadoc
untuk opsi lainnya dalam mengonfigurasi ImageClassifier.
Menjalankan inferensi di iOS
Langkah 1: Instal dependensi
Task Library mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal di sistem Anda. Lihat panduan penginstalan CocoaPods untuk mengetahui petunjuknya.
Lihat panduan CocoaPods untuk mengetahui detail tentang cara menambahkan pod ke project Xcode.
Tambahkan pod TensorFlowLiteTaskVision di Podfile.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Pastikan model .tflite yang akan Anda gunakan untuk inferensi ada di paket aplikasi Anda.
Langkah 2: Menggunakan model
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];
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi TFLImageClassifier.
Menjalankan inferensi di Python
Langkah 1: Instal paket pip
pip install tflite-support
Langkah 2: Menggunakan model
# 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)
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ImageClassifier.
Menjalankan inferensi di 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();
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ImageClassifier.
Hasil contoh
Berikut adalah contoh hasil klasifikasi pengklasifikasi burung.

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
Coba alat demo CLI sederhana untuk ImageClassifier dengan model dan data pengujian Anda sendiri.
Persyaratan kompatibilitas model
API ImageClassifier mengharapkan model TFLite dengan Metadata Model TFLite wajib. Lihat contoh pembuatan metadata untuk pengklasifikasi gambar menggunakan TensorFlow Lite Metadata Writer API.
Model klasifikasi gambar yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar input (kTfLiteUInt8/kTfLiteFloat32)
- input gambar berukuran
[batch x height x width x channels]. - inferensi batch tidak didukung (
batchharus 1). - hanya input RGB yang didukung (
channelsharus 3). - Jika jenisnya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- input gambar berukuran
Tensor skor output (kTfLiteUInt8/kTfLiteFloat32)
- dengan class
Ndan 2 atau 4 dimensi, yaitu[1 x N]atau[1 x 1 x 1 x N] - peta label opsional (tetapi direkomendasikan) sebagai AssociatedFile dengan jenis TENSOR_AXIS_LABELS, yang berisi satu label per baris. Lihat contoh
file
label.
AssociatedFile pertama (jika ada) digunakan untuk mengisi kolom
label(bernamaclass_namedi C++) hasil. Kolomdisplay_namediisi dari AssociatedFile (jika ada) yang lokalitasnya cocok dengan kolomdisplay_names_localedariImageClassifierOptionsyang digunakan pada waktu pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya kolomindexdari hasil yang akan diisi.
- dengan class