সীমাহীন কোলাব

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

সীমাহীন মডেল Colab-এ স্বাগতম! এই নোটবুকটি আপনাকে চিত্রগুলিতে মডেল চালানোর ধাপগুলির মধ্য দিয়ে নিয়ে যাবে এবং ফলাফলগুলি কল্পনা করবে৷

ওভারভিউ

সীমাহীন ইমেজ এক্সট্রাপোলেশন জন্য একটি মডেল. এই মডেল একটি চিত্র, অভ্যন্তরীণভাবে মুখোশ এটা (কিছু অংশ নেয় 1/2 , 1/4 , 3/4 ) এবং মুখোশধারী অংশ সমাপ্ত হবে। আরো বিস্তারিত জানার জন্য পড়ুন ভাবমূর্তি এক্সটেনশন জন্য সৃজক adversarial নেটওয়ার্কগুলি: অপার বা 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) জন্য ফর্ম্যাট করতে সাহায্য করার জন্য একটি util পদ্ধতি তৈরি করা যাক। এই পদ্ধতিটি বিকৃতি এড়াতে ছবিটিকে একটি বর্গাকারে ক্রপ করবে এবং আপনি স্থানীয় ছবি বা ইন্টারনেট থেকে ব্যবহার করতে পারেন।

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()

একটি ছবি লোড হচ্ছে

আমরা একটি নমুনা চিত্র লোড করব কিন্তু আপনার নিজের ছবি Colab-এ আপলোড করতে এবং এটি দিয়ে চেষ্টা করতে বিনা দ্বিধায় পড়েছি। মনে রাখবেন যে মডেলটির মানুষের ছবি সম্পর্কিত কিছু সীমাবদ্ধতা রয়েছে।

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)

টেনসরফ্লো হাব থেকে একটি মডেল নির্বাচন করা হচ্ছে

টেনসরফ্লো হাবে আমাদের কাছে বাউন্ডলেস মডেলের 3টি সংস্করণ রয়েছে: হাফ, কোয়ার্টার এবং থ্রি কোয়ার্টার। নিম্নলিখিত কক্ষে আপনি তাদের যেকোনো একটি বেছে নিতে পারেন এবং আপনার ছবিটি চেষ্টা করতে পারেন। আপনি যদি অন্য একটি দিয়ে চেষ্টা করতে চান তবে এটি বেছে নিন এবং নিম্নলিখিত কক্ষগুলি চালান।

মডেল নির্বাচন

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

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)

png