Nesne algılayıcıları, bilinen bir nesne kümesinden hangisinin mevcut olabileceğini belirleyebilir ve belirtilen resimde veya videodaki konumları hakkında bilgi vermek akış şeklinde gösterilir. Bir nesne algılayıcısı, nesnelerin varlığını ve konumunu algılayacak şekilde eğitildi içeren bir nesnedir. Örneğin, bir model resimlerle eğitilebilir içeren bir etiketin yanı sıra temsil ettikleri meyve sınıfı (ör. elma, muz veya çilek) ve her nesnenin görüntüde nerede göründüğünü belirten verilerdir. Bkz. nesne algılama örneği inceleyin.
Özel nesne algılayıcılarınızı dağıtmak için Görev Kitaplığı ObjectDetector
API'yi kullanın
veya önceden eğitilmiş uygulamalar
ekleyebilirsiniz.
ObjectDetector API'nin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dahil resim işleme gösterir.
Harita yerel ayarını etiketle.
Sonuçları filtrelemek için puan eşiği.
Top-k algılama sonuçları.
Etiket izin verilenler listesi ve ret listesi.
Desteklenen nesne algılayıcı modelleri
Aşağıdaki modellerin ObjectDetector
ile uyumlu olacağı garanti edilir
API'ye gidin.
İlgili içeriği oluşturmak için kullanılan TensorFlow Hub'daki önceden eğitilmiş nesne algılama modelleridir.
Modeli oluşturan: AutoML Vision Edge Nesne Algılama.
Modeli oluşturan: Nesne algılayıcı için TensorFlow Lite Model Maker.
Şu koşulları karşılayan özel modeller: model uyumluluk koşullarını karşılayın.
Java'da çıkarım çalıştırma
Bkz.
Nesne Algılama referans uygulaması
ObjectDetector
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
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);
Bkz.
kaynak kodu ve javadoc
daha fazla ObjectDetector
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: "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];
Bkz.
kaynak kod
daha fazla TFLObjectDetector
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)
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)
Bkz.
kaynak kod
daha fazla ObjectDetector
yapılandırma seçeneğine gidin.
C++'ta çıkarım çalıştır
// 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();
Bkz.
kaynak kod
daha fazla ObjectDetector
yapılandırma seçeneğine gidin.
Örnek sonuçlar
Bu örnekte, ssd mobilenet v1 TensorFlow Hub'dan alabilirsiniz.
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ünde oluşturun:
Nasıl yapıldığını ObjectDetector için CLI demo aracı kullanarak test edebilirsiniz.
Model uyumluluğu şartları
ObjectDetector
API, kullanımı zorunlu olan bir TFLite modeli bekler
TFLite Model Meta Verileri. İçerik üretmeyle ilgili örneklere göz atın
meta verileri kullanmak için
TensorFlow Lite Metadata Writer API.
Uyumlu nesne algılayı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ış tensörleri,
DetectionPostProcess
işleminin 4 çıkışı olmalıdır. Yani:- Konumlar tensörü (kTfLitefloat32)
[1 x num_results x 4]
boyutunda tensor; temsil eden iç dizi sınırlayıcı kutular [üst, sol, sağ, alt] biçimindedir.- BoundingBoxProperties'in meta verilere eklenmesi gerekir
Ayrıca,
type=BOUNDARIES
ve "coordinate_type=RATIO" değerini de belirtmelidir.
Sınıf tensörü (kTfLitefloat32)
[1 x num_results]
boyutunda tensor; her bir değer bir sınıfın tam sayı dizinidir.- isteğe bağlı (ancak önerilen) etiket haritaları şu şekilde eklenebilir:
TENSOR_VALUE_LABELS türünde AssociatedFile-s, bir etiket içeriyor
girin. Bkz.
örnek etiket dosyası gibidir.
Bu tür ilk AssociatedFile (varsa),
class_name
alanı gösteriliyor.display_name
alanı (varsa) yerel ayarıObjectDetectorOptions
öğ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.
Skor tensörü (kTfLitefloat32)
[1 x num_results]
boyutunda tensor; her bir değer puanına karşılık gelir.
Algılama tensörü sayısı (kTfLitefloat32)
[1]
boyutunda bir tensör olarak tamsayı num_results.
- Konumlar tensörü (kTfLitefloat32)