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

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

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

ملخص

Boundless هو نموذج لاستقراء الصورة. هذا النموذج يأخذ صورة، داخليا أقنعة جزء منه ( 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

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

لنقم بإنشاء طريقة استخدام للمساعدة في تحميل الصورة وتنسيقها للنموذج (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)

بي إن جي