Nesne detektörleri, bilinen bir dizi nesneden hangisinin mevcut olabileceğini belirleyebilir ve verilen görüntü veya bir video akışı içindeki konumları hakkında bilgi sağlayabilir. Bir nesne algılayıcı, birden çok nesne sınıfının varlığını ve konumunu algılamak için eğitilmiştir. Örneğin, bir model, temsil ettikleri meyvenin sınıfını (örneğin bir elma, muz veya çilek) belirten bir etiketle birlikte çeşitli meyve parçalarını içeren görüntülerle ve her nesnenin nerede göründüğünü belirten verilerle eğitilebilir. görüntü. Nesne dedektörleri hakkında daha fazla bilgi için nesne algılama tanıtımına bakın.
Özel nesne algılayıcılarınızı veya önceden eğitilmiş olanları mobil uygulamalarınıza dağıtmak için Görev Kitaplığı ObjectDetector
API'sini kullanın.
ObjectDetector API'sinin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dönüştürme dahil olmak üzere girdi görüntü işleme.
Harita yerel ayarını etiketleyin.
Sonuçları filtrelemek için puan eşiği.
Top-k algılama sonuçları.
İzin verilenler listesini ve reddedilenler listesini etiketleyin.
Desteklenen nesne algılayıcı modelleri
Aşağıdaki modellerin ObjectDetector
API ile uyumlu olması garanti edilmektedir.
TensorFlow Hub'da önceden eğitilmiş nesne algılama modelleri .
AutoML Vision Edge Object Detection tarafından oluşturulan modeller.
Nesne dedektörü için TensorFlow Lite Model Maker tarafından oluşturulan modeller.
Model uyumluluk gereksinimlerini karşılayan özel modeller.
Java'da çıkarımı çalıştır
Bir Android uygulamasında ObjectDetector
nasıl kullanılacağına ilişkin bir örnek için Nesne Algılama başvuru uygulamasına bakın.
Adım 1: 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 varlıklar 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 (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'
}
Adım 2: 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ırmak için daha fazla seçenek için kaynak koduna ve ObjectDetector
.
iOS'ta çıkarımı çalıştır
Adım 1: Bağımlılıkları yükleyin
Görev Kitaplığı, CocoaPods kullanılarak kurulumu destekler. CocoaPods'un sisteminizde kurulu olduğundan emin olun. Talimatlar için lütfen CocoaPods kurulum kılavuzuna bakın.
Bir Xcode projesine bölme eklemeyle ilgili ayrıntılar için lütfen CocoaPods kılavuzuna bakın.
TensorFlowLiteTaskVision
bölmesini Pod dosyasına ekleyin.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Çıkarım için kullanacağınız .tflite
modelinin uygulama paketinizde bulunduğundan emin olun.
Adım 2: Modeli kullanma
Süratli
// 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)
Amaç 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Python'da çıkarımı çalıştır
Adım 1: pip paketini kurun
pip install tflite-support
Adım 2: 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Çıkarımı C++ ile çalıştırın
// 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Örnek sonuçlar
İşte TensorFlow Hub'dan ssd mobilenet v1 algılama sonuçlarına bir örnek.
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 işleyin:
ObjectDetector için basit CLI demo aracını kendi model ve test verilerinizle deneyin.
Model uyumluluğu gereksinimleri
ObjectDetector
API, zorunlu TFLite Model Meta Verilerine sahip bir TFLite modeli bekler. TensorFlow Lite Meta Veri Yazıcı API'sını kullanarak nesne algılayıcıları için meta veri oluşturma örneklerine bakın.
Uyumlu nesne dedektörü modelleri aşağıdaki gereksinimleri karşılamalıdır:
Giriş görüntü tensörü: (kTfLiteUInt8/kTfLiteFloat32)
-
[batch x height x width x channels]
boyutunda görüntü girişi. - toplu çıkarım desteklenmiyor (
batch
işin 1 olması gerekiyor). - yalnızca RGB girişleri desteklenir (
channels
3 olması gerekir). - tür kTfLiteFloat32 ise, normalizationOptions'ın giriş normalleştirmesi için meta verilere eklenmesi gerekir.
-
Çıkış tensörleri, bir
DetectionPostProcess
işleminin 4 çıkışı olmalıdır, yani:- Konum tensörü (kTfLiteFloat32)
-
[1 x num_results x 4]
boyutunda tensör, [üst, sol, sağ, alt] biçimindeki sınırlayıcı kutuları temsil eden iç dizi. - BoundingBoxProperties'in meta verilere eklenmesi gerekir ve
type=BOUNDARIES
ve `coordinate_type=RATIO' belirtilmelidir.
-
Sınıf tensörü (kTfLiteFloat32)
-
[1 x num_results]
boyutunda tensör, her değer bir sınıfın tamsayı indeksini temsil eder. - isteğe bağlı (ancak önerilen) etiket eşlemeleri, her satırda bir etiket içeren TENSOR_VALUE_LABELS türünde AssociatedFile-s olarak eklenebilir. Örnek etiket dosyasına bakın. Bu tür ilk AssociatedFile (varsa), sonuçların
class_name
alanını doldurmak için kullanılır.display_names_locale
alanı, yerel ayarı oluşturma sırasında kullanılanObjectDetectorOptions
display_name
alanıyla eşleşen AssociatedFile'dan (varsa) doldurulur (varsayılan olarak "en", yani İngilizce). Bunların hiçbiri mevcut değilse, sonuçların yalnızcaindex
alanı doldurulacaktır.
-
Puan tensörü (kTfLiteFloat32)
-
[1 x num_results]
boyutunda tensör, her değer algılanan nesnenin puanını temsil eder.
-
Algılama tensörü sayısı (kTfLiteFloat32)
-
[1]
boyutunda bir tensör olarak tamsayı num_results .
-
- Konum tensörü (kTfLiteFloat32)
Nesne detektörleri, bilinen bir dizi nesneden hangisinin mevcut olabileceğini belirleyebilir ve verilen görüntü veya bir video akışı içindeki konumları hakkında bilgi sağlayabilir. Bir nesne algılayıcı, birden çok nesne sınıfının varlığını ve konumunu algılamak için eğitilmiştir. Örneğin, bir model, temsil ettikleri meyvenin sınıfını (örneğin bir elma, muz veya çilek) belirten bir etiketle birlikte çeşitli meyve parçalarını içeren görüntülerle ve her nesnenin nerede göründüğünü belirten verilerle eğitilebilir. görüntü. Nesne dedektörleri hakkında daha fazla bilgi için nesne algılama tanıtımına bakın.
Özel nesne algılayıcılarınızı veya önceden eğitilmiş olanları mobil uygulamalarınıza dağıtmak için Görev Kitaplığı ObjectDetector
API'sini kullanın.
ObjectDetector API'sinin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dönüştürme dahil olmak üzere girdi görüntü işleme.
Harita yerel ayarını etiketleyin.
Sonuçları filtrelemek için puan eşiği.
Top-k algılama sonuçları.
İzin verilenler listesini ve reddedilenler listesini etiketleyin.
Desteklenen nesne algılayıcı modelleri
Aşağıdaki modellerin ObjectDetector
API ile uyumlu olması garanti edilmektedir.
TensorFlow Hub'da önceden eğitilmiş nesne algılama modelleri .
AutoML Vision Edge Object Detection tarafından oluşturulan modeller.
Nesne dedektörü için TensorFlow Lite Model Maker tarafından oluşturulan modeller.
Model uyumluluk gereksinimlerini karşılayan özel modeller.
Java'da çıkarımı çalıştır
Bir Android uygulamasında ObjectDetector
nasıl kullanılacağına ilişkin bir örnek için Nesne Algılama başvuru uygulamasına bakın.
Adım 1: 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 varlıklar 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 (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'
}
Adım 2: 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ırmak için daha fazla seçenek için kaynak koduna ve ObjectDetector
.
iOS'ta çıkarımı çalıştır
Adım 1: Bağımlılıkları yükleyin
Görev Kitaplığı, CocoaPods kullanılarak kurulumu destekler. CocoaPods'un sisteminizde kurulu olduğundan emin olun. Talimatlar için lütfen CocoaPods kurulum kılavuzuna bakın.
Bir Xcode projesine bölme eklemeyle ilgili ayrıntılar için lütfen CocoaPods kılavuzuna bakın.
TensorFlowLiteTaskVision
bölmesini Pod dosyasına ekleyin.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Çıkarım için kullanacağınız .tflite
modelinin uygulama paketinizde bulunduğundan emin olun.
Adım 2: Modeli kullanma
Süratli
// 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)
Amaç 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Python'da çıkarımı çalıştır
Adım 1: pip paketini kurun
pip install tflite-support
Adım 2: 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Çıkarımı C++ ile çalıştırın
// 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ırmak için daha fazla seçenek için kaynak koduna bakın.
Örnek sonuçlar
İşte TensorFlow Hub'dan ssd mobilenet v1 algılama sonuçlarına bir örnek.
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 işleyin:
ObjectDetector için basit CLI demo aracını kendi model ve test verilerinizle deneyin.
Model uyumluluğu gereksinimleri
ObjectDetector
API, zorunlu TFLite Model Meta Verilerine sahip bir TFLite modeli bekler. TensorFlow Lite Meta Veri Yazıcı API'sını kullanarak nesne algılayıcıları için meta veri oluşturma örneklerine bakın.
Uyumlu nesne dedektörü modelleri aşağıdaki gereksinimleri karşılamalıdır:
Giriş görüntü tensörü: (kTfLiteUInt8/kTfLiteFloat32)
-
[batch x height x width x channels]
boyutunda görüntü girişi. - toplu çıkarım desteklenmiyor (
batch
işin 1 olması gerekiyor). - yalnızca RGB girişleri desteklenir (
channels
3 olması gerekir). - tür kTfLiteFloat32 ise, normalizationOptions'ın giriş normalleştirmesi için meta verilere eklenmesi gerekir.
-
Çıkış tensörleri, bir
DetectionPostProcess
işleminin 4 çıkışı olmalıdır, yani:- Konum tensörü (kTfLiteFloat32)
-
[1 x num_results x 4]
boyutunda tensör, [üst, sol, sağ, alt] biçimindeki sınırlayıcı kutuları temsil eden iç dizi. - BoundingBoxProperties'in meta verilere eklenmesi gerekir ve
type=BOUNDARIES
ve `coordinate_type=RATIO' belirtilmelidir.
-
Sınıf tensörü (kTfLiteFloat32)
-
[1 x num_results]
boyutunda tensör, her değer bir sınıfın tamsayı indeksini temsil eder. - isteğe bağlı (ancak önerilen) etiket eşlemeleri, her satırda bir etiket içeren TENSOR_VALUE_LABELS türünde AssociatedFile-s olarak eklenebilir. Örnek etiket dosyasına bakın. Bu tür ilk AssociatedFile (varsa), sonuçların
class_name
alanını doldurmak için kullanılır.display_names_locale
alanı, yerel ayarı oluşturma sırasında kullanılanObjectDetectorOptions
display_name
alanıyla eşleşen AssociatedFile'dan (varsa) doldurulur (varsayılan olarak "en", yani İngilizce). Bunların hiçbiri mevcut değilse, sonuçların yalnızcaindex
alanı doldurulacaktır.
-
Puan tensörü (kTfLiteFloat32)
-
[1 x num_results]
boyutunda tensör, her değer algılanan nesnenin puanını temsil eder.
-
Algılama tensörü sayısı (kTfLiteFloat32)
-
[1]
boyutunda bir tensör olarak tamsayı num_results .
-
- Konum tensörü (kTfLiteFloat32)