عرض على 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. في الخلية التالية ، يمكنك اختيار أي منها وتجربة صورتك. إذا كنت تريد تجربة واحدة أخرى ، فما عليك سوى اختيارها وتنفيذ الخلايا التالية.
اختيار النموذج
model_name = 'Boundless Quarter' # @param ['Boundless Half', 'Boundless Quarter', 'Boundless Three Quarters']
model_handle_map = {
'Boundless Half' : 'https://tfhub.dev/google/boundless/half/1',
'Boundless Quarter' : 'https://tfhub.dev/google/boundless/quarter/1',
'Boundless Three Quarters' : 'https://tfhub.dev/google/boundless/three_quarter/1'
}
model_handle = model_handle_map[model_name]
الآن بعد أن اخترنا النموذج الذي نريده ، فلنقم بتحميله من 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)