Example #1
0
def get_resultados(ubicacion):
    try:
        if os.path.isdir(ubicacion):
            r = contenidos(ubicacion, filter_ext='.txt')[0]
    except (IndexError, NotADirectoryError):
        print(ubicacion, ' no contenía resultados')
        return
    return extraigo(r)
Example #2
0
    input_img_data = np.random.random(
        (1, *modelo.input_shape[1:]
         )) * 20 + 128.  #la imagen arranca siendo gris ruidoso

    step = 1.  #tamaño del avance del gradiente
    for _ in range(iteraciones):  #itero [iteraciones] veces
        loss_value, grads_value = iterate([input_img_data])
        input_img_data += grads_value * step  #nuevo input corrigiendo con el gradiente

    img = input_img_data[0]
    return bitificar8(img, 0.1)


#%% Grafico filtros

for carpeta in contenidos(ubicacion):
    # Nomres de las capas convolutivas
    print('Corriendo', os.path.basename(carpeta))
    modelo = load_model(os.path.join(carpeta, nombre_modelo))

    nombres = [l.name for l in modelo.layers if 'conv' in l.name]

    # Carpeta donde guarda las imagenes de los filtros
    # save_dir = make_dirs_noreplace(os.path.join(
    #         'filtros', os.path.splitext(nombre_modelo)[0]))
    save_dir = os.path.join(carpeta, 'filtros')
    os.makedirs(save_dir)

    # Itero sobre todos los filtros de las capas convolutivas
    for capa_ind, nombre in enumerate(nombres):
        print('Corriendo capa ' + nombre)
Example #3
0
@author: Marcos
"""

import os

import numpy as np

from keras.models import load_model
from keras.preprocessing import image
#from keras.preprocessing.image import ImageDataGenerator

from utils import contenidos

model_dir = 'modelos'
modelos = contenidos(model_dir)
modelos.print_orden()

modo = 'pad'
ori_dir_chin = os.path.join('nuevos', 'originales', 'sonos', modo, 'chingolo')
ori_dir_bent = os.path.join('nuevos', 'originales', 'sonos', modo, 'benteveo')


def cargar_imagen(im_path):
    img = image.load_img(im_path, target_size=im_size, grayscale=True)
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    return x

#%%
Example #4
0
import os
import linecache

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

from utils import contenidos, find_numbers, load_img

ubi = 'modelos'
modelos = contenidos(ubi)


def extraigo(file):
    nr_lineas = (76, 81)
    lineas = []
    for l in range(*nr_lineas):
        lineas.append(linecache.getline(file, l))


#    print(lineas)

    resultados = {}
    # Matriz de confusión
    resultados['mc'] = np.array(
        [find_numbers(lineas.pop(0)),
         find_numbers(lineas.pop(0))])

    # Métricas
    for l in lineas:
        l = l[:-1]  #corto el \n
Example #5
0
# test_generator = test_datagen.flow_from_directory(test_dir, **generator_params)
# test_loss, test_acc = model.evaluate_generator(test_gen)
# print('Test accuracy: ', test_acc)


# =========================
# Pruebo con los originales
def cargar_imagen(im_path):
    img = image.load_img(im_path, target_size=im_size, grayscale=True)
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    return x


categorias = {k: v for v, k in train_generator.class_indices.items()}
imgs_paths = contenidos(ori_dir)
for path in imgs_paths:
    x = cargar_imagen(path)
    preds = model.predict(x)
    preds = np.squeeze(preds)
    print(os.path.basename(path))
    print('{}: {:.0f}% \t {}: {:.0f}%'.format(categorias[0], preds[0] * 100,
                                              categorias[1], preds[1] * 100))

# =========================
# Testeo para cantos reales
ori_dir_chin = os.path.join('nuevos', 'originales', 'sonos', MODO, 'chingolo')
ori_dir_bent = os.path.join('nuevos', 'originales', 'sonos', MODO, 'benteveo')

resultados = {'bent': [], 'ching': []}
paths = {'bent': ori_dir_bent, 'ching': ori_dir_chin}
Example #6
0
#    	preds = np.squeeze(preds)
#    	print(os.path.basename(path))
#    	print('{}: {:.0f}% \t {}: {:.0f}%'.format(categorias[0], preds[0]*100, categorias[1], preds[1]*100))
    
    # =========================
    # Testeo para cantos reales
    ori_dir_chin = os.path.join(test_dir, 'chingolo')
    ori_dir_bent = os.path.join(test_dir, 'benteveo')
    
    resultados = {'bent':[], 'ching':[]}
    paths = {'bent':ori_dir_bent, 'ching':ori_dir_chin}
    with open(nombre_guardado + '/resultados.txt', 'w') as resultados_out:
        for pajaro in paths:
            print(pajaro.upper(), file=resultados_out)
            print('', file=resultados_out)
            for i, path in enumerate(contenidos(paths[pajaro])):
                
                x = cargar_imagen(path)
                
                preds = model.predict(x)
                preds = np.squeeze(preds)
                
                resultados[pajaro].append(preds)
                print(i, '{}: {:.0f}% \t {}: {:.0f}%'.format(
                        categorias[0], preds[0]*100, categorias[1], preds[1]*100),
                        file=resultados_out)
            print('', file=resultados_out)
    
        # Confusion matrix
        cm = np.array(
                [[sum((b>c for b, c in resultados['bent'])), sum((b<c for b, c in resultados['bent']))],
Example #7
0
def mover(origen, destino, cant, subcarpeta='train'):
    '''los archivos en la carpeta train de origen se van a destino (validate o test) correspondiente.'''
    for file in contenidos(origen)[-cant:]:
        destino = file.replace(subcarpeta, destino)
        os.rename(file, destino)
Example #8
0
    elif modo == 'center':
        s.cut_or_extend(centered=True)

    s.guardar(ubicacion=destino)


def mover(origen, destino, cant, subcarpeta='train'):
    '''los archivos en la carpeta train de origen se van a destino (validate o test) correspondiente.'''
    for file in contenidos(origen)[-cant:]:
        destino = file.replace(subcarpeta, destino)
        os.rename(file, destino)


ubicacion_cantos = 'nuevos/originales/xenocanto/nuevos (temp)/bent/cortados'
#ubicacion_cantos = 'nuevos/originales/xenocanto/nuevos (temp)/ching/cortados'
originales = contenidos(ubicacion_cantos, filter_ext='.wav')
originales.print_orden()

DURACION = 1.8  # tomado de la síntesis de chingolos, el más largo de los dos
#%%

#elegidos = [2, 7, 3, 5]
#elegidos = range(1, 9) #para chingolo: fallan el 3 y 5
elegidos = range((len(originales)))  # chingolo fallan 24 y 28
for modo in modos:
    for k in elegidos:
        sonido = originales[k]
        try:
            if 'bent' in sonido.lower():
                procesar_benteveo(sonido,
                                  carpeta_de_llegada_bent(modo),
Example #9
0
# -*- coding: utf-8 -*-
"""
Created on Mon Aug  5 11:50:30 2019

