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)
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)
@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 #%%
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
# 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}
# 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']))],
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)
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),
# -*- 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')
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()
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))