דף זה תורגם על ידי Cloud Translation API.
Switch to English

קולאב חסר גבולות

צפה ב- TensorFlow.org הפעל בגוגל קולאב צפה ב- GitHub הורד מחברת ראה דגמי TF Hub

ברוך הבא לדגם קולאב ללא גבולות! מחברת זו תעביר אתכם בשלבים של הפעלת המודל על תמונות ותדמיין את התוצאות.

סקירה כללית

ללא גבולות הוא מודל לאקסטרפולציה של התמונה. מודל זה מצלם תמונה, מסווה באופן פנימי חלוקה ממנה ( 1/2 , 1/4 , 3/4 ) ומשלים את החלק המסווה. לפרטים נוספים עיין ב- Boundless: רשתות יריבות גנריות להרחבת תמונה או בתיעוד המודל ב- 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

קריאת תמונה לקלט

מאפשר ליצור שיטת util כדי לעזור לטעון את התמונה ולעצב אותה לדגם (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 Hub

ב- TensorFlow Hub יש לנו 3 גרסאות של המודל ללא גבולות: חצי, רבע ושלושה רבעים. בתא הבא תוכלו לבחור כל אחד מהם ולנסות את התמונה שלכם. אם ברצונך לנסות עם עוד אחד, פשוט בחר בו וצפה בתאים הבאים.

בחירת מודל

כעת, לאחר שבחרנו את הדגם הרצוי לנו, ניתן לטעון אותו מ- 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)

png