এই পৃষ্ঠাটি বর্ণনা করে কিভাবে চিত্র-সম্পর্কিত কাজের জন্য TF2 সংরক্ষিত মডেলগুলি পুনরায় ব্যবহারযোগ্য SavedModel 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
একটি মডিউল-নির্দিষ্ট ধ্রুবক ইনপুট আকার থেকে স্বাধীন।
API বিবরণ
পুনঃব্যবহারযোগ্য SavedModel API এছাড়াও obj.variables
গুলির একটি তালিকা প্রদান করে (উদাহরণস্বরূপ, যখন সাগ্রহে লোড না হয় তখন শুরুর জন্য)।
একটি মডেল যা ফাইন-টিউনিং সমর্থন করে obj.trainable_variables
এর একটি তালিকা প্রদান করে। এর জন্য আপনাকে training=True
(যেমন, ড্রপআউটের জন্য)। কিছু মডেল ঐচ্ছিক আর্গুমেন্টকে হাইপারপ্যারামিটারগুলিকে ওভাররাইড করার অনুমতি দেয় (যেমন, ড্রপআউট রেট; মডেল ডকুমেন্টেশনে বর্ণনা করা হয়)। মডেলটি obj.regularization_losses
এর একটি তালিকাও প্রদান করতে পারে। বিশদ বিবরণের জন্য, পুনঃব্যবহারযোগ্য সংরক্ষিত মডেল API দেখুন।
কেরাসে, এটি hub.KerasLayer
দ্বারা যত্ন নেওয়া হয়: সূক্ষ্ম-টিউনিং সক্ষম করার জন্য এটি trainable=True
দিয়ে শুরু করুন এবং arguments=dict(some_hparam=some_value, ...))
সহ (বিরল ক্ষেত্রে যে hparam ওভাররাইড প্রযোজ্য) .
নোট
আউটপুট বৈশিষ্ট্যগুলিতে ড্রপআউট প্রয়োগ করা (বা না) মডেল গ্রাহকের উপর ছেড়ে দেওয়া উচিত। SavedModel নিজেই প্রকৃত আউটপুটগুলিতে ড্রপআউট সঞ্চালন করা উচিত নয় (এমনকি যদি এটি অন্য জায়গায় অভ্যন্তরীণভাবে ড্রপআউট ব্যবহার করে)।
উদাহরণ
ইমেজ বৈশিষ্ট্য ভেক্টর জন্য পুনরায় ব্যবহারযোগ্য সংরক্ষিত মডেল ব্যবহার করা হয়
- Colab টিউটোরিয়াল একটি ইমেজ ক্লাসিফায়ার পুনরায় প্রশিক্ষণ ,
ছবির শ্রেণীবিভাগ
ব্যবহারের সারাংশ
ইমেজ শ্রেণীবিভাগ মডিউল প্রকাশক দ্বারা নির্বাচিত শ্রেণীবিভাগের শ্রেণীতে সদস্যতার জন্য রৈখিক স্কোর (লগিট) এর সাথে একটি চিত্রের পিক্সেল ম্যাপ করে। এটি মডেল ভোক্তাদের প্রকাশক মডিউল দ্বারা শেখা নির্দিষ্ট শ্রেণীবিভাগ থেকে সিদ্ধান্তে আঁকতে অনুমতি দেয়। (একটি নতুন ক্লাসের সাথে ইমেজ শ্রেণীবিভাগের জন্য, পরিবর্তে একটি নতুন ক্লাসিফায়ার সহ একটি চিত্র বৈশিষ্ট্য ভেক্টর মডেল পুনরায় ব্যবহার করা সাধারণ।)
ইমেজ শ্রেণীবিভাগের জন্য একটি পুনঃব্যবহারযোগ্য সংরক্ষিত মডেলের রুট অবজেক্টে একটি __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
উদাহরণের সদস্যতার পূর্বাভাস দেয়।
এটি অন্তর্নিহিত শ্রেণিবিন্যাসের উপর নির্ভর করে যে এই স্কোরগুলি সফটম্যাক্স (পারস্পরিক একচেটিয়া ক্লাসের জন্য), সিগময়েড (অর্থোগোনাল ক্লাসের জন্য), বা অন্য কিছুর সাথে ব্যবহার করা হবে কিনা। মডিউল ডকুমেন্টেশনের এটি বর্ণনা করা উচিত এবং ক্লাস সূচকগুলির একটি সংজ্ঞা উল্লেখ করা উচিত।
API বিবরণ
পুনঃব্যবহারযোগ্য SavedModel API এছাড়াও obj.variables
গুলির একটি তালিকা প্রদান করে (উদাহরণস্বরূপ, যখন সাগ্রহে লোড না হয় তখন শুরুর জন্য)।
একটি মডেল যা ফাইন-টিউনিং সমর্থন করে obj.trainable_variables
এর একটি তালিকা প্রদান করে। এর জন্য আপনাকে training=True
(যেমন, ড্রপআউটের জন্য)। কিছু মডেল ঐচ্ছিক আর্গুমেন্টকে হাইপারপ্যারামিটারগুলিকে ওভাররাইড করার অনুমতি দেয় (যেমন, ড্রপআউট রেট; মডেল ডকুমেন্টেশনে বর্ণনা করা হয়)। মডেলটি obj.regularization_losses
এর একটি তালিকাও প্রদান করতে পারে। বিশদ বিবরণের জন্য, পুনঃব্যবহারযোগ্য সংরক্ষিত মডেল API দেখুন।
কেরাসে, এটি hub.KerasLayer
দ্বারা যত্ন নেওয়া হয়: সূক্ষ্ম-টিউনিং সক্ষম করার জন্য এটি trainable=True
দিয়ে শুরু করুন এবং arguments=dict(some_hparam=some_value, ...))
সহ (বিরল ক্ষেত্রে যে hparam ওভাররাইড প্রযোজ্য) .
ইমেজ ইনপুট
এটি সব ধরনের ইমেজ মডেলের জন্য সাধারণ।
একটি মডেল যা ইনপুট হিসাবে ছবিগুলির একটি ব্যাচ নেয় সেগুলিকে dtype float32
এবং আকৃতি [batch_size, height, width, 3]
এর ঘন 4-D টেনসর হিসাবে গ্রহণ করে যার উপাদানগুলি হল পিক্সেলের RGB রঙের মানগুলি ব্যাপ্তিতে স্বাভাবিক করা হয় [0, 1] . এটি আপনি tf.image.decode_*()
এর পরে tf.image.convert_image_dtype(..., tf.float32)
থেকে পাবেন।
মডেলটি যেকোনো batch_size
গ্রহণ করে। মডেল ডকুমেন্টেশন height
এবং width
জন্য অনুমোদিত পরিসীমা নির্দিষ্ট করে৷ শেষ মাত্রাটি 3টি আরজিবি চ্যানেলে স্থির করা হয়েছে।
এটি সুপারিশ করা হয় যে মডেলগুলি সর্বত্র Tensors-এর channels_last
(বা NHWC
) লেআউট ব্যবহার করে এবং প্রয়োজনে channels_first
(বা NCHW
) এ পুনরায় লেখার জন্য TensorFlow-এর গ্রাফ অপ্টিমাইজারে ছেড়ে দেয়।