Hari Komunitas ML adalah 9 November! Bergabung dengan kami untuk update dari TensorFlow, JAX, dan lebih Pelajari lebih lanjut

Integrasikan detektor objek

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. Sebagai contoh, model mungkin dilatih dengan gambar yang mengandung berbagai potongan buah, bersama dengan label yang menentukan kelas buah mereka mewakili (misalnya apel, pisang, atau strawberry), dan data menentukan di mana setiap objek muncul di foto. Lihat pengenalan deteksi obyek untuk informasi lebih lanjut tentang detektor objek.

Gunakan Task Perpustakaan ObjectDetector API untuk menyebarkan Anda detektor objek kustom atau orang pretrained ke dalam aplikasi mobile 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 akan kompatibel dengan ObjectDetector API.

Jalankan inferensi di Java

Lihat Obyek referensi aplikasi Detection untuk contoh bagaimana menggunakan ObjectDetector dalam sebuah aplikasi Android.

Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya

Salin .tflite file model ke direktori aset modul Android di mana model akan dijalankan. Menentukan bahwa file tersebut tidak harus dikompresi, dan menambahkan perpustakaan TensorFlow Lite untuk modul build.gradle berkas:

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:0.2.0'
}

Langkah 2: Menggunakan model

// Initialization
ObjectDetectorOptions options = ObjectDetectorOptions.builder().setMaxResults(1).build();
ObjectDetector objectDetector = ObjectDetector.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Detection> results = objectDetector.detect(image);

Lihat kode sumber dan javadoc untuk lebih banyak pilihan untuk mengkonfigurasi ObjectDetector .

Jalankan inferensi di C++

// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::CreateFromOptions(options).value();

// Run inference
const DetectionResult result = object_detector->Detect(*frame_buffer).value();

Lihat kode sumber untuk lebih banyak pilihan untuk mengkonfigurasi ObjectDetector .

Contoh hasil

Berikut adalah contoh dari hasil deteksi SSD MobileNet v1 dari TensorFlow Hub.

anjing

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:

keluaran deteksi

Cobalah sederhana alat CLI demo untuk ObjectDetector model dan uji sendiri data Anda.

Persyaratan kompatibilitas model

The ObjectDetector API mengharapkan model TFLite dengan wajib TFLite Model Metadata . Lihat contoh menciptakan metadata untuk detektor objek menggunakan TensorFlow Lite Metadata Penulis API .

Model pendeteksi objek yang kompatibel harus memenuhi persyaratan berikut:

  • Tensor gambar masukan: (kTfLiteUInt8/kTfLiteFloat32)

    • input gambar dari ukuran [batch x height x width x channels] .
    • bets inferensi tidak didukung ( batch diperlukan untuk menjadi 1).
    • hanya input RGB yang didukung ( channels diperlukan untuk menjadi 3).
    • jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
  • Tensor keluaran harus menjadi 4 output dari DetectionPostProcess op, yaitu:

    • Lokasi tensor (kTfLiteFloat32)

      • tensor ukuran [1 x num_results x 4] , array dalam mewakili kotak bounding dalam bentuk [atas, kiri, kanan, bawah].

      • BoundingBoxProperties ini harus melekat pada metadata dan harus menentukan type=BOUNDARIES dan `coordinate_type = RASIO.

    • Tensor kelas (kTfLiteFloat32)

      • tensor ukuran [1 x num_results] , setiap nilai yang mewakili indeks integer dari sebuah 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 . The AssociatedFile seperti pertama (jika ada) digunakan untuk mengisi class_name bidang hasil. The display_name bidang diisi dari AssociatedFile (jika ada) yang lokal sesuai dengan display_names_locale bidang ObjectDetectorOptions digunakan pada waktu penciptaan ( "en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya index bidang hasilnya akan diisi.

    • Skor tensor (kTfLiteFloat32)

      • tensor ukuran [1 x num_results] , setiap nilai yang mewakili nilai dari objek yang terdeteksi.
    • Jumlah tensor deteksi (kTfLiteFloat32)

      • NUM_RESULTS bilangan bulat sebagai tensor ukuran [1] .