यह पृष्ठ वर्णन करता है कि छवि से संबंधित कार्यों के लिए TF2 सहेजे गए मॉडल को पुन: प्रयोज्य सहेजे गए मॉडल API को कैसे लागू करना चाहिए। (यह अब-बहिष्कृत TF1 हब प्रारूप के लिए छवियों के लिए सामान्य हस्ताक्षर को प्रतिस्थापित करता है।)
छवि फ़ीचर वेक्टर
उपयोग सारांश
एक छवि सुविधा वेक्टर एक सघन 1-डी टेंसर है जो पूरी छवि का प्रतिनिधित्व करता है, आमतौर पर उपभोक्ता मॉडल में एक साधारण फीड-फॉरवर्ड क्लासिफायर द्वारा उपयोग के लिए। (क्लासिक सीएनएन के संदर्भ में, स्थानिक सीमा को पूल या चपटा करने के बाद यह बाधा मूल्य है, लेकिन वर्गीकरण किए जाने से पहले, उसके लिए, नीचे छवि वर्गीकरण देखें।)
छवि सुविधा निष्कर्षण के लिए एक पुन: प्रयोज्य सहेजे गए मॉडल में रूट ऑब्जेक्ट पर __call__
विधि है जो छवियों के बैच को फीचर वैक्टर के बैच में मैप करती है। इसे इस तरह इस्तेमाल किया जा सकता है:
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].
केरस में, तुल्य है
features = hub.KerasLayer("path/to/model")(images)
इनपुट छवियों के इनपुट के लिए सामान्य परंपरा का अनुसरण करता है। मॉडल प्रलेखन इनपुट की height
और width
के लिए अनुमेय सीमा निर्दिष्ट करता है।
आउटपुट dtype float32
और आकार [batch_size, num_features]
का एकल टेंसर है। batch_size
इनपुट के समान ही है। num_features
एक मॉड्यूल-विशिष्ट स्थिरांक है जो इनपुट आकार से स्वतंत्र है।
एपीआई विवरण
पुन: प्रयोज्य सहेजे गए मॉडल एपीआई obj.variables obj.variables
एक सूची भी प्रदान करता है (उदाहरण के लिए, प्रारंभ करने के लिए उत्सुकता से लोड नहीं होने पर)।
एक मॉडल जो फ़ाइन-ट्यूनिंग का समर्थन करता है, obj.trainable_variables
की एक सूची प्रदान करता है। इसके लिए आपको ट्रेनिंग पास करने की आवश्यकता हो सकती है training=True
(उदाहरण के लिए, ड्रॉपआउट के लिए)। कुछ मॉडल वैकल्पिक तर्कों को हाइपरपैरामीटर को ओवरराइड करने की अनुमति देते हैं (उदाहरण के लिए, ड्रॉपआउट दर; मॉडल दस्तावेज़ीकरण में वर्णित किया जाना है)। मॉडल obj.regularization_losses
की एक सूची भी प्रदान कर सकता है। विवरण के लिए, पुन: प्रयोज्य सहेजे गए मॉडल API देखें।
केरस में, हब द्वारा इसका ध्यान रखा जाता है। hub.KerasLayer
: इसे ठीक-ट्यूनिंग को सक्षम करने के लिए ट्रेन करने trainable=True
के साथ प्रारंभ करें, और (दुर्लभ मामले में जो एचपरम ओवरराइड लागू होता है) arguments=dict(some_hparam=some_value, ...))
.
टिप्पणियाँ
आउटपुट सुविधाओं के लिए ड्रॉपआउट लागू करना (या नहीं) मॉडल उपभोक्ता पर छोड़ दिया जाना चाहिए। सहेजे गए मॉडल को वास्तविक आउटपुट पर ड्रॉपआउट नहीं करना चाहिए (भले ही वह अन्य स्थानों पर आंतरिक रूप से ड्रॉपआउट का उपयोग करता हो)।
उदाहरण
छवि फीचर वैक्टर के लिए पुन: प्रयोज्य सहेजे गए मॉडल का उपयोग किया जाता है
- Colab ट्यूटोरियल इमेज क्लासिफ़ायर को फिर से प्रशिक्षित करना ,
- कमांड-लाइन टूल make_image_classifier ।
छवि वर्गीकरण
उपयोग सारांश
छवि वर्गीकरण मॉड्यूल प्रकाशक द्वारा चयनित वर्गीकरण की कक्षाओं में सदस्यता के लिए एक छवि के पिक्सेल को रैखिक स्कोर (लॉग) में मैप करता है। यह मॉडल उपभोक्ताओं को प्रकाशक मॉड्यूल द्वारा सीखे गए विशेष वर्गीकरण से निष्कर्ष निकालने की अनुमति देता है। (कक्षाओं के एक नए सेट के साथ छवि वर्गीकरण के लिए, इसके बजाय एक नए क्लासिफायरियर के साथ एक छवि फ़ीचर वेक्टर मॉडल का पुन: उपयोग करना आम है।)
छवि वर्गीकरण के लिए पुन: प्रयोज्य सहेजे गए मॉडल में रूट ऑब्जेक्ट पर __call__
विधि है जो छवियों के बैच को लॉग के बैच में मैप करती है। इसे इस तरह इस्तेमाल किया जा सकता है:
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].
केरस में, तुल्य है
logits = hub.KerasLayer("path/to/model")(images)
इनपुट छवियों के इनपुट के लिए सामान्य परंपरा का अनुसरण करता है। मॉडल प्रलेखन इनपुट की height
और width
के लिए अनुमेय सीमा निर्दिष्ट करता है।
आउटपुट logits
dtype float32
और आकार [batch_size, num_classes]
का एकल टेंसर है। batch_size
इनपुट के समान ही है। num_classes
वर्गीकरण में कक्षाओं की संख्या है, जो एक मॉडल-विशिष्ट स्थिरांक है।
मान logits[i, c]
एक अंक है जो सूचकांक c
के साथ कक्षा में उदाहरण i
की सदस्यता की भविष्यवाणी करता है।
यह अंतर्निहित वर्गीकरण पर निर्भर करता है कि क्या ये स्कोर सॉफ्टमैक्स (पारस्परिक रूप से अनन्य वर्गों के लिए), सिग्मॉइड (ऑर्थोगोनल कक्षाओं के लिए), या कुछ और के साथ उपयोग किए जाने के लिए हैं। मॉड्यूल प्रलेखन को इसका वर्णन करना चाहिए, और वर्ग सूचकांकों की परिभाषा का संदर्भ लेना चाहिए।
एपीआई विवरण
पुन: प्रयोज्य सहेजे गए मॉडल एपीआई obj.variables obj.variables
एक सूची भी प्रदान करता है (उदाहरण के लिए, प्रारंभ करने के लिए उत्सुकता से लोड नहीं होने पर)।
एक मॉडल जो फ़ाइन-ट्यूनिंग का समर्थन करता है, obj.trainable_variables
की एक सूची प्रदान करता है। इसके लिए आपको ट्रेनिंग पास करने की आवश्यकता हो सकती है training=True
(उदाहरण के लिए, ड्रॉपआउट के लिए)। कुछ मॉडल वैकल्पिक तर्कों को हाइपरपैरामीटर को ओवरराइड करने की अनुमति देते हैं (उदाहरण के लिए, ड्रॉपआउट दर; मॉडल दस्तावेज़ीकरण में वर्णित किया जाना है)। मॉडल obj.regularization_losses
की एक सूची भी प्रदान कर सकता है। विवरण के लिए, पुन: प्रयोज्य सहेजे गए मॉडल API देखें।
केरस में, हब द्वारा इसका ध्यान रखा जाता है। hub.KerasLayer
: इसे ठीक-ट्यूनिंग को सक्षम करने के लिए ट्रेन करने trainable=True
के साथ प्रारंभ करें, और (दुर्लभ मामले में जो एचपरम ओवरराइड लागू होता है) arguments=dict(some_hparam=some_value, ...))
.
छवि इनपुट
यह सभी प्रकार के छवि मॉडल के लिए सामान्य है।
एक मॉडल जो इनपुट के रूप में छवियों का एक बैच लेता है, उन्हें डीटाइप फ्लोट32 और आकार [ float32
[batch_size, height, width, 3]
के घने 4-डी टेंसर के रूप में स्वीकार करता है, जिनके तत्व आरजीबी रंग के पिक्सेल के मान होते हैं जो कि सीमा के लिए सामान्यीकृत होते हैं [0, 1] . यह आपको tf.image.decode_*()
इसके बाद tf.image.convert_image_dtype(..., tf.float32)
से मिलता है।
मॉडल किसी भी batch_size
को स्वीकार करता है। मॉडल प्रलेखन height
और width
के लिए अनुमेय सीमा निर्दिष्ट करता है। अंतिम आयाम 3 आरजीबी चैनलों के लिए तय किया गया है।
यह अनुशंसा की जाती है कि मॉडल पूरे Tensors के NHWC
channels_last
लेआउट का उपयोग करें, और यदि आवश्यक हो तो NCHW
channels_first
पर फिर से लिखने के लिए TensorFlow के ग्राफ़ ऑप्टिमाइज़र पर छोड़ दें।