Ejemplo n.º 1
0
def render(node, settings):
    """
    Given an AST node and settings, return a displayable object.
    """
    tree = handle_ast(node, settings['omit_docstrings'])
    with _tree_image(tree, settings) as fname:
        return IPImage(filename=fname)
Ejemplo n.º 2
0
 def compare_images(index):
     original_image = Image.fromarray(get_picture_array(255 * data_ldr[index]))
     new_size = (original_image.size[0] * 2, original_image.size[1])
     new_im = Image.new('L', new_size)
     new_im.paste(original_image, (0,0))
     rec_image = Image.fromarray(get_picture_array(X_pred[index]))
     new_im.paste(rec_image, (original_image.size[0],0))
     new_im.save('data/test.png', format="PNG")
     return IPImage('data/test.png')
Ejemplo n.º 3
0
def compare_images(img, img_pre):
    original_image = Image.fromarray(get_picture_array(255 * img))
    new_size = (original_image.size[0] * 2, original_image.size[1])
    new_im = Image.new('L', new_size)
    new_im.paste(original_image, (0,0))
    rec_image = Image.fromarray(get_picture_array(img_pre))
    new_im.paste(rec_image, (original_image.size[0],0))
    new_im.save('mnist/test.png', format="PNG")
    return IPImage('mnist/test.png')
Ejemplo n.º 4
0
def tree_image(tree):
    t = Tree.fromstring(tree)
    tv = SizableTreeView(t)
    tv._cframe.print_to_file('.temp.ps')
    im = Image.open('.temp.ps')

    # trim whitespace
    bg = Image.new(im.mode, im.size, im.getpixel((0, 0)))
    diff = ImageChops.difference(im, bg)
    diff = ImageChops.add(diff, diff, 2.0, -100)
    bbox = diff.getbbox()
    if bbox:
        im = im.crop(bbox)

    im.save('.temp.png', 'PNG')
    display(IPImage(filename='.temp.png'))
    for fname in ('.temp.ps', '.temp.png'):
        try:
            os.remove(fname)
        except (IOError, WindowsError):
            pass
Ejemplo n.º 5
0

def get_random_images():
    index = np.random.randint(5000)
    print index
    original_image = Image.fromarray(get_picture_array(X, index))
    new_size = (original_image.size[0] * 2, original_image.size[1])
    new_im = Image.new('L', new_size)
    new_im.paste(original_image, (0, 0))
    rec_image = Image.fromarray(get_picture_array(X_pred, index))
    new_im.paste(rec_image, (original_image.size[0], 0))
    new_im.save('data/test.png', format="PNG")


get_random_images()
IPImage('data/test.png')

# <codecell>

## we find the encode layer from our ae, and use it to define an encoding function

encode_layer_index = map(lambda pair: pair[0], ae.layers).index('encode_layer')
encode_layer = ae.get_all_layers()[encode_layer_index]


def get_output_from_nn(last_layer, X):
    indices = np.arange(128, X.shape[0], 128)
    sys.stdout.flush()

    # not splitting into batches can cause a memory error
    X_batches = np.split(X, indices)
Ejemplo n.º 6
0
mu, sigma = np.mean(X.flatten()), np.std(X.flatten())
X_train = X.astype(np.float64)
X_train = (X_train - mu) / sigma
X_train = X_train.astype(np.float32)
X_out = X_train.reshape((X_train.shape[0], -1))

print("XShape: ", X.shape)

print("Making Predictions")
X_pred = (ae.predict(X_train) * sigma + mu).reshape(-1, 28,
                                                    28).astype(int).clip(
                                                        0, 255).astype('uint8')
print("Pred Shape: ", X_pred.shape)

get_random_images()
IPImage('images/orig.png')

print("Encoding Training Data")
X_encoded = ae.encode(X_train)
print("Encoded Shape: ", X_encoded.shape)

print("Decoding Data")
X_decoded = (ae.decode(X_encoded) * sigma + mu).reshape(
    -1, 28, 28).astype(int).clip(0, 255).astype('uint8')
print("Decoded Shape: ", X_decoded.shape)

# check it worked:
pic_array = get_picture_array(X_decoded, np.random.randint(len(X_decoded)))
image = Image.fromarray(pic_array)
image.save('images/test.png', format="PNG")
IPImage('images/test.png')
Ejemplo n.º 7
0
def poulet():
# In[ ]:

#get_ipython().system(u'mkdir -p data')
#get_ipython().system(u'mkdir -p montage')


# In[ ]:

###  show random inputs / outputs side by side

    def get_picture_array(X, rescale=4):
        array = X.reshape(256,256)
        array = np.clip(array, a_min = 0, a_max = 255)
        return  array.repeat(rescale, axis = 0).repeat(rescale, axis = 1).astype(np.uint8())

    def compare_images(index):
        original_image = Image.fromarray(get_picture_array(255 * data_ldr[index]))
        new_size = (original_image.size[0] * 2, original_image.size[1])
        new_im = Image.new('L', new_size)
        new_im.paste(original_image, (0,0))
        rec_image = Image.fromarray(get_picture_array(X_pred[index]))
        new_im.paste(rec_image, (original_image.size[0],0))
        new_im.save('data/test.png', format="PNG")
        return IPImage('data/test.png')

    compare_images(2)
# compare_images(np.random.randint(50000))


# In[ ]:

