Nesne dedektörleri, bilinen bir nesne grubundan hangilerinin mevcut olabileceğini belirleyebilir ve verilen görüntü veya video akışındaki konumları hakkında bilgi sağlayabilir. Nesne algılayıcı, birden fazla nesne sınıfının varlığını ve konumunu algılayacak şekilde eğitilir. Örneğin, bir model çeşitli meyveler içeren resimlerle, bu meyvelerin sınıfını (ör. elma, muz veya çilek) belirten bir etiketle ve her nesnenin resimde nerede göründüğünü belirten verilerle eğitilebilir. Nesne dedektörleri hakkında daha fazla bilgi için nesne algılama örneğine bakın.
Özel nesne dedektörlerinizi veya önceden eğitilmiş olanları mobil uygulamalarınıza dağıtmak için Görev Kitaplığı ObjectDetector API'sini kullanın.
ObjectDetector API'nin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dönüştürme dahil olmak üzere giriş görüntüsü işleme.
Etiket haritası yerel ayarı.
Sonuçları filtrelemek için puan eşiği.
En iyi k algılama sonuçları.
Etiket izin verilenler ve red listesi.
Desteklenen nesne algılama modelleri
Aşağıdaki modellerin ObjectDetector
API ile uyumlu olduğu garanti edilir.
TensorFlow Hub'daki önceden eğitilmiş nesne algılama modelleri.
AutoML Vision Edge Nesne Algılama ile oluşturulan modeller.
Nesne algılayıcı için TensorFlow Lite Model Maker ile oluşturulan modeller.
Model uyumluluğu koşullarını karşılayan özel modeller.
Java'da çıkarım çalıştırma
Android uygulamasında ObjectDetector özelliğinin nasıl kullanılacağıyla ilgili bir örnek için Nesne Algılama referans uygulamasına bakın.
1. adım: Gradle bağımlılığını ve diğer ayarları içe aktarın
.tflite model dosyasını, modelin çalıştırılacağı Android modülünün öğeler dizinine kopyalayın. Dosyanın sıkıştırılmaması gerektiğini belirtin ve TensorFlow Lite kitaplığını modülün build.gradle dosyasına 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
ObjectDetectorOptions options =
ObjectDetectorOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setMaxResults(1)
.build();
ObjectDetector objectDetector =
ObjectDetector.createFromFileAndOptions(
context, modelFile, options);
// Run inference
List<Detection> results = objectDetector.detect(image);
ObjectDetector yapılandırmayla ilgili daha fazla seçenek için kaynak kodu ve javadoc'a bakın.
iOS'te çıkarım çalıştırma
1. adım: Bağımlılıkları yükleyin
Görev Kitaplığı, CocoaPods kullanılarak yüklenmeyi destekler. Sisteminizde CocoaPods'un yüklü olduğundan emin olun. Talimatlar için lütfen CocoaPods yükleme kılavuzuna bakın.
Pod'ları Xcode projesine ekleme hakkında ayrıntılı bilgi için lütfen CocoaPods rehberine bakın.
Podfile'a TensorFlowLiteTaskVision kapsülünü ekleyin.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Çıkarım için kullanacağınız .tflite modelin uygulama paketinizde bulunduğundan emin olun.
2. adım: Modeli kullanma
Swift
// Imports
import TensorFlowLiteTaskVision
// Initialization
guard let modelPath = Bundle.main.path(forResource: "ssd_mobilenet_v1",
ofType: "tflite") else { return }
let options = ObjectDetectorOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let detector = try ObjectDetector.detector(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: "cats_and_dogs.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let detectionResult = try detector.detect(mlImage: mlImage)
Objective-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"ssd_mobilenet_v1" ofType:@"tflite"];
TFLObjectDetectorOptions *options = [[TFLObjectDetectorOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLObjectDetector *detector = [TFLObjectDetector objectDetectorWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"dogs.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
TFLDetectionResult *detectionResult = [detector detectWithGMLImage:gmlImage error:nil];
TFLObjectDetector yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
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)
detection_options = processor.DetectionOptions(max_results=2)
options = vision.ObjectDetectorOptions(base_options=base_options, detection_options=detection_options)
detector = vision.ObjectDetector.create_from_options(options)
# Alternatively, you can create an object detector in the following manner:
# detector = vision.ObjectDetector.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_path)
detection_result = detector.detect(image)
ObjectDetector yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
C++'ta çıkarım çalıştırma
// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::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 DetectionResult result = object_detector->Detect(*frame_buffer).value();
ObjectDetector yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
Örnek sonuçlar
TensorFlow Hub'daki ssd mobilenet v1 algılama sonuçlarına ilişkin bir örneği aşağıda bulabilirsiniz.

Results:
Detection #0 (red):
Box: (x: 355, y: 133, w: 190, h: 206)
Top-1 class:
index : 17
score : 0.73828
class name : dog
Detection #1 (green):
Box: (x: 103, y: 15, w: 138, h: 369)
Top-1 class:
index : 17
score : 0.73047
class name : dog
Sınırlayıcı kutuları giriş görüntüsüne yerleştirin:

Kendi modeliniz ve test verilerinizle basit CLI demo aracını ObjectDetector için deneyin.
Model uyumluluğu koşulları
ObjectDetector API, zorunlu TFLite Model Metadata içeren bir TFLite modeli bekler. TensorFlow Lite Metadata Writer API'yi kullanarak nesne algılayıcılar için meta veri oluşturma örneklerine bakın.
Uyumlu nesne dedektörü modelleri aşağıdaki koşulları karşılamalıdır:
Giriş görüntüsü tensörü: (kTfLiteUInt8/kTfLiteFloat32)
[batch x height x width x channels]boyutunda görüntü girişi.- Toplu çıkarım desteklenmez (
batch1 olmalıdır). - Yalnızca RGB girişleri desteklenir (
channels3 olmalıdır). - Tür kTfLiteFloat32 ise giriş normalleştirme için NormalizationOptions'ın meta verilere eklenmesi gerekir.
Çıkış tensörleri,
DetectionPostProcessişleminin 4 çıkışı olmalıdır. Örneğin:- Konum tensörü (kTfLiteFloat32)
[1 x num_results x 4]boyutunda tensör. İç dizi, [üst, sol, sağ, alt] biçiminde sınırlayıcı kutuları temsil eder.- Sınırlayıcı kutu özellikleri, meta verilere eklenmelidir ve
type=BOUNDARIESile "coordinate_type=RATIO" değerini belirtmelidir. Sınıflar tensörü (kTfLiteFloat32)
Boyutu
[1 x num_results]olan tensör. Her değer, bir sınıfın tam sayı dizinini temsil eder.İsteğe bağlı (ancak önerilir) etiket haritaları, her satırda bir etiket içeren TENSOR_VALUE_LABELS türünde AssociatedFile olarak eklenebilir. Örnek etiket dosyasına bakın. Bu türden ilk AssociatedFile (varsa) sonuçların
class_namealanını doldurmak için kullanılır.display_namealanı, oluşturma sırasında kullanılanObjectDetectorOptionsöğesinindisplay_names_localealanıyla yerel ayarı eşleşen AssociatedFile (varsa) öğesinden doldurulur ("en" varsayılan değerdir, yani İngilizce). Bunlardan hiçbiri yoksa sonuçların yalnızcaindexalanı doldurulur.Puan tensörü (kTfLiteFloat32)
Boyutu
[1 x num_results]olan tensör. Her değer, algılanan nesnenin puanını gösterir.Algılama tensörü sayısı (kTfLiteFloat32)
[1]boyutunda bir tensör olarak tam sayı num_results.