Tanda Tangan Umum untuk Gambar

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Halaman ini menjelaskan tanda tangan umum yang harus diterapkan oleh modul dalam format TF1 Hub untuk tugas terkait gambar. (Untuk format TF2 SavedModel , lihat analog SavedModel API .)

Beberapa modul dapat digunakan untuk lebih dari satu tugas (misalnya, modul klasifikasi gambar cenderung melakukan beberapa ekstraksi fitur dalam perjalanan). Oleh karena itu, setiap modul menyediakan (1) tanda tangan bernama untuk semua tugas yang diantisipasi oleh penerbit, dan (2) output = m(images) untuk tugas utama yang ditentukan.

Gambar Fitur Vektor

Ringkasan penggunaan

Vektor fitur gambar adalah tensor 1-D padat yang mewakili seluruh gambar, biasanya untuk klasifikasi oleh model konsumen. (Tidak seperti aktivasi antara CNN, itu tidak menawarkan perincian spasial. Tidak seperti klasifikasi gambar , itu membuang klasifikasi yang dipelajari oleh model penerbit.)

Modul untuk ekstraksi fitur gambar memiliki tanda tangan default yang memetakan kumpulan gambar ke kumpulan vektor fitur. Ini dapat digunakan seperti:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  features = module(images)   # A batch with shape [batch_size, num_features].

Itu juga mendefinisikan tanda tangan bernama yang sesuai.

Spesifikasi tanda tangan

Tanda tangan bernama untuk mengekstraksi vektor fitur gambar dipanggil sebagai

  outputs = module(dict(images=images), signature="image_feature_vector",
                   as_dict=True)
  features = outputs["default"]

Input mengikuti konvensi umum untuk input gambar .

Kamus keluaran berisi keluaran "default" dari dtype float32 dan bentuk [batch_size, num_features] . batch_size sama dengan input, tetapi tidak diketahui pada waktu pembuatan grafik. num_features adalah konstanta khusus modul yang diketahui tidak bergantung pada ukuran input.

Vektor fitur ini dimaksudkan agar dapat digunakan untuk klasifikasi dengan pengklasifikasi feed-forward sederhana (seperti fitur gabungan dari lapisan konvolusi paling atas dalam CNN tipikal untuk klasifikasi gambar).

Menerapkan putus sekolah ke fitur keluaran (atau tidak) harus diserahkan kepada konsumen modul. Modul itu sendiri tidak boleh melakukan dropout pada output aktual (bahkan jika menggunakan dropout secara internal di tempat lain).

Kamus keluaran dapat memberikan keluaran lebih lanjut, misalnya, aktivasi lapisan tersembunyi di dalam modul. Kunci dan nilainya bergantung pada modul. Direkomendasikan untuk memberi awalan kunci yang bergantung pada arsitektur dengan nama arsitektur (misalnya, untuk menghindari kebingungan antara lapisan perantara "InceptionV3/Mixed_5c" dengan lapisan konvolusi paling atas "InceptionV2/Mixed_5c" ).

Klasifikasi Gambar

Ringkasan penggunaan

Klasifikasi gambar memetakan piksel gambar ke skor linier (logit) untuk keanggotaan dalam kelas taksonomi yang dipilih oleh penerbit modul . Hal ini memungkinkan konsumen untuk menarik kesimpulan dari klasifikasi tertentu yang dipelajari oleh modul penerbit, dan bukan hanya fitur dasarnya (lih. Gambar Fitur Vektor ).

Modul untuk ekstraksi fitur gambar memiliki tanda tangan default yang memetakan kumpulan gambar ke kumpulan log. Ini dapat digunakan seperti:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  logits = module(images)   # A batch with shape [batch_size, num_classes].

Itu juga mendefinisikan tanda tangan bernama yang sesuai.

Spesifikasi tanda tangan

Tanda tangan bernama untuk mengekstraksi vektor fitur gambar dipanggil sebagai

  outputs = module(dict(images=images), signature="image_classification",
                   as_dict=True)
  logits = outputs["default"]

Input mengikuti konvensi umum untuk input gambar .

Kamus keluaran berisi keluaran "default" dari dtype float32 dan bentuk [batch_size, num_classes] . batch_size sama dengan input, tetapi tidak diketahui pada waktu pembuatan grafik. num_classes adalah jumlah kelas dalam klasifikasi, yang merupakan konstanta independen yang diketahui dari ukuran input.

Mengevaluasi outputs["default"][i, c] menghasilkan skor yang memprediksi keanggotaan contoh i di kelas dengan indeks c .

Itu tergantung pada klasifikasi yang mendasari apakah skor ini dimaksudkan untuk digunakan dengan softmax (untuk kelas yang saling eksklusif), sigmoid (untuk kelas ortogonal), atau yang lainnya. Dokumentasi modul harus menjelaskan ini, dan merujuk ke definisi indeks kelas.

Kamus keluaran dapat memberikan keluaran lebih lanjut, misalnya, aktivasi lapisan tersembunyi di dalam modul. Kunci dan nilainya bergantung pada modul. Direkomendasikan untuk memberi awalan kunci yang bergantung pada arsitektur dengan nama arsitektur (misalnya, untuk menghindari kebingungan antara lapisan perantara "InceptionV3/Mixed_5c" dengan lapisan konvolusi paling atas "InceptionV2/Mixed_5c" ).

masukan gambar

Ini umum untuk semua jenis modul gambar dan tanda tangan gambar.

Tanda tangan yang mengambil sekumpulan gambar sebagai input menerimanya sebagai tensor 4-D padat dari dtype float32 dan bentuk [batch_size, height, width, 3] yang elemennya adalah nilai warna RGB piksel yang dinormalisasi ke kisaran [0, 1] . Inilah yang Anda dapatkan dari tf.image.decode_*() diikuti oleh tf.image.convert_image_dtype(..., tf.float32) .

Modul dengan tepat satu (atau satu prinsip) masukan gambar menggunakan nama "images" untuk masukan ini.

Modul menerima batch_size apa pun, dan dengan demikian menyetel dimensi pertama TensorInfo.tensor_shape ke "tidak diketahui". Dimensi terakhir ditetapkan ke nomor 3 saluran RGB. Dimensi height dan width ditetapkan ke ukuran yang diharapkan dari gambar input. (Pekerjaan di masa depan dapat menghapus batasan itu untuk modul yang sepenuhnya konvolusi.)

Konsumen modul tidak boleh memeriksa bentuknya secara langsung, tetapi memperoleh informasi ukuran dengan memanggil hub.get_expected_image_size() pada spesifikasi modul atau modul, dan diharapkan mengubah ukuran gambar input yang sesuai (biasanya sebelum/selama batching).

Untuk mempermudah, modul TF-Hub menggunakan tata letak channels_last (atau NHWC ) dari Tensor, dan menyerahkannya kepada pengoptimal grafik TensorFlow untuk menulis ulang ke channels_first (atau NCHW ) jika diperlukan. Itu telah dilakukan secara default sejak TensorFlow versi 1.7.