টেনসরফ্লো হাবের সাথে চিত্রের শ্রেণিবিন্যাস

এই কোল্যাবে, আপনি টেনসরফ্লো হাব থেকে একাধিক ইমেজ ক্লাসিফিকেশন মডেল ব্যবহার করে দেখবেন এবং আপনার ব্যবহারের ক্ষেত্রে কোনটি সবচেয়ে ভালো তা নির্ধারণ করবেন।

কারণ মেমরি হাব একটি উৎসাহিত সামঞ্জস্যপূর্ণ ইনপুট সম্মেলন মডেল ইমেজ কাজ, এটি সহজ সেরা তোমার চাহিদা পূরণ এটি বিভিন্ন আর্কিটেকচারের নিয়ে পরীক্ষা করতে হবে।

TensorFlow.org এ দেখুন Google Colab-এ চালান GitHub এ দেখুন নোটবুক ডাউনলোড করুন TF হাব মডেল দেখুন
import tensorflow as tf
import tensorflow_hub as hub

import requests
from PIL import Image
from io import BytesIO

import matplotlib.pyplot as plt
import numpy as np

ছবি লোড করার জন্য হেল্পার ফাংশন (লুকানো)

একটি চিত্র শ্রেণীবিভাগ মডেল নির্বাচন করুন. এর পরে, কিছু অভ্যন্তরীণ ভেরিয়েবল সেট করা হয় এবং লেবেল ফাইল ডাউনলোড করা হয় এবং ব্যবহারের জন্য প্রস্তুত করা হয়।

মডেলগুলির মধ্যে কিছু প্রযুক্তিগত পার্থক্য রয়েছে, যেমন বিভিন্ন ইনপুট আকার, মডেলের আকার, নির্ভুলতা এবং অনুমান সময়। এখানে আপনি যে মডেলটি ব্যবহার করছেন তা পরিবর্তন করতে পারবেন যতক্ষণ না আপনি আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত একটি খুঁজে পান।

আপনার সুবিধার জন্য মডেলটির হ্যান্ডেল (url) প্রিন্ট করা হয়েছে। প্রতিটি মডেল সম্পর্কে আরও ডকুমেন্টেশন সেখানে উপলব্ধ।

একটি চিত্র শ্রেণীবিভাগ মডেল নির্বাচন করুন

Selected model: efficientnetv2-s : https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_s/classification/2
Images will be converted to 384x384
Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt
16384/10484 [==============================================] - 0s 0us/step
24576/10484 [======================================================================] - 0s 0us/step

আপনি নীচের ছবিগুলির মধ্যে একটি নির্বাচন করতে পারেন, অথবা আপনার নিজের ছবি ব্যবহার করতে পারেন৷ শুধু মনে রাখবেন যে মডেলগুলির জন্য ইনপুট আকার পরিবর্তিত হয় এবং তাদের মধ্যে কিছু একটি গতিশীল ইনপুট আকার ব্যবহার করে (আনস্কেল করা চিত্রে অনুমান সক্ষম করে)। যে দেওয়া, পদ্ধতি load_image ইতিমধ্যে প্রত্যাশিত ফর্ম্যাটে ইমেজ rescale হবে।

একটি ইনপুট ছবি নির্বাচন করুন

png

এখন যেহেতু মডেলটি বেছে নেওয়া হয়েছে, টেনসরফ্লো হাবের সাথে এটি লোড করা সহজ।

এটি একটি র্যান্ডম ইনপুট সহ মডেলটিকে "ওয়ার্মআপ" রান হিসাবেও কল করে৷ পরবর্তী কলগুলি প্রায়শই অনেক দ্রুত হয় এবং আপনি এটিকে নীচের লেটেন্সির সাথে তুলনা করতে পারেন৷

classifier = hub.load(model_handle)

input_shape = image.shape
warmup_input = tf.random.uniform(input_shape, 0, 1.0)
%time warmup_logits = classifier(warmup_input).numpy()
CPU times: user 2.88 s, sys: 470 ms, total: 3.35 s
Wall time: 3.41 s

সবকিছু অনুমান জন্য প্রস্তুত. এখানে আপনি নির্বাচিত ছবির জন্য মডেল থেকে শীর্ষ 5 ফলাফল দেখতে পারেন।

# Run model on image
%time probabilities = tf.nn.softmax(classifier(image)).numpy()

top_5 = tf.argsort(probabilities, axis=-1, direction="DESCENDING")[0][:5].numpy()
np_classes = np.array(classes)

# Some models include an additional 'background' class in the predictions, so
# we must account for this when reading the class labels.
includes_background_class = probabilities.shape[1] == 1001

for i, item in enumerate(top_5):
  class_index = item if includes_background_class else item + 1
  line = f'({i+1}) {class_index:4} - {classes[class_index]}: {probabilities[0][top_5][i]}'
  print(line)

show_image(image, '')
CPU times: user 27.4 ms, sys: 9 µs, total: 27.4 ms
Wall time: 25.9 ms
(1)   35 - leatherback turtle: 0.7747752666473389
(2)   34 - loggerhead: 0.10644760727882385
(3)   37 - terrapin: 0.005874828901141882
(4)  148 - grey whale: 0.002594555728137493
(5)   36 - mud turtle: 0.0025599468499422073

png

আরও জানুন

আপনি আরো জানতে এবং কিভাবে এই মডেলের সঙ্গে ট্রান্সফার শিক্ষণ করার চেষ্টা করতে চান, আপনি এই টিউটোরিয়াল চেষ্টা করতে পারেন: ভাবমূর্তি শ্রেণীবিভাগ জন্য স্থানান্তর শিক্ষণ

আপনি আরো ইমেজ মডেলের উপর চেক করতে চান, তাহলে আপনি তাদের উপর চেক আউট করতে পারেন tfhub.dev