Detektor objek dapat mengidentifikasi yang mana dari kumpulan objek yang diketahui yang mungkin ada dan memberikan informasi tentang posisinya dalam gambar atau aliran video yang diberikan. Detektor objek dilatih untuk mendeteksi keberadaan dan lokasi beberapa kelas objek. Misalnya, model mungkin dilatih dengan gambar yang berisi berbagai potongan buah, bersama dengan label yang menentukan kelas buah yang mereka wakili (misalnya apel, pisang, atau stroberi), dan data yang menentukan di mana setiap objek muncul. foto. Lihat pengenalan deteksi objek untuk informasi lebih lanjut tentang detektor objek.
Gunakan Task Library ObjectDetector
API untuk menerapkan detektor objek khusus atau yang sudah terlatih ke dalam aplikasi seluler Anda.
Fitur utama dari ObjectDetector API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Beri label lokal peta.
Ambang skor untuk menyaring hasil.
Hasil deteksi top-k.
Beri label daftar yang diizinkan dan daftar yang ditolak.
Model pendeteksi objek yang didukung
Model berikut dijamin kompatibel dengan ObjectDetector
API.
Model deteksi objek yang telah dilatih sebelumnya di TensorFlow Hub .
Model yang dibuat oleh AutoML Vision Edge Object Detection .
Model yang dibuat oleh TensorFlow Lite Model Maker untuk pendeteksi objek .
Model khusus yang memenuhi persyaratan kompatibilitas model .
Jalankan inferensi di Java
Lihat aplikasi referensi Deteksi Objek untuk contoh cara menggunakan ObjectDetector
di aplikasi Android.
Langkah 1: Impor ketergantungan Gradle dan pengaturan 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 (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'
}
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 lebih lanjut untuk mengkonfigurasi ObjectDetector
.
Jalankan inferensi di iOS
Langkah 1: Instal dependensi
Pustaka Tugas mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal pada sistem Anda. Silakan lihat panduan instalasi CocoaPods untuk instruksi.
Silakan lihat panduan CocoaPods untuk detail tentang menambahkan pod ke proyek 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 bundel aplikasi Anda.
Langkah 2: Menggunakan model
Cepat
// 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)
Tujuan 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 lebih lanjut untuk mengonfigurasi TFLObjectDetector
.
Jalankan inferensi dengan 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 lebih lanjut untuk mengonfigurasi ObjectDetector
.
Jalankan 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 lebih lanjut untuk mengonfigurasi ObjectDetector
.
Contoh hasil
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:
Cobalah alat demo CLI sederhana untuk ObjectDetector dengan model dan data uji Anda sendiri.
Persyaratan kompatibilitas model
API ObjectDetector
mengharapkan model TFLite dengan Metadata Model TFLite wajib . Lihat contoh pembuatan metadata untuk pendeteksi objek menggunakan TensorFlow Lite Metadata Writer API .
Model pendeteksi objek yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar masukan: (kTfLiteUInt8/kTfLiteFloat32)
- masukan gambar ukuran
[batch x height x width x channels]
. - inferensi batch tidak didukung (
batch
harus 1). - hanya input RGB yang didukung (
channels
harus 3). - jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- masukan gambar ukuran
Tensor keluaran harus berupa 4 keluaran dari operasi
DetectionPostProcess
, yaitu:- Lokasi tensor (kTfLiteFloat32)
- tensor berukuran
[1 x num_results x 4]
, array dalam mewakili kotak pembatas dalam bentuk [atas, kiri, kanan, bawah]. - BoundingBoxProperties harus dilampirkan ke metadata dan harus menentukan
type=BOUNDARIES
dan `coordinate_type=RATIO.
- tensor berukuran
Tensor kelas (kTfLiteFloat32)
- tensor ukuran
[1 x num_results]
, setiap nilai mewakili indeks bilangan bulat dari suatu kelas. - peta label opsional (tetapi disarankan) dapat dilampirkan sebagai AssociatedFile-s dengan jenis TENSOR_VALUE_LABELS, berisi satu label per baris. Lihat contoh file label . AssociatedFile yang pertama (jika ada) digunakan untuk mengisi bidang
class_name
dari hasil. Bidangdisplay_name
diisi dari AssociatedFile (jika ada) yang lokalnya cocok dengan bidangdisplay_names_locale
dariObjectDetectorOptions
yang digunakan pada waktu pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya bidangindex
hasil yang akan diisi.
- tensor ukuran
Skor tensor (kTfLiteFloat32)
- tensor berukuran
[1 x num_results]
, masing-masing nilai mewakili skor objek yang terdeteksi.
- tensor berukuran
Jumlah tensor deteksi (kTfLiteFloat32)
- integer num_results sebagai tensor ukuran
[1]
.
- integer num_results sebagai tensor ukuran
- Lokasi tensor (kTfLiteFloat32)
Detektor objek dapat mengidentifikasi yang mana dari kumpulan objek yang diketahui yang mungkin ada dan memberikan informasi tentang posisinya dalam gambar atau aliran video yang diberikan. Detektor objek dilatih untuk mendeteksi keberadaan dan lokasi beberapa kelas objek. Misalnya, model mungkin dilatih dengan gambar yang berisi berbagai potongan buah, bersama dengan label yang menentukan kelas buah yang mereka wakili (misalnya apel, pisang, atau stroberi), dan data yang menentukan di mana setiap objek muncul. foto. Lihat pengenalan deteksi objek untuk informasi lebih lanjut tentang detektor objek.
Gunakan Task Library ObjectDetector
API untuk menerapkan detektor objek khusus atau yang sudah terlatih ke dalam aplikasi seluler Anda.
Fitur utama dari ObjectDetector API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Beri label lokal peta.
Ambang skor untuk menyaring hasil.
Hasil deteksi top-k.
Beri label daftar yang diizinkan dan daftar yang ditolak.
Model pendeteksi objek yang didukung
Model berikut dijamin kompatibel dengan ObjectDetector
API.
Model deteksi objek yang telah dilatih sebelumnya di TensorFlow Hub .
Model yang dibuat oleh AutoML Vision Edge Object Detection .
Model yang dibuat oleh TensorFlow Lite Model Maker untuk pendeteksi objek .
Model khusus yang memenuhi persyaratan kompatibilitas model .
Jalankan inferensi di Java
Lihat aplikasi referensi Deteksi Objek untuk contoh cara menggunakan ObjectDetector
di aplikasi Android.
Langkah 1: Impor ketergantungan Gradle dan pengaturan 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 (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'
}
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 lebih lanjut untuk mengkonfigurasi ObjectDetector
.
Jalankan inferensi di iOS
Langkah 1: Instal dependensi
Pustaka Tugas mendukung penginstalan menggunakan CocoaPods. Pastikan CocoaPods diinstal pada sistem Anda. Silakan lihat panduan instalasi CocoaPods untuk instruksi.
Silakan lihat panduan CocoaPods untuk detail tentang menambahkan pod ke proyek 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 bundel aplikasi Anda.
Langkah 2: Menggunakan model
Cepat
// 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)
Tujuan 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 lebih lanjut untuk mengonfigurasi TFLObjectDetector
.
Jalankan inferensi dengan 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 lebih lanjut untuk mengonfigurasi ObjectDetector
.
Jalankan 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 lebih lanjut untuk mengonfigurasi ObjectDetector
.
Contoh hasil
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:
Cobalah alat demo CLI sederhana untuk ObjectDetector dengan model dan data uji Anda sendiri.
Persyaratan kompatibilitas model
API ObjectDetector
mengharapkan model TFLite dengan Metadata Model TFLite wajib . Lihat contoh pembuatan metadata untuk pendeteksi objek menggunakan TensorFlow Lite Metadata Writer API .
Model pendeteksi objek yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar masukan: (kTfLiteUInt8/kTfLiteFloat32)
- masukan gambar ukuran
[batch x height x width x channels]
. - inferensi batch tidak didukung (
batch
harus 1). - hanya input RGB yang didukung (
channels
harus 3). - jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- masukan gambar ukuran
Tensor keluaran harus berupa 4 keluaran dari operasi
DetectionPostProcess
, yaitu:- Lokasi tensor (kTfLiteFloat32)
- tensor berukuran
[1 x num_results x 4]
, array dalam mewakili kotak pembatas dalam bentuk [atas, kiri, kanan, bawah]. - BoundingBoxProperties harus dilampirkan ke metadata dan harus menentukan
type=BOUNDARIES
dan `coordinate_type=RATIO.
- tensor berukuran
Tensor kelas (kTfLiteFloat32)
- tensor ukuran
[1 x num_results]
, setiap nilai mewakili indeks bilangan bulat dari suatu kelas. - peta label opsional (tetapi disarankan) dapat dilampirkan sebagai AssociatedFile-s dengan jenis TENSOR_VALUE_LABELS, berisi satu label per baris. Lihat contoh file label . AssociatedFile yang pertama (jika ada) digunakan untuk mengisi bidang
class_name
dari hasil. Bidangdisplay_name
diisi dari AssociatedFile (jika ada) yang lokalnya cocok dengan bidangdisplay_names_locale
dariObjectDetectorOptions
yang digunakan pada waktu pembuatan ("en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya bidangindex
hasil yang akan diisi.
- tensor ukuran
Skor tensor (kTfLiteFloat32)
- tensor berukuran
[1 x num_results]
, masing-masing nilai mewakili skor objek yang terdeteksi.
- tensor berukuran
Jumlah tensor deteksi (kTfLiteFloat32)
- integer num_results sebagai tensor ukuran
[1]
.
- integer num_results sebagai tensor ukuran
- Lokasi tensor (kTfLiteFloat32)