كولاب بلا حدود

عرض على TensorFlow.org تشغيل في Google Colab عرض على جيثب تحميل دفتر انظر نماذج TF Hub

مرحبًا بكم في نموذج Boundless Colab! سيأخذك هذا الكمبيوتر الدفتري خلال خطوات تشغيل النموذج على الصور وتصور النتائج.

ملخص

Boundless هو نموذج لاستقراء الصورة. يأخذ هذا النموذج صورة ، ويخفي داخليًا جزءًا منه ( 1/2 ، 1/4 ، 3/4 ) ويكمل الجزء المقنع. لمزيد من التفاصيل ، يرجى الرجوع إلى Boundless: Generative Adversarial Networks for Image Extension أو توثيق النموذج على TensorFlow Hub.

الواردات والإعداد

لنبدأ بالواردات الأساسية.

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

قراءة الصورة للإدخال

لنقم بإنشاء طريقة استخدام للمساعدة في تحميل الصورة وتنسيقها للنموذج (257 × 257 × 3). ستؤدي هذه الطريقة أيضًا إلى اقتصاص الصورة إلى مربع لتجنب التشويه ويمكنك استخدامها مع الصور المحلية أو من الإنترنت.

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

طريقة التصور

سنقوم أيضًا بإنشاء طريقة visuzalization لإظهار الصورة الأصلية جنبًا إلى جنب مع الإصدار المقنع والإصدار "المملوء" ، وكلاهما تم إنشاؤه بواسطة النموذج.

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)

اختيار نموذج من TensorFlow Hub

في TensorFlow Hub ، لدينا 3 إصدارات من نموذج Boundless: Half و Quarter و Three Quarters. في الخلية التالية ، يمكنك اختيار أي منها وتجربة صورتك. إذا كنت ترغب في تجربة واحدة أخرى ، فما عليك سوى اختيارها وإخراج الخلايا التالية.

اختيار النموذج

الآن بعد أن اخترنا النموذج الذي نريده ، فلنقم بتحميله من TensorFlow Hub.

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)

بي إن جي