Bu sayfada, görüntüyle ilgili görevlere yönelik TF2 SavedModels'in Yeniden Kullanılabilir SavedModel API'sini nasıl uygulaması gerektiği açıklanmaktadır. (Bu, artık kullanımdan kaldırılan TF1 Hub biçimi için Görüntüler için Ortak İmzaların yerini alır.)
Görüntü Özellik Vektörü
Kullanım özeti
Bir görüntü özellik vektörü, tipik olarak tüketici modelinde basit bir ileri besleme sınıflandırıcı tarafından kullanılmak üzere, bir görüntünün tamamını temsil eden yoğun bir 1 boyutlu tensördür. (Klasik CNN'ler açısından bu, mekansal kapsam havuza alındıktan veya düzleştirildikten sonraki, ancak sınıflandırma yapılmadan önceki darboğaz değeridir; bunun için aşağıdaki görüntü sınıflandırmasına bakın.)
Görüntü özelliği çıkarma için Yeniden Kullanılabilir SavedModel'in kök nesnesinde, bir grup görüntüyü bir grup özellik vektörüne eşleyen bir __call__
yöntemi vardır. Şu şekilde kullanılabilir:
obj = hub.load("path/to/model") # That's tf.saved_model.load() after download.
images = ... # A batch of images with shape [batch_size, height, width, 3].
features = obj(images) # A batch with shape [batch_size, num_features].
Keras'ta eşdeğeri
features = hub.KerasLayer("path/to/model")(images)
Giriş, görüntülerin girişine ilişkin genel kurallara uygundur. Model belgeleri, girişin height
ve width
için izin verilen aralığı belirtir.
Çıktı, dtype float32
ve şeklin [batch_size, num_features]
tek bir tensörüdür. batch_size
giriştekiyle aynıdır. num_features
giriş boyutundan bağımsız, modüle özgü bir sabittir.
API ayrıntıları
Yeniden Kullanılabilir SavedModel API'si aynı zamanda obj.variables
bir listesini de sağlar (örneğin, istekli bir şekilde yüklenmediğinde başlatma için).
İnce ayarı destekleyen bir model, obj.trainable_variables
listesini sağlar. Eğitim modunda yürütmek için training=True
komutunu geçmeniz gerekebilir (örneğin, bırakma için). Bazı modeller isteğe bağlı bağımsız değişkenlerin hiperparametreleri geçersiz kılmasına izin verir (örn. bırakma oranı; model belgelerinde açıklanacaktır). Model ayrıca obj.regularization_losses
listesini de sağlayabilir. Ayrıntılar için Yeniden Kullanılabilir SavedModel API'sine bakın.
Keras'ta bu durum hub.KerasLayer
tarafından halledilir: ince ayarı etkinleştirmek için trainable=True
ile başlatın ve (hparam geçersiz kılmalarının geçerli olduğu nadir durumlarda) arguments=dict(some_hparam=some_value, ...))
ile başlatın. .
Notlar
Çıkış özelliklerine bırakma uygulanması (ya da uygulanmaması) model tüketicisine bırakılmalıdır. SavedModel'in kendisi gerçek çıktılarda bırakma işlemi yapmamalıdır (başka yerlerde dahili olarak bırakma kullansa bile).
Örnekler
Görüntü özellik vektörleri için yeniden kullanılabilir SavedModels,
- Colab eğitimi Görüntü Sınıflandırıcının Yeniden Eğitimi ,
Görüntü Sınıflandırması
Kullanım özeti
Görüntü sınıflandırması, bir görüntünün piksellerini , modül yayıncısı tarafından seçilen bir taksonominin sınıflarına üyelik için doğrusal puanlarla (logitler) eşleştirir. Bu, model tüketicilerinin, yayıncı modülü tarafından öğrenilen belirli sınıflandırmadan sonuçlar çıkarmasına olanak tanır. (Yeni bir sınıf kümesiyle görüntü sınıflandırması için, Görüntü Özellik Vektörü modelinin yeni bir sınıflandırıcıyla yeniden kullanılması yaygındır.)
Görüntü sınıflandırmasına yönelik Yeniden Kullanılabilir SavedModel, kök nesne üzerinde, bir görüntü kümesini bir logit kümesiyle eşleyen bir __call__
yöntemine sahiptir. Şu şekilde kullanılabilir:
obj = hub.load("path/to/model") # That's tf.saved_model.load() after download.
images = ... # A batch of images with shape [batch_size, height, width, 3].
logits = obj(images) # A batch with shape [batch_size, num_classes].
Keras'ta eşdeğeri
logits = hub.KerasLayer("path/to/model")(images)
Giriş, görüntülerin girişine ilişkin genel kurallara uygundur. Model belgeleri, girişin height
ve width
için izin verilen aralığı belirtir.
Çıkış logits
dtype float32
ve şeklin [batch_size, num_classes]
tek bir tensörüdür. batch_size
giriştekiyle aynıdır. num_classes
modele özgü bir sabit olan sınıflandırmadaki sınıfların sayısıdır.
logits[i, c]
değeri, örnek i
indeksli sınıfa üyeliğini tahmin eden bir puandır c
Bu puanların softmax (birbirini dışlayan sınıflar için), sigmoid (ortogonal sınıflar için) veya başka bir şeyle mi kullanılacağı, temel sınıflandırmaya bağlıdır. Modül dokümantasyonu bunu açıklamalı ve sınıf indekslerinin tanımına atıfta bulunmalıdır.
API ayrıntıları
Yeniden Kullanılabilir SavedModel API'si aynı zamanda obj.variables
bir listesini de sağlar (örneğin, istekli bir şekilde yüklenmediğinde başlatma için).
İnce ayarı destekleyen bir model, obj.trainable_variables
listesini sağlar. Eğitim modunda yürütmek için (örneğin, bırakma için) training=True
geçmeniz gerekebilir. Bazı modeller isteğe bağlı bağımsız değişkenlerin hiperparametreleri geçersiz kılmasına izin verir (örn. bırakma oranı; model belgelerinde açıklanacaktır). Model aynı zamanda obj.regularization_losses
listesini de sağlayabilir. Ayrıntılar için Yeniden Kullanılabilir SavedModel API'sine bakın.
Keras'ta bu durum hub.KerasLayer
tarafından halledilir: ince ayarı etkinleştirmek için trainable=True
ile başlatın ve (hparam geçersiz kılmalarının geçerli olduğu nadir durumlarda) arguments=dict(some_hparam=some_value, ...))
ile başlatın. .
Görüntü girişi
Bu, tüm görüntü modellerinde ortaktır.
Bir dizi görüntüyü girdi olarak alan bir model, bunları, öğeleri [0, 1] aralığına normalleştirilmiş piksellerin RGB renk değerleri olan dtype float32
ve şeklin [batch_size, height, width, 3]
yoğun bir 4 boyutlu tensörü olarak kabul eder. . Bu tf.image.decode_*()
ve ardından tf.image.convert_image_dtype(..., tf.float32)
öğesinden elde ettiğiniz şeydir.
Model herhangi bir batch_size
kabul eder. Model dokümantasyonu height
ve width
için izin verilen aralığı belirtir. Son boyut 3 RGB kanalına sabitlenmiştir.
Modellerin baştan sona channels_last
(veya NHWC
) düzenini kullanması ve gerekirse channels_first
(veya NCHW
) olarak yeniden yazılmasını TensorFlow'un grafik iyileştiricisine bırakması önerilir.