Rafa Buscaret escribió:Guillermo Luijk escribió:no reducen ruido sino que sustituyen tu imagen por otra parecida que no tenía ruido.
Aunque pensándolo con más calma, como Roy Batty en Blade Runner, tengo preguntas [emoji38]
El ordenador donde edito nunca está conectado a la red. Y el progama, al instalarlo, no se descargó un fichero suficientemente grande como para tener
una base de datos con otras "imágenes parecidas".
Sé que me salgo del tema, pero si hay una explicación corta y suficientemente sencilla para que un inculto como yo lo entienda, se agradecerá una pequeña explicación. O un enlace en su defecto.
Gracias

No te sales del tema, solo profundizas en él y es una buena pregunta. Las redes neuronales no tienen almacenadas imágenes ni necesitan acceder a ellas,
tienen almacenada la capacidad de generarlas. Las imágenes ya las vieron durante semanas (o meses) antes de que el programa se lanzara al mercado, en lo que es el "entrenamiento" de la red. Una vez la red ha sido entrenada es capaz de reproducir las formas que vio sin necesidad de tenerlas almacenadas
explícitamente. Ella guarda un modelo
latente muy simplifcado respecto a la cantidad de información con que fue entrenada, pero suficiente para replicar las imágenes vistas con muy poco error. Esto permite almacenar en un programita que cabe en tu PC una capacidad de proceso bestial, y aún así le cuesta un buen rato generar la imagen de salida.
Un ejemplo real de red neuronal que programé como ejercicio. Por supuesto es otra escala y complejidad de aplicación, pero aquí entrené una red neuronal para ser capaz de replicar un procesado de imagen arbitrario:
https://www.overfitting.net/2019/04/ing ... do-de.htmlEn esencia la red está almacenando todas las combinaciones de RGB origen a RGB destino en 8 bits, es decir para cada combinación RGB de entrada, la red es capaz de generar un valor RGB de salida emulando a un procesado dado. Es una transformación que requeriría para almacenarse de forma exacta de 256*256*256*3 valores numéricos, sin embargo la red neuronal que usé tenía 2 etapas de 64 nodos cada una. Sin entrar en honduras esto vienen a ser grosso modo 64*64 -> poco más de 4.000 coeficientes. Es decir con
4.000 numeritos se logra simular un proceso que requeriría de 256*256*256*3=
50 millones de numeritos para realizarse de forma exacta. Con la 1/12000 ava parte de complejidad, la red neuronal es capaz de replicar el procesado que aprendió con un error tan bajo que es indetectable.
La primera imagen es la imagen a procesar, la segunda imagen es el procesado original exacto, y la tercera el procesado generado por la red neuronal. Como puede verse los dos procesados son indistinguibles a la vista (cuando se analizan en detalle la desviación media no llega a medio nivel de 8 bits):
http://guillermoluijk.com/datosimagenso ... _64_64.jpgY le metí 64 nodos por etapa por aquello de afinar, pero con 32 nodos por etapa (lo que sería poco más de 1.000 numeritos), el resultado ya era el 99% del original. Aquí podéis ver cómo mejora el resultado a medida que aumentamos el número de nodos por etapa. La mitad izquierda es el procesado exacto que tratamos de emular, y la mitad derecha es el procesado obtenido con la red neuronal (los nodos son la cifra que aparece (2,2),... (16,16), (32,32), (64,64)):

Salu2!