Detektor objek dapat mengidentifikasi objek mana dari sekumpulan objek yang diketahui yang mungkin ada dan memberikan informasi tentang posisinya dalam gambar atau streaming video tertentu. Detektor objek dilatih untuk mendeteksi keberadaan dan lokasi beberapa kelas objek. Misalnya, model dapat dilatih dengan gambar yang berisi berbagai macam buah, beserta label yang menentukan kelas buah yang diwakilinya (misalnya, apel, pisang, atau stroberi), dan data yang menentukan tempat setiap objek muncul dalam gambar. Lihat contoh deteksi objek untuk mengetahui informasi selengkapnya tentang detektor objek.
Gunakan API ObjectDetector Task Library untuk men-deploy detektor objek kustom atau yang telah dilatih sebelumnya ke dalam aplikasi seluler Anda.
Fitur utama ObjectDetector API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Label lokalitas peta.
Batas skor untuk memfilter hasil.
Hasil deteksi top-k.
Daftar yang diizinkan dan daftar tolak label.
Model detektor objek yang didukung
Model berikut dijamin kompatibel dengan ObjectDetector
API.
Model yang dibuat oleh Deteksi Objek AutoML Vision Edge.
Model yang dibuat oleh TensorFlow Lite Model Maker untuk detektor objek.
Model kustom yang memenuhi persyaratan kompatibilitas model.
Menjalankan inferensi di Java
Lihat aplikasi referensi Deteksi Objek
untuk mengetahui contoh cara menggunakan ObjectDetector di aplikasi Android.
Langkah 1: Impor dependensi Gradle dan setelan 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
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
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);
Lihat kode sumber dan
javadoc
untuk opsi lainnya dalam mengonfigurasi ObjectDetector.
Menjalankan inferensi di iOS
Langkah 1: Instal dependensi
Task Library mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal di sistem Anda. Lihat panduan penginstalan CocoaPods untuk mengetahui petunjuknya.
Lihat panduan CocoaPods untuk mengetahui detail tentang cara menambahkan pod ke project 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 paket aplikasi Anda.
Langkah 2: Menggunakan model
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];
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi TFLObjectDetector.
Menjalankan inferensi di 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)
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)
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ObjectDetector.
Menjalankan inferensi di C++
// 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();
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi ObjectDetector.
Hasil contoh
Berikut adalah contoh hasil deteksi ssd mobilenet v1 dari TensorFlow Hub.

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
Render kotak pembatas ke gambar input:

Coba alat demo CLI sederhana untuk ObjectDetector dengan model dan data pengujian Anda sendiri.
Persyaratan kompatibilitas model
API ObjectDetector mengharapkan model TFLite dengan Metadata Model TFLite wajib. Lihat contoh pembuatan metadata untuk detektor objek menggunakan TensorFlow Lite Metadata Writer API.
Model detektor objek yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar input: (kTfLiteUInt8/kTfLiteFloat32)
- input gambar berukuran
[batch x height x width x channels]. - inferensi batch tidak didukung (
batchharus 1). - hanya input RGB yang didukung (
channelsharus 3). - Jika jenisnya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- input gambar berukuran
Tensor output harus berupa 4 output operasi
DetectionPostProcess, yaitu:- Tensor lokasi (kTfLiteFloat32)
- tensor berukuran
[1 x num_results x 4], array dalam yang merepresentasikan kotak pembatas dalam bentuk [atas, kiri, kanan, bawah]. - BoundingBoxProperties harus dilampirkan ke metadata dan
harus menentukan
type=BOUNDARIESdan `coordinate_type=RATIO. Tensor kelas (kTfLiteFloat32)
tensor berukuran
[1 x num_results], setiap nilai mewakili indeks bilangan bulat dari suatu class.peta label opsional (tetapi direkomendasikan) dapat dilampirkan sebagai AssociatedFile dengan jenis TENSOR_VALUE_LABELS, yang berisi satu label per baris. Lihat file contoh label. AssociatedFile pertama (jika ada) digunakan untuk mengisi kolom
class_namehasil. Kolomdisplay_namediisi dari AssociatedFile (jika ada) yang lokalitasnya cocok dengan kolomdisplay_names_localedariObjectDetectorOptionsyang digunakan pada saat pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya kolomindexdari hasil yang akan diisi.Tensor skor (kTfLiteFloat32)
tensor berukuran
[1 x num_results], setiap nilai mewakili skor objek yang terdeteksi.Jumlah tensor deteksi (kTfLiteFloat32)
integer num_results sebagai tensor berukuran
[1].