Görüntü sınıflandırma, makine öğreniminin yaygın bir kullanım yöntemidir. temsil eder. Örneğin, bir bitki türü için arama yapan belirli bir resim. Bir resmin neyi temsil ettiğini tahmin etme görevi resim sınıflandırması. Bir görüntü sınıflandırıcı, çeşitli öğeleri tanımak üzere eğitilir resim sınıfları. Örneğin bir model, fotoğrafları algılayacak şekilde eğitilebilir. üç farklı hayvan türünü temsil ediyor: tavşan, hamster ve köpek. Görüntüleyin "the" resim sınıflandırma örneği sayfasına göz atın.
Özel görüntünüzü dağıtmak için Task Library ImageClassifier
API'yi kullanın
sınıflandırıcılar veya önceden eğitilmiş
reklamlar yer alır.
ImageClassifier API'nin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dahil resim işleme gösterir.
Giriş resminin ilgilenilen bölge.
Harita yerel ayarını etiketle.
Sonuçları filtrelemek için puan eşiği.
Top-k sınıflandırma sonuçları.
Etiket izin verilenler listesi ve ret listesi.
Desteklenen resim sınıflandırıcı modelleri
Aşağıdaki modellerin ImageClassifier
ile uyumlu olacağı garanti edilir
API'ye gidin.
Modeli oluşturan: Görüntü Sınıflandırma için TensorFlow Lite Model Oluşturucu.
İlgili içeriği oluşturmak için kullanılan TensorFlow Hub'daki önceden eğitilmiş görüntü sınıflandırma modelleri.
Modeli oluşturan: AutoML Vision Edge Görüntü Sınıflandırma.
Şu koşulları karşılayan özel modeller: model uyumluluk koşullarını karşılayın.
Java'da çıkarım çalıştırma
Bkz.
Görüntü sınıflandırma referans uygulaması
ImageClassifier
uygulamasını Android uygulamasında nasıl kullanacağınızı gösteren örnek.
1. Adım: Gradle bağımlılığını ve diğer ayarları içe aktarın
.tflite
model dosyasını Android modülünün öğe dizinine kopyalayın
nerede çalıştırılacağına karar verin. Dosyanın sıkıştırılmaması gerektiğini belirtin ve
modülün build.gradle
dosyasına TensorFlow Lite kitaplığını ekleyin:
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. Adım: Modeli kullanma
// 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);
Bkz.
kaynak kodu ve javadoc
daha fazla ImageClassifier
yapılandırma seçeneğine gidin.
iOS'te çıkarım çalıştır
1. Adım: Bağımlılıkları yükleyin
Görev Kitaplığı, CocoaPods kullanılarak yüklemeyi destekler. CocoaPods'un sisteminizde yüklü. Daha fazla bilgi için lütfen CocoaPods kurulum kılavuzu başlıklı bölüme bakın.
Daha fazla bilgi için lütfen CocoaPods rehberi: Xcode projesine kapsüller ekleme hakkında ayrıntılı bilgi edinin.
TensorFlowLiteTaskVision
kapsülünü Podfile'a ekleyin.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Çıkarım için kullanacağınız .tflite
modelinin mevcut olduğundan emin olun
uygulamanızı sağlar.
2. Adım: Modeli kullanma
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];
Bkz.
kaynak kod
daha fazla TFLImageClassifier
yapılandırma seçeneğine gidin.
Python'da çıkarım çalıştırma
1. Adım: Pip paketini yükleyin
pip install tflite-support
2. Adım: Modeli kullanma
# 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)
Bkz.
kaynak kod
daha fazla ImageClassifier
yapılandırma seçeneğine gidin.
C++'ta çıkarım çalıştır
// 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();
Bkz.
kaynak kod
daha fazla ImageClassifier
yapılandırma seçeneğine gidin.
Örnek sonuçlar
Aşağıda, bir anahtar kelimenin sınıflandırma sonuçlarını içeren bir kuş sınıflandırıcı olarak tanımlanmıştır.
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
Nasıl yapıldığını ImageClassifier için KSA demo aracı kullanarak test edebilirsiniz.
Model uyumluluğu şartları
ImageClassifier
API, kullanımı zorunlu olan bir TFLite modeli bekler
TFLite Model Meta Verileri.
Resim sınıflandırıcıları için meta veri oluşturma örneklerine bakın.
TensorFlow Lite Metadata Writer API.
Uyumlu resim sınıflandırıcı modelleri aşağıdaki gereksinimleri karşılamalıdır:
Giriş görüntüsü tensörü (kTfLiteUInt8/kTfLitefloat32)
[batch x height x width x channels]
boyutunda resim girişi.- toplu çıkarım desteklenmiyor (
batch
değerinin 1 olması gerekir). - yalnızca RGB girişleri desteklenir (
channels
değerinin 3 olması gerekir). - tür kTfLitefloat32 ise NormalizationOptions'ın giriş normalleştirmesi için meta verilere eklenir.
Çıkış puanı tensörü (kTfLiteUInt8/kTfLitefloat32)
N
sınıfı ve 2 veya 4 boyutlu (ör.[1 x N]
veya[1 x 1 x 1 x N]
)- isteğe bağlı (ancak önerilen) etiket eşlemelerini AssociatedFile-s olarak ve türle
Her satırda bir etiket bulunan TENSOR_AXIS_LABELS. Bkz.
örnek etiket dosyası gibidir.
Bu tür ilk AssociatedFile (varsa)
label
alanını doldurmak için kullanılır (C++ dilindeclass_name
olarak adlandırılır) için de ekleyebilirsiniz.display_name
alanı yerel ayarıImageClassifierOptions
öğesinindisplay_names_locale
alanı kullanılan oluşturma zamanı ("en" varsayılan olarak kullanılır, ör. İngilizce). Bunların hiçbiri sonuçların yalnızcaindex
alanı doldurulacaktır.