এই পৃষ্ঠাটি সাধারণ স্বাক্ষরগুলি বর্ণনা করে যা চিত্র-সম্পর্কিত কাজের জন্য TF1 হাব বিন্যাসে মডিউল দ্বারা প্রয়োগ করা উচিত। ( TF2 SavedModel ফরম্যাটের জন্য, সাদৃশ্যপূর্ণ SavedModel API দেখুন।)
কিছু মডিউল একাধিক কাজের জন্য ব্যবহার করা যেতে পারে (যেমন, ছবির শ্রেণীবিভাগ মডিউলগুলি পথে কিছু বৈশিষ্ট্য নিষ্কাশন করতে থাকে)। অতএব, প্রতিটি মডিউল প্রকাশকের দ্বারা প্রত্যাশিত সমস্ত কাজের জন্য (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 float32
এবং আকৃতি [batch_size, num_features]
এর একটি "default"
আউটপুট রয়েছে। batch_size
ইনপুটের মতোই, কিন্তু গ্রাফ নির্মাণের সময় জানা যায় না। num_features
একটি পরিচিত, মডিউল-নির্দিষ্ট ধ্রুবক ইনপুট আকারের থেকে স্বাধীন।
এই বৈশিষ্ট্য ভেক্টরগুলিকে একটি সাধারণ ফিড-ফরোয়ার্ড শ্রেণীবিভাগের সাথে শ্রেণিবিন্যাসের জন্য ব্যবহারযোগ্য বোঝানো হয়েছে (যেমন চিত্র শ্রেণিবিন্যাসের জন্য একটি সাধারণ CNN-এ শীর্ষস্থানীয় কনভোল্যুশনাল স্তর থেকে পুল করা বৈশিষ্ট্যগুলি)।
আউটপুট বৈশিষ্ট্যগুলিতে ড্রপআউট প্রয়োগ করা (বা না) মডিউল গ্রাহকের উপর ছেড়ে দেওয়া উচিত। মডিউল নিজেই প্রকৃত আউটপুটগুলিতে ড্রপআউট সঞ্চালন করবে না (এমনকি যদি এটি অন্য জায়গায় অভ্যন্তরীণভাবে ড্রপআউট ব্যবহার করে)।
আউটপুট অভিধান আরও আউটপুট প্রদান করতে পারে, উদাহরণস্বরূপ, মডিউলের ভিতরে লুকানো স্তরগুলির সক্রিয়করণ। তাদের কী এবং মানগুলি মডিউল-নির্ভর। আর্কিটেকচারের নামের সাথে আর্কিটেকচার-নির্ভর কীগুলিকে উপসর্গ করার পরামর্শ দেওয়া হয় (যেমন, মধ্যবর্তী স্তর "InceptionV3/Mixed_5c"
কে শীর্ষস্থানীয় বিভ্রান্তিকর স্তর "InceptionV2/Mixed_5c"
এর সাথে বিভ্রান্ত না করার জন্য)।
ছবির শ্রেণীবিভাগ
ব্যবহারের সারাংশ
ইমেজ শ্রেণীবিভাগ মডিউল প্রকাশক দ্বারা নির্বাচিত শ্রেণীবিভাগের শ্রেণীতে সদস্যতার জন্য রৈখিক স্কোর (লগিট) এর সাথে একটি চিত্রের পিক্সেল ম্যাপ করে। এটি ভোক্তাদেরকে প্রকাশক মডিউল দ্বারা শেখা নির্দিষ্ট শ্রেণীবিভাগ থেকে সিদ্ধান্তে আঁকতে অনুমতি দেয়, এবং শুধুমাত্র এর অন্তর্নিহিত বৈশিষ্ট্যগুলি নয় (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 float32
এবং আকৃতি [batch_size, num_classes]
এর একটি "default"
আউটপুট রয়েছে। batch_size
ইনপুটের মতোই, কিন্তু গ্রাফ নির্মাণের সময় জানা যায় না। num_classes
হল শ্রেণীবিভাগের ক্লাসের সংখ্যা, যা ইনপুট আকারের থেকে স্বতন্ত্র একটি পরিচিত ধ্রুবক।
outputs["default"][i, c]
সূচক c
সহ ক্লাসে i
উদাহরণের সদস্যতার পূর্বাভাস দিয়ে একটি স্কোর দেয়।
এটি অন্তর্নিহিত শ্রেণিবিন্যাসের উপর নির্ভর করে যে এই স্কোরগুলি সফটম্যাক্স (পারস্পরিক একচেটিয়া ক্লাসের জন্য), সিগময়েড (অর্থোগোনাল ক্লাসের জন্য), বা অন্য কিছুর সাথে ব্যবহার করা হবে কিনা। মডিউল ডকুমেন্টেশনের এটি বর্ণনা করা উচিত এবং ক্লাস সূচকগুলির একটি সংজ্ঞা উল্লেখ করা উচিত।
আউটপুট অভিধান আরও আউটপুট প্রদান করতে পারে, উদাহরণস্বরূপ, মডিউলের ভিতরে লুকানো স্তরগুলির সক্রিয়করণ। তাদের কী এবং মানগুলি মডিউল-নির্ভর। আর্কিটেকচারের নামের সাথে আর্কিটেকচার-নির্ভর কীগুলিকে উপসর্গ করার পরামর্শ দেওয়া হয় (যেমন, মধ্যবর্তী স্তর "InceptionV3/Mixed_5c"
কে শীর্ষস্থানীয় বিভ্রান্তিকর স্তর "InceptionV2/Mixed_5c"
এর সাথে বিভ্রান্ত না করার জন্য)।
ইমেজ ইনপুট
এটি সব ধরনের ইমেজ মডিউল এবং ইমেজ স্বাক্ষরের জন্য সাধারণ।
একটি স্বাক্ষর যা ইনপুট হিসাবে চিত্রগুলির একটি ব্যাচ নেয় সেগুলিকে dtype float32
এবং আকৃতি [batch_size, height, width, 3]
এর একটি ঘন 4-D টেনসর হিসাবে গ্রহণ করে যার উপাদানগুলি হল RGB রঙের মানগুলি পিক্সেলের পরিসরে স্বাভাবিক করা হয় [0, 1] . এটি আপনি tf.image.decode_*()
এর পরে tf.image.convert_image_dtype(..., tf.float32)
থেকে পাবেন।
ছবির ঠিক একটি (বা একটি প্রধান) ইনপুট সহ একটি মডিউল এই ইনপুটের জন্য "images"
নাম ব্যবহার করে।
মডিউলটি যেকোনো batch_size
গ্রহণ করে এবং একইভাবে TensorInfo.tensor_shape-এর প্রথম মাত্রাকে "অজানা"-এ সেট করে। শেষ মাত্রাটি RGB চ্যানেলের 3
নম্বরে স্থির করা হয়েছে। height
এবং width
মাত্রাগুলি ইনপুট চিত্রগুলির প্রত্যাশিত আকারে স্থির করা হয়েছে৷ (ভবিষ্যত কাজ সম্পূর্ণরূপে বিভ্রান্তিকর মডিউলগুলির জন্য সেই সীমাবদ্ধতাটি সরিয়ে দিতে পারে।)
মডিউলের ভোক্তাদের আকৃতিটি সরাসরি পরিদর্শন করা উচিত নয়, তবে মডিউল বা মডিউল স্পেকটিতে hub.get_expected_image_size() কল করে আকারের তথ্য প্রাপ্ত করা উচিত এবং সেই অনুযায়ী ইনপুট চিত্রের আকার পরিবর্তন করার আশা করা হচ্ছে (সাধারণত ব্যাচিংয়ের আগে/সময়)।
সরলতার জন্য, TF-Hub মডিউলগুলি Tensors-এর channels_last
(বা NHWC
) লেআউট ব্যবহার করে এবং প্রয়োজনে channels_first
(বা NCHW
) এ পুনরায় লেখার জন্য TensorFlow-এর গ্রাফ অপ্টিমাইজারে ছেড়ে দেয়। এটি টেনসরফ্লো সংস্করণ 1.7 থেকে ডিফল্টরূপে এটি করছে।