## we find the encode layer from our ae, and use it to define an encoding function

    def get_layer_by_name(net, name):
        for i, layer in enumerate(net.get_all_layers()):
            if layer.name == name:
                return layer, i
        return None, None
    encode_layer, encode_layer_index = get_layer_by_name(ae, 'encode')

    def encode_input(encode_layer, X):
        return get_output(encode_layer, inputs=X).eval()

    X_encoded = encode_input(encode_layer, data_ldr)


# In[ ]:

    next_layer = ae.get_all_layers()[encode_layer_index + 1]
    final_layer = ae.get_all_layers()[-1]
    new_layer = InputLayer(shape=(None, encode_layer.num_units))

# N.B after we do this, we won't be able to use the original autoencoder , as the layers are broken up
    next_layer.input_layer = new_layer


# In[ ]:

#def get_output_from_nn(last_layer, X):
#    indices = np.arange(128, X.shape[0], 128)
#    sys.stdout.flush()
#
#    # not splitting into batches can cause a memory error
#    X_batches = np.split(X, indices)
#    out = []
#    for count, X_batch in enumerate(X_batches):
#        out.append(get_output(last_layer, X_batch).eval())
#        sys.stdout.flush()
#    return np.vstack(out)

    def get_output_from_nn(last_layer, X):
        return get_output(last_layer,X).eval()

    def decode_encoded_input(X):
        return get_output_from_nn(final_layer, X)

    X_decoded = 256 * decode_encoded_input(X_encoded[2]) * 2

    X_decoded = np.rint(X_decoded).astype(int)
    X_decoded = np.clip(X_decoded, a_min = 0, a_max = 255)
    X_decoded  = X_decoded.astype('uint8')
    print(X_decoded.shape)

    pic_array = get_picture_array(X_decoded)
    image = Image.fromarray(pic_array)
    image.save('data/test.png', format="PNG")  
    IPImage('data/test.png')


# In[ ]:

    enc_std = X_encoded.std(axis=0)
    enc_mean = X_encoded.mean(axis=0)
    enc_min = X_encoded.min(axis=0)
    enc_max = X_encoded.max(axis=0)
    m = X_encoded.shape[1]


# In[ ]:

    n = 256
    generated = np.random.normal(0, 1, (n, m)) * enc_std + enc_mean
    generated = generated.astype(np.float32).clip(enc_min, enc_max)
    X_decoded = decode_encoded_input(generated) * 256.
    X_decoded = np.rint(X_decoded ).astype(int)
    X_decoded = np.clip(X_decoded, a_min = 0, a_max = 255)
    X_decoded  = X_decoded.astype('uint8')
    get_ipython().system(u'mkdir -p montage')
    for i in range(n):
        pic_array = get_picture_array(X_decoded[i], rescale=1)
        image = Image.fromarray(pic_array)
        image.save('montage/{0:03d}.png'.format(i), format='png')


# In[ ]:

    get_ipython().system(u'montage -mode concatenate -tile 16x montage/*.png montage.png')
    IPImage('montage.png')
Ejemplo n.º 8
0

def get_random_images():
    index = np.random.randint(2017)
    print index
    original_image = Image.fromarray(get_picture_array(X, index))
    new_size = (original_image.size[0] * 2, original_image.size[1])
    new_im = Image.new('L', new_size)
    new_im.paste(original_image, (0, 0))
    rec_image = Image.fromarray(get_picture_array(X_pred, index))
    new_im.paste(rec_image, (original_image.size[0], 0))
    new_im.save('test_100.png', format="PNG")


get_random_images()
IPImage('test_100.png')

# <codecell>

## we find the encode layer from our ae, and use it to define an encoding function

encode_layer_index = map(lambda pair: pair[0], ae.layers).index('encode_layer')
encode_layer = ae.get_all_layers()[encode_layer_index]


def get_output_from_nn(last_layer, X):
    indices = np.arange(128, X.shape[0], 128)
    sys.stdout.flush()

    # not splitting into batches can cause a memory error
    X_batches = np.split(X, indices)
Ejemplo n.º 9
0
# información de la imagen seleccionada, incluyendo cambiar el tamaño, recortar la imagen, modificar pixeles.
# Fuentes: https://pillow.readthedocs.io/en/stable/reference/Image.html

img = Image.open(
    requests.get(
        'https://graffica.info/wp-content/uploads/2017/07/logo-nasa-fondo-oscuro.jpg',
        stream=True).raw)
print(img)

# Para mostrar la imagen podemos usar IPython.
# Fuentes: https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html
# https://stackoverflow.com/questions/49478791/how-can-i-open-images-in-a-google-colaboratory-notebook-cell-from-uploaded-png-f

display(
    IPImage(
        'https://graffica.info/wp-content/uploads/2017/07/logo-nasa-fondo-oscuro.jpg'
    ))

# Para guardar imágenes Pillow nos proporciona el método save, que nos permite modificar la extensión del archivo.
# Fuentes: https://pillow.readthedocs.io/en/stable/reference/Image.html
# https://www.geeksforgeeks.org/python-pil-image-save-method/

img.save('test.jpg')
"""Para manejar colores y transparencias"""

# Con el módulo Image de Pillow podemos usar el método getdata para obtener y putdata para modificar la información pixel a pixel de la imagen.
# Fuente: https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.getdata

# Creamos un lienzo negro para modificarlo
img = Image.new('RGBA', (125, 125), (0, 0, 0, 255))
display(img)