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

Integrasikan pengklasifikasi gambar

Klasifikasi gambar adalah penggunaan umum dari pembelajaran mesin untuk mengidentifikasi apa yang diwakili oleh gambar. Misalnya, kita mungkin ingin mengetahui jenis hewan apa yang muncul dalam gambar tertentu. Tugas memprediksi apa gambar mewakili disebut klasifikasi citra. Pengklasifikasi gambar dilatih untuk mengenali berbagai kelas gambar. Misalnya, seorang model mungkin dilatih untuk mengenali foto yang mewakili tiga jenis hewan yang berbeda: kelinci, hamster, dan anjing. Lihat pengenalan klasifikasi citra untuk informasi lebih lanjut tentang pengklasifikasi gambar.

Gunakan Task Perpustakaan ImageClassifier API untuk menyebarkan Anda pengklasifikasi gambar kustom atau orang pretrained ke dalam aplikasi mobile Anda.

Fitur utama dari ImageClassifier API

  • Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.

  • Wilayah yang diinginkan dari gambar masukan.

  • Beri label lokal peta.

  • Ambang skor untuk menyaring hasil.

  • Hasil klasifikasi top-k.

  • Beri label daftar yang diizinkan dan daftar yang ditolak.

Model pengklasifikasi gambar yang didukung

Model berikut dijamin akan kompatibel dengan ImageClassifier API.

Jalankan inferensi di Java

Lihat Gambar referensi aplikasi Klasifikasi untuk contoh bagaimana menggunakan ImageClassifier 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
ImageClassifierOptions options = ImageClassifierOptions.builder().setMaxResults(1).build();
ImageClassifier imageClassifier = ImageClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Classifications> results = imageClassifier.classify(image);

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

Jalankan inferensi di C++

// Initialization
ImageClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Lihat kode sumber untuk lebih banyak pilihan untuk mengkonfigurasi ImageClassifier .

Contoh hasil

Berikut adalah contoh dari hasil klasifikasi dari classifier burung .

burung gereja

Results:
  Rank #0:
   index       : 671
   score       : 0.91406
   class name  : /m/01bwb9
   display name: Passer domesticus
  Rank #1:
   index       : 670
   score       : 0.00391
   class name  : /m/01bwbt
   display name: Passer montanus
  Rank #2:
   index       : 495
   score       : 0.00391
   class name  : /m/0bwm6m
   display name: Passer italiae

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

Persyaratan kompatibilitas model

The ImageClassifier API mengharapkan model TFLite dengan wajib TFLite Model Metadata . Lihat contoh menciptakan metadata untuk pengklasifikasi gambar dengan menggunakan TensorFlow Lite Metadata Penulis API .

Model pengklasifikasi gambar 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 skor keluaran (kTfLiteUInt8/kTfLiteFloat32)

    • dengan N kelas dan 2 atau 4 dimensi, yaitu [1 x N] atau [1 x 1 x 1 x N]

    • opsional (tetapi disarankan) label peta(s) sebagai AssociatedFile-s dengan jenis TENSOR_AXIS_LABELS, berisi satu label per baris. Lihat contoh file label . The AssociatedFile seperti pertama (jika ada) digunakan untuk mengisi label lapangan (disebut sebagai class_name di C ++) hasil. The display_name bidang diisi dari AssociatedFile (jika ada) yang lokal sesuai dengan display_names_locale bidang ImageClassifierOptions digunakan pada waktu penciptaan ( "en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya index bidang hasilnya akan diisi.