TensorFlow हब के साथ छवि वर्गीकरण

इस कोलाब में, आप TensorFlow हब से कई छवि वर्गीकरण मॉडल आज़माएँगे और तय करेंगे कि आपके उपयोग के मामले में कौन सा सबसे अच्छा है।

क्योंकि TF हब एक को प्रोत्साहित करती है लगातार इनपुट सम्मेलन मॉडल है कि छवियों पर काम के लिए, यह आसान एक सबसे अच्छा आपकी आवश्यकताएं पूरी ढूंढ़ने के लिए विभिन्न आर्किटेक्चर के साथ प्रयोग करने के लिए।

TensorFlow.org पर देखें Google Colab में चलाएं गिटहब पर देखें नोटबुक डाउनलोड करें 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 होगा।

एक इनपुट छवि का चयन करें

पीएनजी

अब जबकि मॉडल चुना गया है, इसे TensorFlow हब के साथ लोड करना आसान है।

यह एक यादृच्छिक इनपुट वाले मॉडल को "वार्मअप" रन के रूप में भी कॉल करता है। बाद की कॉल अक्सर बहुत तेज़ होती हैं, और आप इसकी तुलना नीचे दी गई प्रतीक्षा अवधि से कर सकते हैं।

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

पीएनजी

और अधिक जानें

आप और अधिक जानने के लिए और कैसे इन मॉडलों के साथ स्थानांतरण लर्निंग करने की कोशिश करना चाहते हैं आप इस ट्यूटोरियल की कोशिश कर सकते हैं: छवि वर्गीकरण के लिए स्थानांतरण लर्निंग

आप और अधिक छवि मॉडल पर जाँच करना चाहते हैं आप उन पर नज़र डाल सकते हैं tfhub.dev