Klasifikasi gambar adalah penggunaan umum dari pembelajaran mesin untuk mengidentifikasi apa yang diwakili oleh gambar. Misalnya, kita mungkin ingin mengetahui jenis hewan apa yang muncul dalam gambar tertentu. Tugas memprediksi apa yang diwakili oleh citra disebut klasifikasi citra . Pengklasifikasi gambar dilatih untuk mengenali berbagai kelas gambar. Misalnya, seorang model mungkin dilatih untuk mengenali foto yang mewakili tiga jenis hewan yang berbeda: kelinci, hamster, dan anjing. Lihat ikhtisar klasifikasi gambar untuk informasi lebih lanjut tentang pengklasifikasi gambar.
Gunakan API ImageClassifier
Pustaka Tugas untuk menerapkan pengklasifikasi gambar khusus atau yang sudah dilatih sebelumnya ke dalam aplikasi seluler Anda.
Fitur utama dari ImageClassifier API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Wilayah yang diinginkan dari gambar masukan.
Beri label lokal peta.
Ambang skor untuk menyaring hasil.
Hasil klasifikasi top-k.
Beri label daftar yang diizinkan dan daftar yang ditolak.
Model pengklasifikasi gambar yang didukung
Model berikut dijamin kompatibel dengan ImageClassifier
API.
Model yang dibuat oleh TensorFlow Lite Model Maker untuk Klasifikasi Gambar .
Model klasifikasi gambar yang telah dilatih sebelumnya di TensorFlow Hub .
Model yang dibuat oleh AutoML Vision Edge Image Classification .
Model khusus yang memenuhi persyaratan kompatibilitas model .
Jalankan inferensi di Java
Lihat aplikasi referensi Klasifikasi Gambar untuk contoh cara menggunakan ImageClassifier
di aplikasi Android.
Langkah 1: Impor ketergantungan Gradle dan pengaturan 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 (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'
}
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 lebih lanjut untuk mengkonfigurasi ImageClassifier
.
Jalankan inferensi di iOS
Langkah 1: Instal dependensi
Pustaka Tugas mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal pada sistem Anda. Silakan lihat panduan instalasi CocoaPods untuk instruksi.
Silakan lihat panduan CocoaPods untuk detail tentang menambahkan pod ke proyek 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 bundel aplikasi Anda.
Langkah 2: Menggunakan model
Cepat
// 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)
Tujuan C
// Imports
#import <TensorFlowLiteTaskVision/TFLTaskVision.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 lebih lanjut untuk mengkonfigurasi TFLImageClassifier
.
Jalankan inferensi dengan 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 lebih lanjut untuk mengonfigurasi ImageClassifier
.
Jalankan 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 lebih lanjut untuk mengonfigurasi ImageClassifier
.
Contoh hasil
Berikut adalah contoh hasil klasifikasi dari bird classifier .
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
Cobalah alat demo CLI sederhana untuk ImageClassifier dengan model dan data uji 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 pengklasifikasi gambar yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar masukan (kTfLiteUInt8/kTfLiteFloat32)
- masukan gambar ukuran
[batch x height x width x channels]
. - inferensi batch tidak didukung (
batch
harus 1). - hanya input RGB yang didukung (
channels
harus 3). - jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- masukan gambar ukuran
Tensor skor keluaran (kTfLiteUInt8/kTfLiteFloat32)
- dengan kelas
N
dan 2 atau 4 dimensi, yaitu[1 x N]
atau[1 x 1 x 1 x N]
- peta label opsional (tetapi disarankan) sebagai AssociatedFile-s dengan jenis TENSOR_AXIS_LABELS, berisi satu label per baris. Lihat contoh file label . AssociatedFile yang pertama (jika ada) digunakan untuk mengisi bidang
label
(dinamakan sebagaiclass_name
dalam C++) dari hasil. Bidangdisplay_name
diisi dari AssociatedFile (jika ada) yang lokalnya cocok dengan bidangdisplay_names_locale
dariImageClassifierOptions
yang digunakan pada waktu pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya bidangindex
hasil yang akan diisi.
- dengan kelas
Klasifikasi gambar adalah penggunaan umum dari pembelajaran mesin untuk mengidentifikasi apa yang diwakili oleh gambar. Misalnya, kita mungkin ingin mengetahui jenis hewan apa yang muncul dalam gambar tertentu. Tugas memprediksi apa yang diwakili oleh citra disebut klasifikasi citra . Pengklasifikasi gambar dilatih untuk mengenali berbagai kelas gambar. Misalnya, seorang model mungkin dilatih untuk mengenali foto yang mewakili tiga jenis hewan yang berbeda: kelinci, hamster, dan anjing. Lihat ikhtisar klasifikasi gambar untuk informasi lebih lanjut tentang pengklasifikasi gambar.
Gunakan API ImageClassifier
Pustaka Tugas untuk menerapkan pengklasifikasi gambar khusus atau yang sudah dilatih sebelumnya ke dalam aplikasi seluler Anda.
Fitur utama dari ImageClassifier API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Wilayah yang diinginkan dari gambar masukan.
Beri label lokal peta.
Ambang skor untuk menyaring hasil.
Hasil klasifikasi top-k.
Beri label daftar yang diizinkan dan daftar yang ditolak.
Model pengklasifikasi gambar yang didukung
Model berikut dijamin kompatibel dengan ImageClassifier
API.
Model yang dibuat oleh TensorFlow Lite Model Maker untuk Klasifikasi Gambar .
Model klasifikasi gambar yang telah dilatih sebelumnya di TensorFlow Hub .
Model yang dibuat oleh AutoML Vision Edge Image Classification .
Model khusus yang memenuhi persyaratan kompatibilitas model .
Jalankan inferensi di Java
Lihat aplikasi referensi Klasifikasi Gambar untuk contoh cara menggunakan ImageClassifier
di aplikasi Android.
Langkah 1: Impor ketergantungan Gradle dan pengaturan 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 (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'
}
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 lebih lanjut untuk mengkonfigurasi ImageClassifier
.
Jalankan inferensi di iOS
Langkah 1: Instal dependensi
Pustaka Tugas mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal pada sistem Anda. Silakan lihat panduan instalasi CocoaPods untuk instruksi.
Silakan lihat panduan CocoaPods untuk detail tentang menambahkan pod ke proyek 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 bundel aplikasi Anda.
Langkah 2: Menggunakan model
Cepat
// 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)
Tujuan C
// Imports
#import <TensorFlowLiteTaskVision/TFLTaskVision.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 lebih lanjut untuk mengkonfigurasi TFLImageClassifier
.
Jalankan inferensi dengan 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 lebih lanjut untuk mengonfigurasi ImageClassifier
.
Jalankan 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 lebih lanjut untuk mengonfigurasi ImageClassifier
.
Contoh hasil
Berikut adalah contoh hasil klasifikasi dari bird classifier .
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
Cobalah alat demo CLI sederhana untuk ImageClassifier dengan model dan data uji 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 pengklasifikasi gambar yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar masukan (kTfLiteUInt8/kTfLiteFloat32)
- masukan gambar ukuran
[batch x height x width x channels]
. - inferensi batch tidak didukung (
batch
harus 1). - hanya input RGB yang didukung (
channels
harus 3). - jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- masukan gambar ukuran
Tensor skor keluaran (kTfLiteUInt8/kTfLiteFloat32)
- dengan kelas
N
dan 2 atau 4 dimensi, yaitu[1 x N]
atau[1 x 1 x 1 x N]
- peta label opsional (tetapi disarankan) sebagai AssociatedFile-s dengan jenis TENSOR_AXIS_LABELS, berisi satu label per baris. Lihat contoh file label . AssociatedFile yang pertama (jika ada) digunakan untuk mengisi bidang
label
(dinamakan sebagaiclass_name
dalam C++) dari hasil. Bidangdisplay_name
diisi dari AssociatedFile (jika ada) yang lokalnya cocok dengan bidangdisplay_names_locale
dariImageClassifierOptions
yang digunakan pada waktu pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya bidangindex
hasil yang akan diisi.
- dengan kelas