सहायता Kaggle पर TensorFlow साथ ग्रेट बैरियर रीफ की रक्षा चैलेंज में शामिल हों

असीम कोलाब

TensorFlow.org पर देखें Google Colab में चलाएं गिटहब पर देखें नोटबुक डाउनलोड करें TF हब मॉडल देखें

असीम मॉडल Colab में आपका स्वागत है! यह नोटबुक आपको छवियों पर मॉडल चलाने के चरणों के बारे में बताएगी और परिणामों की कल्पना करेगी।

अवलोकन

बाउंडलेस इमेज एक्सट्रपलेशन के लिए एक मॉडल है। यह मॉडल एक छवि है, आंतरिक रूप से मास्क यह (के एक हिस्से को ले जाता है 1/2 , 1/4 , 3/4 ) और नकाबपोश भाग पूरा करती है। अधिक जानकारी के लिए का उल्लेख छवि विस्तार के लिए उत्पादक विरोधात्मक नेटवर्क: असीम या TensorFlow हब पर मॉडल प्रलेखन।

आयात और सेटअप

आइए मूल आयात के साथ शुरू करें।

import tensorflow as tf
import tensorflow_hub as hub
from io import BytesIO
from PIL import Image as PilImage
import numpy as np
from matplotlib import pyplot as plt
from six.moves.urllib.request import urlopen

इनपुट के लिए छवि पढ़ना

छवि को लोड करने और इसे मॉडल (257x257x3) के लिए प्रारूपित करने में मदद करने के लिए एक उपयोग विधि बनाते हैं। यह विधि विरूपण से बचने के लिए छवि को एक वर्ग में भी क्रॉप करेगी और आप स्थानीय छवियों या इंटरनेट से उपयोग कर सकते हैं।

def read_image(filename):
    fd = None
    if(filename.startswith('http')):
      fd = urlopen(filename)
    else:
      fd = tf.io.gfile.GFile(filename, 'rb')

    pil_image = PilImage.open(fd)
    width, height = pil_image.size
    # crop to make the image square
    pil_image = pil_image.crop((0, 0, height, height))
    pil_image = pil_image.resize((257,257),PilImage.ANTIALIAS)
    image_unscaled = np.array(pil_image)
    image_np = np.expand_dims(
        image_unscaled.astype(np.float32) / 255., axis=0)
    return image_np

विज़ुअलाइज़ेशन विधि

हम मूल छवि को नकाबपोश संस्करण और मॉडल द्वारा उत्पन्न "भरे हुए" संस्करण के साथ-साथ दिखाने के लिए एक विज़ुअलाइज़ेशन विधि भी बनाएंगे।

def visualize_output_comparison(img_original, img_masked, img_filled):
  plt.figure(figsize=(24,12))
  plt.subplot(131)
  plt.imshow((np.squeeze(img_original)))
  plt.title("Original", fontsize=24)
  plt.axis('off')
  plt.subplot(132)
  plt.imshow((np.squeeze(img_masked)))
  plt.title("Masked", fontsize=24)
  plt.axis('off')
  plt.subplot(133)
  plt.imshow((np.squeeze(img_filled)))
  plt.title("Generated", fontsize=24)
  plt.axis('off')
  plt.show()

एक छवि लोड हो रहा है

हम एक नमूना छवि लोड करेंगे लेकिन कोलाब पर आपकी अपनी छवि अपलोड करने और उसके साथ प्रयास करने के लिए स्वतंत्र हैं। याद रखें कि मानव छवियों के संबंध में मॉडल की कुछ सीमाएँ हैं।

wikimedia = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Nusfjord_road%2C_2010_09.jpg/800px-Nusfjord_road%2C_2010_09.jpg"
# wikimedia = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Beech_forest_M%C3%A1tra_in_winter.jpg/640px-Beech_forest_M%C3%A1tra_in_winter.jpg"
# wikimedia = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Marmolada_Sunset.jpg/640px-Marmolada_Sunset.jpg"
# wikimedia = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Aegina_sunset.jpg/640px-Aegina_sunset.jpg"

input_img = read_image(wikimedia)

TensorFlow हब से एक मॉडल का चयन

TensorFlow हब पर हमारे पास असीम मॉडल के 3 संस्करण हैं: हाफ, क्वार्टर और थ्री क्वार्टर। निम्नलिखित सेल में आप उनमें से किसी को भी चुन सकते हैं और अपनी छवि पर प्रयास कर सकते हैं। यदि आप किसी अन्य के साथ प्रयास करना चाहते हैं, तो बस इसे चुनें और निम्न कक्षों को निष्पादित करें।

मॉडल चयन

अब जब हमने अपनी पसंद का मॉडल चुन लिया है, तो इसे TensorFlow हब से लोड करने दें।

print("Loading model {} ({})".format(model_name, model_handle))
model = hub.load(model_handle)
Loading model Boundless Quarter (https://tfhub.dev/google/boundless/quarter/1)

अनुमान करना

असीमित मॉडल में दो आउटपुट होते हैं:

  • एक मुखौटा के साथ इनपुट छवि लागू
  • इसे पूरा करने के लिए एक्सट्रपलेशन के साथ नकाबपोश छवि

तुलना विज़ुअलाइज़ेशन दिखाने के लिए हम इन दो छवियों का उपयोग कर सकते हैं।

result = model.signatures['default'](tf.constant(input_img))
generated_image =  result['default']
masked_image = result['masked_image']

visualize_output_comparison(input_img, masked_image, generated_image)

पीएनजी