छवियों के लिए सामान्य हस्ताक्षर

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

यह पृष्ठ उन सामान्य हस्ताक्षरों का वर्णन करता है जिन्हें छवि-संबंधित कार्यों के लिए TF1 हब प्रारूप में मॉड्यूल द्वारा कार्यान्वित किया जाना चाहिए। ( TF2 सहेजे गए मॉडल प्रारूप के लिए, समान सहेजे गए मॉडल एपीआई देखें।)

कुछ मॉड्यूल का उपयोग एक से अधिक कार्यों के लिए किया जा सकता है (उदाहरण के लिए, छवि वर्गीकरण मॉड्यूल रास्ते में कुछ सुविधा निष्कर्षण करते हैं)। इसलिए, प्रत्येक मॉड्यूल प्रकाशक द्वारा प्रत्याशित सभी कार्यों के लिए (1) नामांकित हस्ताक्षर प्रदान करता है, और (2) एक डिफ़ॉल्ट हस्ताक्षर output = m(images) अपने निर्दिष्ट प्राथमिक कार्य के लिए।

छवि सुविधा वेक्टर

उपयोग सारांश

एक छवि फीचर वेक्टर एक सघन 1-डी टेंसर है जो संपूर्ण छवि का प्रतिनिधित्व करता है, आमतौर पर उपभोक्ता मॉडल द्वारा वर्गीकरण के लिए। (सीएनएन के मध्यवर्ती सक्रियणों के विपरीत, यह एक स्थानिक ब्रेकडाउन प्रदान नहीं करता है। छवि वर्गीकरण के विपरीत, यह प्रकाशक मॉडल द्वारा सीखे गए वर्गीकरण को छोड़ देता है।)

छवि सुविधा निष्कर्षण के लिए एक मॉड्यूल में एक डिफ़ॉल्ट हस्ताक्षर होता है जो छवियों के एक बैच को फीचर वैक्टर के एक बैच में मैप करता है। इसे इस तरह इस्तेमाल किया जा सकता है:

  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].

यह संबंधित नामित हस्ताक्षर को भी परिभाषित करता है।

हस्ताक्षर विनिर्देश

छवि फीचर वैक्टर निकालने के लिए नामित हस्ताक्षर के रूप में लागू किया गया है

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

इनपुट छवियों के इनपुट के लिए सामान्य सम्मेलन का पालन करता है।

आउटपुट डिक्शनरी में dtype फ्लोट32 और आकार [batch_size, num_features] float32 "default" आउटपुट होता है। batch_size इनपुट के समान है, लेकिन ग्राफ़ निर्माण समय पर ज्ञात नहीं है। num_features एक ज्ञात, मॉड्यूल-विशिष्ट स्थिरांक है जो इनपुट आकार से स्वतंत्र है।

ये फीचर वैक्टर एक साधारण फीड-फॉरवर्ड क्लासिफायरियर के साथ वर्गीकरण के लिए उपयोग करने योग्य होते हैं (जैसे छवि वर्गीकरण के लिए एक विशिष्ट CNN में सबसे ऊपरी दृढ़ परत से पूल की गई सुविधाएँ)।

ड्रॉपआउट को आउटपुट सुविधाओं (या नहीं) पर लागू करना मॉड्यूल उपभोक्ता पर छोड़ दिया जाना चाहिए। मॉड्यूल को वास्तविक आउटपुट पर ड्रॉपआउट नहीं करना चाहिए (भले ही वह अन्य स्थानों पर आंतरिक रूप से ड्रॉपआउट का उपयोग करता हो)।

आउटपुट डिक्शनरी आगे के आउटपुट प्रदान कर सकती है, उदाहरण के लिए, मॉड्यूल के अंदर छिपी हुई परतों की सक्रियता। उनकी कुंजियाँ और मान मॉड्यूल-निर्भर हैं। एक आर्किटेक्चर नाम के साथ आर्किटेक्चर-निर्भर कुंजी को उपसर्ग करने की अनुशंसा की जाती है (उदाहरण के लिए, इंटरमीडिएट परत "InceptionV3/Mixed_5c" को उच्चतम दृढ़ परत "InceptionV2/Mixed_5c" इंसेप्शनवी2/मिश्रित_5सी" के साथ भ्रमित करने से बचने के लिए)।

छवि वर्गीकरण

उपयोग सारांश

छवि वर्गीकरण मॉड्यूल प्रकाशक द्वारा चयनित वर्गीकरण की कक्षाओं में सदस्यता के लिए एक छवि के पिक्सेल को रैखिक स्कोर (लॉग) में मैप करता है। यह उपभोक्ताओं को प्रकाशक मॉड्यूल द्वारा सीखे गए विशेष वर्गीकरण से निष्कर्ष निकालने की अनुमति देता है, न कि केवल इसकी अंतर्निहित विशेषताएं (cf. इमेज फीचर वेक्टर )।

छवि सुविधा निष्कर्षण के लिए एक मॉड्यूल में एक डिफ़ॉल्ट हस्ताक्षर होता है जो छवियों के बैच को लॉग के बैच में मैप करता है। इसे इस तरह इस्तेमाल किया जा सकता है:

  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].

