Sınırsız Kolab

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın GitHub'da görüntüle Not defterini indir TF Hub modellerine bakın

Sınırsız model Colab'a hoş geldiniz! Bu not defteri, modeli görüntüler üzerinde çalıştırma adımlarında size yol gösterecek ve sonuçları görselleştirecektir.

genel bakış

Sınırsız, görüntü ekstrapolasyonu için bir modeldir. Bu model bir görüntü, içten maskeleri bunun (bir kısmı alır 1/2 , 1/4 , 3/4 ) ve maskeli kısmını tamamlar. Daha fazla ayrıntı için bakınız Sınırsız: Üretken olarak rakip Ağlar Görüntü Uzatılması veya TensorFlow Hub model belgelerine.

İçe Aktarma ve Kurulum

Temel ithalatla başlayalım.

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

Giriş için görüntü okuma

Görüntüyü yüklemeye ve model için biçimlendirmeye (257x257x3) yardımcı olacak bir util yöntemi oluşturalım. Bu yöntem ayrıca bozulmayı önlemek için görüntüyü kareye kırpacak ve yerel görüntülerle veya internetten kullanabilirsiniz.

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

görselleştirme yöntemi

Ayrıca, her ikisi de model tarafından oluşturulan maskeli sürüm ve "dolu" sürümle orijinal görüntüyü yan yana göstermek için bir görselleştirme yöntemi oluşturacağız.

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

Resim Yükleme

Örnek bir resim yükleyeceğiz, ancak kendi resminizi ortak çalışmaya yükleyip denemekte özgürdük. Modelin insan görüntüleri ile ilgili bazı sınırlamaları olduğunu unutmayın.

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'dan bir model seçme

TensorFlow Hub'da Sınırsız modelin 3 versiyonu vardır: Yarım, Çeyrek ve Üç Çeyrek. Aşağıdaki hücrede bunlardan herhangi birini seçebilir ve resminizi deneyebilirsiniz. Başka bir tane ile denemek istiyorsanız, onu seçin ve aşağıdaki hücreleri çalıştırın.

Model Seçimi

Artık istediğimiz modeli seçtiğimize göre, onu TensorFlow Hub'dan yükleyelim.

print("Loading model {} ({})".format(model_name, model_handle))
model = hub.load(model_handle)
Loading model Boundless Quarter (https://tfhub.dev/google/boundless/quarter/1)

çıkarım yapmak

Sınırsız modelin iki çıktısı vardır:

  • Maske uygulanmış giriş görüntüsü
  • Tamamlamak için ekstrapolasyon ile maskelenmiş görüntü

bir karşılaştırma görselleştirmesi göstermek için bu iki görüntüyü kullanabiliriz.

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