@author: Marcos
"""

import os
from utils import load_img, contenidos

target_dir = r'D:\Facu\Tesis\Códigos\Tesis\byc\sintetizados\as_loaded'

c = contenidos(r'D:\Facu\Tesis\Códigos\Tesis\byc\sintetizados\dnn\train_pad')
c.extend(
    contenidos(
        r'D:\Facu\Tesis\Códigos\Tesis\byc\sintetizados\dnn\originales_pad'))
#%%
tipo = 'train', 'train', 'ori', 'ori'
for path, t in zip(c, tipo):
    i = load_img(path, target_size=(300, 200), color_mode='grayscale')
    nombre = os.path.join(target_dir, '_'.join((t, (os.path.basename(path)))))
    i.save(nombre)
#    print(nombre)

#%%

oris_act = contenidos(r'D:\Facu\Tesis\Códigos\Tesis\byc\modelos\byc_peque_pad')
oris_bent = contenidos(
    r'D:\Facu\Tesis\Códigos\Tesis\byc\nuevos\originales\sonos\pad\benteveo')
oris_chin = contenidos(
    r'D:\Facu\Tesis\Códigos\Tesis\byc\nuevos\originales\sonos\pad\chingolo')
Example #10
0
from keras import models
from keras.preprocessing import image

from utils import contenidos, Grid, new_name

modo = 'pad'

train_dir_bent = os.path.join('sintetizados', 'dnn', modo, 'train', 'benteveo')
train_dir_chin = os.path.join('sintetizados', 'dnn', modo, 'train', 'chingolo')

ori_dir_chin = os.path.join('nuevos', 'originales', 'sonos', modo, 'chingolo')
ori_dir_bent = os.path.join('nuevos', 'originales', 'sonos', modo, 'benteveo')

model_dir = 'modelos'
modelos = contenidos(model_dir)
modelos.print_orden()

im_size = (300, 200)


def cargar_imagen(im_path):
    img = image.load_img(im_path, target_size=im_size, color_mode="grayscale")
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    return x


def bitificar8(im, desv=1):
    #normalizo la imagen
    im -= im.mean()
Example #11
0
    s.cut_or_extend()
    s.guardar(ubicacion=destino)


def mover(origen, destino, cant, subcarpeta='train'):
    '''los archivos en la carpeta train de origen se van a destino (validate o test) correspondiente.'''
    for file in contenidos(origen)[-cant:]:
        path_destino = file.replace(subcarpeta, destino)
        os.rename(file, path_destino)


#%%

DURACION = 1.8  # tomado de la síntesis de chingolos, el más largo de los dos

for file in contenidos(carpeta_de_salida_bent):
    for modo in modos:  #lo hago en los tres modos
        procesar_benteveo(file,
                          destino=carpeta_de_llegada_bent(modo),
                          dur=DURACION,
                          modo=modo)

for file in contenidos(carpeta_de_salida_ching):
    procesar_chingolo(file,
                      destino=carpeta_de_llegada_ching('pad'),
                      dur=DURACION)

#copio los chingolos a las carpetas de los tres modos
for modo in modos[1:]:
    for file in contenidos(carpeta_de_llegada_ching('pad')):
        copyfile(file, file.replace('pad', modo))