यह संबंधित नामित हस्ताक्षर को भी परिभाषित करता है।

हस्ताक्षर विनिर्देश

छवि फीचर वैक्टर निकालने के लिए नामित हस्ताक्षर के रूप में लागू किया गया है

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

इनपुट छवियों के इनपुट के लिए सामान्य सम्मेलन का पालन करता है।

आउटपुट डिक्शनरी में dtype फ्लोट32 और आकार [batch_size, num_classes] float32 "default" आउटपुट होता है। batch_size इनपुट के समान है, लेकिन ग्राफ़ निर्माण समय पर ज्ञात नहीं है। num_classes वर्गीकरण में वर्गों की संख्या है, जो इनपुट आकार से स्वतंत्र एक ज्ञात स्थिरांक है।

outputs["default"][i, c] सूचकांक c के साथ कक्षा में उदाहरण i की सदस्यता की भविष्यवाणी करने वाला स्कोर प्राप्त करता है।

यह अंतर्निहित वर्गीकरण पर निर्भर करता है कि क्या ये स्कोर सॉफ्टमैक्स (पारस्परिक रूप से अनन्य वर्गों के लिए), सिग्मॉइड (ऑर्थोगोनल कक्षाओं के लिए), या कुछ और के साथ उपयोग किए जाने के लिए हैं। मॉड्यूल प्रलेखन को इसका वर्णन करना चाहिए, और वर्ग सूचकांकों की परिभाषा का संदर्भ लेना चाहिए।

आउटपुट डिक्शनरी आगे के आउटपुट प्रदान कर सकती है, उदाहरण के लिए, मॉड्यूल के अंदर छिपी हुई परतों की सक्रियता। उनकी कुंजियाँ और मान मॉड्यूल-निर्भर हैं। एक आर्किटेक्चर नाम के साथ आर्किटेक्चर-निर्भर कुंजी को उपसर्ग करने की अनुशंसा की जाती है (उदाहरण के लिए, इंटरमीडिएट परत "InceptionV3/Mixed_5c" को उच्चतम दृढ़ परत "InceptionV2/Mixed_5c" इंसेप्शनवी2/मिश्रित_5सी" के साथ भ्रमित करने से बचने के लिए)।

छवि इनपुट

यह सभी प्रकार के छवि मॉड्यूल और छवि हस्ताक्षरों के लिए सामान्य है।

एक हस्ताक्षर जो छवियों के एक बैच को इनपुट के रूप में लेता है, उन्हें डीटाइप फ्लोट 32 और आकार [ float32 [batch_size, height, width, 3] के घने 4-डी टेंसर के रूप में स्वीकार करता है, जिनके तत्व पिक्सेल के आरजीबी रंग मान होते हैं [0, 1] . यह आपको tf.image.decode_*() के बाद tf.image.convert_image_dtype(..., tf.float32) से मिलता है।

छवियों के बिल्कुल एक (या एक प्रमुख) इनपुट वाला एक मॉड्यूल इस इनपुट के लिए "images" नाम का उपयोग करता है।

मॉड्यूल किसी भी batch_size को स्वीकार करता है, और तदनुसार TensorInfo.tensor_shape के पहले आयाम को "अज्ञात" पर सेट करता है। अंतिम आयाम आरजीबी चैनलों के नंबर 3 पर तय किया गया है। height और width आयाम इनपुट छवियों के अपेक्षित आकार के लिए तय किए गए हैं। (भविष्य का काम पूरी तरह से दृढ़ मॉड्यूल के लिए उस प्रतिबंध को हटा सकता है।)

मॉड्यूल के उपभोक्ताओं को सीधे आकार का निरीक्षण नहीं करना चाहिए, लेकिन मॉड्यूल या मॉड्यूल स्पेक पर हब.get_expected_image_size() पर कॉल करके आकार की जानकारी प्राप्त करें, और तदनुसार इनपुट छवियों का आकार बदलने की उम्मीद है (आमतौर पर बैचिंग से पहले/दौरान)।

सादगी के लिए, TF-हब मॉड्यूल Tensors के channel_last (या NHWC ) लेआउट का उपयोग करते channels_last , और जरूरत पड़ने पर इसे channels_first के ग्राफ़ अनुकूलक पर छोड़ देते हैं ताकि channel_first (या NCHW ) में फिर से लिखा जा सके। यह डिफ़ॉल्ट रूप से TensorFlow संस्करण 1.7 के बाद से कर रहा है।