ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO

FACULTAD DE INFORMÁTICA Y ELECTRÓNICA

ESCUELA DE INGENIERÍA ELECTRÓNICA EN CONTROL Y REDES INDUSTRIALES

DISEÑO Y CONSTRUCCIÓN DE UN MÓDULO DE PRUEBA PARA LA CONVERSIÓN ENTRE MODELOS RGB Y CMYK A TRAVÉS DE REDES NEURONALES

Trabajo de titulación, previo a la obtención del título de:

INGENIERO EN ELECTRÓNICA, CONTROL Y REDES INDUSTRIALES

Autor:

ITALO OMAR GAIBOR GUASTAY

Riobamba - Ecuador

2015

ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO

FACULTAD DE INFORMÁTICA Y ELECTRÓNICA

ESCUELA DE INGENIERÍA ELECTRÓNICA EN CONTROL Y REDES INDUSTRIALES

El Tribunal de Tesis certifica que: El trabajo de titulación: DISEÑO Y CONSTRUCCIÓN DE UN MÓDULO DE PRUEBA, PARA LA CONVERSIÓN ENTRE MODELOS RGB Y CMYK A TRAVÉS DE REDES NEURONALES, de responsabilidad de él señor Italo Omar Gaibor Guastay, ha sido minuciosamente revisado por los Miembros del Tribunal de Tesis, quedando autorizada su presentación.

NOMBRE FIRMA FECHA

Ing. Gonzalo Samaniego Ph.D.

DECANO, FACULTAD DE .............................. ..............................

INFORMÁTICA Y ELECTRÓNICA

Ing. Alberto Arellano

DIRECTOR, ESCUELA DE .............................. ..............................

INGENIERÍA ELECTRÓNICA

CONTROL Y REDES INDUSTRIALES

Ing. Franklin Samaniego

DIRECTOR, TRABAJO DE .............................. ..............................

TITULACIÓN

Ing. Msc. Fernando Mejía

MIENBRO, TRIBUNAL .............................. ..............................

DOCUMENTALISTA

SISBIB ESPOCH .............................. ..............................

Yo ITALO OMAR GAIBOR GUASTAY, declaro que el presente trabajo es de mi autoría y que hasta la presente fecha no se han hecho uso de métodos y técnicas similares a fin de resolver el problema aquí expuesto y presentarlo como trabajo para la obtención de ningún nivel académico.

Mediante esta declaración cedo mis derechos así como responsabilidades de propiedad intelectual referidos al presente trabajo a la ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO, según lo que establecen las leyes y reglamentos de propiedad intelectual y las normativas vigentes a la fecha en la ESPOCH

ITALO OMAR GAIBOR GUASTAY

DEDICATORIA

Este trabajo de principio a fin se lo dedico a mi madre, quien a estado a mi lado apoyando todo esfuerzo que he emprendido y de los cuales he podido salir bien librado.

Italo

AGRADECIMIENTO

A FRANKLIN EDUARDO SAMANIEGO RIERA, quien a dado el apoyo pertinente a la realización del presente trabajo como consejero y como director del mismo.

A mi familia quienes de una u otra manera han contribuido a la realización de mi proyecto de titulación

A mis muy apreciados amigos, quienes a través de sus ideas han aportado al presente trabajo.

Italo

CONTENIDO

ÍNDICE DE FIGURAS	x

ÍNDICE DE TABLAS	xiii

LISTA DE ABREVIATURAS Y SÍMBOLOS	xiv

RESUMEN	xv

SUMARY	xvi

INTRODUCCIÓN	1

CAPÍTULO I

1. MARCO TEÓRICO	7

1.1 Teoría del color desde el punto de vista fisiológico, espectral	7

1.1.1 Sistema visual humano, funcionamiento	7

1.1.2 Sistema visual humano, componentes	8

1.1.2.1 Córnea	8

1.1.2.2 Cristalino	9

1.1.2.3 El Iris.	9

1.1.2.4 Cuerpo Ciliar	9

1.1.2.5 Retina	10

1.1.2.6 Los foto-receptores	10

1.1.3 Colores Primarios	11

1.1.4 Colores Elementales	11

1.1.5 Modelos de color	12

1.1.5.1 Modelo de color RGB	13

1.1.5.2 Modelo de color CMYK	15

1.1.5.3 Otros modelos de color	16

1.1.6 Espectro Visible	16

1.1.7 Metamerismo	17

1.2 Redes neuronales	18

1.2.1 Orígenes y pasos importantes	19

1.2.2 Analogía, red neuronal biológica y red neuronal artificial	19

1.2.2.1 Red neuronal biológica	20

1.2.2.2 Red Neuronal artificial	20

1.2.3 Problema de Aprendizaje	22

1.2.4 Tarea de Aprendizaje	22

1.2.5 Perceptrón	22

1.2.5.1 Entradas	22

1.2.5.2 Parámetros	22

1.2.5.3 Función de Combinación	23

1.2.5.4 Función de Activación	23

1.2.6 Perceptrón multicapa	25

1.2.6.1 Arquitectura de la red neuronal	26

1.2.7 Función objetivo	26

1.2.8 Estrategias de entrenamiento	27

1.2.9 Algoritmo de entrenamiento	28

1.2.9.1 Optimización unidimensional y multidimensional	28

1.2.9.2 Descenso del Gradiente	29

1.2.9.3 Método de Newton	30

1.2.9.4 Gradiente Conjugado	31

1.2.9.5 Método Quasi-Mewton	32

1.2.9.6 Condiciones de parada	34

1.2.10 Regresión de Funciones	34

1.2.10.1 Conjunto de datos de entrada y objetivos	35

1.2.10.2 Perceptrón multicapa, criterios de dimensionamiento	35

1.2.10.3 Evaluación del error	36

1.3 Herramientas usadas.	37

1.3.1 Debian 7 (Wheezy)	38

1.3.2 C++	38

1.3.3 CMake	38

1.3.4 OpenNN	39

1.3.5 OpenCV	39

CAPÍTULO II

2. DISEÑO	40

2.1 De la red neuronal	40

2.1.1 Definición del problema y la solución tomada	40

2.1.2 Variables y sus relaciones	42

2.1.3 Condicionamientos generales	45

2.1.4 Diseño de la red neuronal	45

2.1.4.1 Conjunto de datos	45

2.1.4.2 Perceptrón Multicapa	46

2.1.4.3 Función de Error	46

2.1.4.4 Algoritmo de entrenamiento	47

2.1.4.5 Criterios de parada	48

2.2 El Módulo de Prueba	48

2.2.1 Requerimientos del módulo de prueba	49

2.2.2 Exploración de posibilidades	49

2.2.2.1 La primera idea	49

2.2.2.2 Segunda idea y modelo usado	50

2.2.3 Selección de los equipos y materiales a usar	50

2.2.3.1 De los contenedores para las pinturas	50

2.2.3.2 De las válvulas	51

2.2.3.4 De las bombas	52

2.2.3.5 De la estructura.	52

2.2.3.6 De los componentes electrónicos	53

2.2.4 Dimensionamiento mecánico del prototipo	54

2.2.5 Dimensionamiento eléctrico y electrónico del prototipo	54

CAPÍTULO III

3. IMPLEMENTACIÓN	55

3.1 Desarrollo de la red neuronal y su aplicación.	55

3.1.1 Entrenamiento de la red neuronal	56

3.1.2 El perceptrón multicapa y la aplicación final	58

3.2 Construcción del módulo de prueba	61

3.2.1 Operaciones de prueba	67

3.2.2 Ajustes	67

3.2.3 Puesta a punto	73

CAPÍTULO IV

4. PRUEBAS Y ANÁLISIS DE RESULTADOS	74

4.1 Pruebas	74

4.1.1 Uso de tecnología	74

4.1.2 La tecnología adecuada para el experimento	74

4.1.3 Descripción de las pruebas	75

4.1.4 Ensayos específicos	76

4.2 Análisis de resultados	76

4.2.1 Criterios a evaluar	77

4.2.1.1 Tiempo usado en el entrenamiento	77

4.2.1.2 Historial de cambio de los parámetros de la red neuronal	78

4.2.1.3 Validación de los errores	79

4.2.1.4 El gradiente histórico	80

4.2.1.5 Tasa de entrenamiento	80

4.2.2 Análisis sobre las pruebas	80

4.2.3 Pruebas sobre colores elementales.	81

4.2.4 Necesidad de compensaciones	86

4.2.5 Análisis de datos producidos por la red neuronal y por la formulación

matemática	87

CONCLUSIONES	92

RECOMENDACIONES	93

BIBLIOGRAFÍA

ANEXOS

Índice de figuras

Figura 1-1: Esquema del ojo humano	9

Figura 2-1: Esquema de la apariencia clínica del cristalino	10

Figura 3-1: Densidad de conos y bastones en diferentes partes de la retina	11

Figura 4-1: Modelo RGB como conjuntos	14

Figura 5-1: Modelo RGB, cubo de color	14

Figura 6-1: Modelo de color CMYK	15

Figura 7-1: Modelo CMYK como conjuntos	16

Figura 8-1: Ondas sinusoidales a 1, 10 y 100 hertz	17

Figura 9-1: Ondas sinusoidales a 10, 100 y 1000 hertz	17

Figura 10-1: Neurona Biológica,	20

Figura 11-1: Neurona Artificial.	21

Figura 12-1: Función de activación, Escalón Unitario	23

Figura 13-1: Función de activación, Escalón Unitario simétrico	24

Figura 14-1: Función de activación, sigmoide	24

Figura 16-1: Función de activación, lineal.	25

Figura 17-1: Modelo de red neuronal de un perceptrón multicapa	26

Figura 18-1: Representación geométrica de una función objetivo	27

Figura 19-1: Gradiente de la función objetivo	29

Figura 20-1: Proceso de entrenamiento con el método de Newton	31

Figura 21-1: Proceso de entrenamiento con el método de las métricas variables	34

Figura 22-1: Debian	38

Figura 23-1: Cmake	38

Figura 24-1: OpenNN	39

Figura 25-1: OpenCV	39

Figura 1-2: Distribución de los píxeles en TvCrt, PcCrt, Lcd.	42

Figura 2-2: Modulación por ancho de pulso	43

Figura 3-2: Conjunto de datos	46

Figura 4-2: Arquitectura de red usada	47

Figura 5-2: Condiciones de parada	48

Figura 6-2: Contenedores usados	51

Figura 7-2: Inyectores usados en el proyecto	51

Figura 8-2: Bomba sumergible	52

Figura 9-2: Estructura módulo de prueba, primeros pasos	53

Figura 1-3: Características del procesador usado	56

Figura 2-3: Librerías OpenNN	56

Figura 3-3: Definiciones de variables de OpenNN	56

Figura 4-3: Compilación y Arranque del entrenamiento de la RN	57

Figura 5-3: Fin del proceso de entrenamiento de la RN	58

Figura 6-3: Resultados tabulados	58

Figura 7-3: Definiciones y espacio de nombres de interfaz de usuario	59

Figura 8-3: Aplicación y su primera impresión	60

Figura 9-3: Aplicación, Procesamiento de imagen.	60

Figura 10-3: Compilación sin errores de la aplicación	61

Figura 11-3: Módulo, soporte de contenedores	61

Figura 12-3: Corte de piezas	62

Figura 13-3: Estructura terminada	62

Figura 14-3: Contenedor recipiente final	63

Figura 15-3: Sujeta mangueras	63

Figura 16-3: Instalación de inyectores	64

Figura 17-3 Inyector instalado	64

Figura 18-3: Instalación tuberías	65

Figura 19-3: Módulo, parte funcional terminada	65

Figura 20-3: Mangueras instaladas	66

Figura 21-3: Bombas sumergidas	66

Figura 22-3: Circuitos, prueba de actuadores	67

Figura 23-3: Gráficas de volúmenes de liquido en microlitros, generados por la acción de

bombas de 300L/H y 400L/H	70

Figura 24-3: Diferencias medidas en microlitros de las pruebas con frecuencias de 4Hz

y 10Hz	72

Figura 25-3: Diferencias en términos porcentuales	72

Figura 1-4: Iluminación sobre los objetos analizados	75

Figura 2-4: Tiempo de entrenamiento en cada iteración	77

Figura 3-4: Cambios de los parámetros en función de la iteración	78

Figura 4-4: Cambio de los parámetros en función de la iteración, vista complementaría	78

Figura 5-4: Valor final de los parámetros de la red neuronal	79

Figura 6-4: Decrecimiento del valor de evaluación del error	79

Figura 7-4: Histórico del gradiente	80

Figura 8-4: Tasa de entrenamiento	80

Figura 9-4: Distribuciones absolutas de los colores analizados en las pruebas,

afectados por la luz y el ruido	81

Figura 10-4: La peor aproximación realizada	82

Figura 11-4: La peor aproximación realizada vista desde la aplicación	82

Figura 12-4: La mejor aproximación	83

Figura 13-4: La mejor aproximación vista desde la aplicación	83

Figura 14-4: Un caso especial	84

Figura 15-4: Un caso especial visto desde la aplicación	84

Figura 16-4: Caso manipulado	85

Figura 17-4: Caso manipulado visto desde la aplicación	85

Figura 18-4: Pruebas representativas	86

Figura 19-4: Entradas Aleatorias	89

Figura 20-4: Comparación de resultados para el color cian.	89

Figura 21-4: Comparación de resultados para el color magenta.	90

Figura 22-4: Comparación de resultados para el color amarillo	90

Figura 23-4: Comparación de resultados para el color negro	91

ÍNDICE DE TABLAS

Tabla 1-1: Combinaciones de colores primarios.	12

Tabla 2-1: Esquema general de un conjunto de datos	35

Tabla 1-2: Equivalencias RGB CMYK	45

Tabla 1-3: Volumen de fluido dosificado, bomba de 300L/H con pulsos de 200mseg en

alto y 50mseg en bajo	68

Tabla 2-3: Volumen de fluido dosificado, bomba de 300L/H con pulsos de 80mseg en

alto y 20mseg en bajo	68

Tabla 3-3: Volumen de fluido dosificado, bomba de 400L/H con pulsos de 200mseg en

alto y 50mseg en bajo	69

Tabla 4-3: Volumen de fluido dosificado, bomba de 400L/H con pulsos de 80mseg en

alto y 20mseg en bajo	69

Tabla 1-4: Entradas usadas para el análisis de datos	87

Tabla 2-4: Salidas producidas por las formulas y por la red neuronal	88

LISTA de Abreviaturas Y SíMBOLOS

BFGS	Broyden, Fletcher, Goldfarb y Shanno
CMYK	Cyan, Magenta, Yellow and Key
CPU	Central Prossecing Unit
DC	Direct Current
DFP	Dadivon, Fletcher y Powel
Hz	Hertz
IA	Inteligencia Artificial
IC	Integrated Circuit
MDF	Medium Density Fibreboard
nm	NanóMetros
PWM	Pulse Width Modulation
Q	Instancias de entrenamiento
RGB	Red, Green and Blue
RMS	Rood Mean Square
RN	Red Neuronal
TCO	Tamaño de la Capa Oculta
TTL	Transistor Transistor Logic
Gradiente
Tasa de entrenamiento

Resumen

Las necesidades de negocios que: buscan especializar sus actividades en la corrección de fallas en la pintura de un vehículo o requieren personalizar la creación de una gama de productos con un color específico dictado por el cliente, hizo que se planteé como solución crear un módulo, quien a través de una cámara perciba el color a analizar y en una aplicación de software se devuelva el resultado de qué colores y qué cantidades de pintura debería usarse para lograr el color analizado. Teniendo como principales objetivos: diseñar un prototipo de prueba capaz de realizar conversiones entre modelos RGB y CMYK usando redes neuronales, para lo cual se debió: analizar las limitaciones que presenta la conversión entre modelos de color, usar redes neuronales para describir un modelo que permite la conversión entre modelos, implementar un prototipo electrónico de prueba del modelo desarrollado que permita realizar dichas conversiones entre los espacios RGB y CMYK y una vez superadas todas estas fases se debió realizar las pruebas de ajuste en el prototipo creado. Para la calibración del hardware en experimentación se trazó curvas de funcionamiento de los subsistemas, para la construcción de la red neuronal se partió de la información de los procedimientos que involucra una red neuronal y las necesidades del problema, hasta llegar a una definición generalizada de la red tipo perceptrón multicapa. De todo el trabajo sobresale la necesidad de incluir al color blanco dentro del espacio CMYK, lo cual podría ayudar a que el modelo sea de aplicación generalizada en diferentes industrias, y que en dependencia de la adecuada calibración de los sistemas se podrá mejorar los resultados finales de una aplicación de manera global.

Palabras clave: <REDES NEURONALES><TEORÍA DEL COLOR> <COLORES ELEMENTALES> <ALGORITMO DE ENTRENAMIENTO> <FUNCION OBJETIVO> <REGRESIÓN DE FUNCIONES> <SOFTWARE LIBRE> <CMYK> <RGB>

sumary

The modules were designed thinking about the necessities of business that seek to specialize their activities in correcting flaws in the depiction of a vehicle or require the development of a range of products with a specific color established by the client. It works through a camera that perceives the color that has to be analyzed and get the result in a software application. The results offer information about the colors and the amount of paint in order to get the needed color. The objective of this job is to design a testing prototype able to convert between models RGB and CMYK using neural networks, to achieve that, it was necessary to analyze the restrictions that presents in the conversion between the models of colors, using neural networks to describe a model which allows the conversion; implementing an electronic test prototype of the developed model that allows to convert between the specifications RGB and CMYK. Then overcome these phases, it was important to set test at the prototype. To calibrate the experimental hardware, an operating curve was traced at the subsystems. The information of the procedures which involves to a neural network and the necessities of the problem were the base to build the neural network reach a general definition of the network. One of the most important point of this job is the necessity of including the white color in the space of CMYK. It would help to generalize the application in different industries and depending of the right calibration of the systems could improve the final results on the application in general ways.

Key Words: <NEURAL NETWORK> <COLOR THEORY> <BASIC COLORS> <TRAINING ALGORITHM> <OBJECTIVE FUNCTION> <REGRESSION FUNCTIONS> <FREE SOFTWARE> <CMYK> <RGB>

introducción

Es interesante entender que el mundo, como el ser humanos lo observa, funciona en base a tres tonalidades de colores, como son: el rojo, el verde y el azul; modelados dentro del espacio de color RGB, que fue nombrado así por el uso de las siglas de los colores parte del modelo en inglés; y que en función de las combinaciones usadas con ellos se pudo apreciar diferentes colores en diferentes tonalidades.

Al usar los pigmentos rojo, verde y azul para intentar replicar un color en una imagen, el resultado distará mucho de lo que el observador fue capaz de apreciar, esto debido a que el ojo humano comprende el modelo RGB y para representar un color en un papel o en alguna superficie este modelo no demostró ser útil. Se desarrollo diferentes modelos que usan pigmentos con colores definidos a lo largo de la historia, como por ejemplo el amarillo, azul y rojo, este modelo se ha usado para enseñar en escuelas sobre escalas cromáticas y combinaciones de colores.

Dentro de este tema apareció también el espacio de color CMYK, nombrado de las siglas en inglés de los colores cian, magenta, amarillo y negro, el negro fue representado por “K” para evitar confusiones con “BLUE” del modelo RGB, el modelo CMYK se ha implementado ampliamente en tecnologías de impresión y formulado matemáticamente con respecto al modelo RGB.

La inteligencia computacional ha sido ampliamente explotada en diversas áreas de la industria, como son: la minería de datos, el control inteligente, la predicción de variables económicas de difícil modelado, el diseño óptimo de formas, el control óptimo, regresión de funciones, reconocimiento de patrones, entre muchos otros casos en los cuales la implementación de este tipo de herramientas ha demostrado ser de mayor eficiencia comparado con el control tradicional, sin desmerecer las excelentes cualidades de las técnicas de control usadas generalmente.

En específico las redes neuronales han sido capaces de realizar todas las operaciones mencionadas; debido a ciertas preferencias de él autor por este tipo de técnicas se decidió hacer uso de ellas en lugar de la formulación matemática existente para el manejo de las variables aquí usadas, como son las variables de los modelos RGB y CMYK, descritas más adelante y tratadas a lo largo del desarrollo del presente trabajo.

Motivación

Las evidentes necesidades de los sectores emergentes de la economía ha hecho que se piense en buscar soluciones cada vez más baratas y óptimas, de tal forma que dichas industrias tengan a la mano, no solo soluciones baratas sino también de alto contenido científico y tecnológico. La difusión de herramientas tanto de software como de hardware libres ha hecho posible la construcción de prototipos de bajo costo.

Los primeros pasos de la gran mayoría de los avances tecnológicos se han fundamentado en el uso de grandes esfuerzos de sus promotores, pero, en esencia sus prototipos han sido desarrollados basados en el uso de herramientas libres, así, de esta forma, es posible llevar a cabo un gran proyecto; por otra parte la comunidad científica cada vez más interesada en conocer y comprender el mundo ha hecho uso de herramientas basadas en desarrollos propios adaptados a las necesidades de investigación.

Los pequeños emprendimientos, haciendo referencia a la atención, mantenimiento y reparación de vehículos; los negocios dedicados a la creación de artículos plásticos o incluso aquellas micro empresas dedicadas a la personalización de productos y atención al cliente, en algún instante han tenido necesidad de: corregir el color deteriorado de un automóvil o reproducir el aspecto de una determinada pieza. En función de cubrir está necesidad muy costosa y ocasionalmente usada, se ha planteado la creación de un módulo de prueba capaz de definir los componentes de un determinado color.

Antecedentes

El sistema visual humano se ha constituido por foto-receptores: células encargadas de convertir las diferentes longitudes de onda del espectro en señales eléctricas que el cerebro reproduce como un color, estos transductores son los conos y los bastones, quienes se encuentran en el interior del ojo, y han formado patrones hexagonales, con mayor presencia a medida que se acercan a la retina en el caso de los conos, y con distribuciones irregulares siguiendo a los patrones de conos dentro de la fóvea, para el caso de los bastones; éstos presentan mayor sensibilidad a los colores verde azulados debido a la existencia de cierta proteína en su interior, en tanto que los conos pueden tener alguna de las opsinas: la eriptrosina, cloropsina y cianopsina mayormente sensibles a los colores rojo, verde y azul respectivamente.

Los colores que el ojo observa son producto de los distintos niveles de energía que tiene un haz de luz, con una longitud de onda determinada al chocar con un objeto, y de la capacidad de absorción propia del sistema visual humano; así, como de características tales como: la geometría de un material, las condiciones de luz, las características físico-químicas de los objetos analizados, entre otras; el espectro visible para un ser humano está entre los 380nm (nanómetros) y 780nm como límites mínimos y máximos respectivamente, alcanzando su sensibilidad pico a longitudes de onda cercanas a los 550nm es decir a los colores verdes; lo descrito anteriormente genera un fenómeno llamado metamerismo en el cual por ejemplo una pieza puede tener el mismo color que otra aplicando a cada una diferentes condiciones de luminancia o en dependencia del ángulo de visión, es decir podemos tener dos muestras de color semejantes sin que tengan los mismos niveles de energía.

Los distintos dispositivos electrónicos de reconocimiento de color y de captura de imágenes se han visto afectados por el metamerismo, con el fin de obtener mejores resultados se usa una propia fuente de luz, se aplican métodos como el mosaico de Bayer encargado de que con un solo sensor y aplicando una red de filtros 25% rojo 50%verde y 25% azul se pueda enviar a una red de fotodiodos los valores específicos de los colores, necesarios para reconstruir una imagen, para que luego de esto se aplique algoritmos de interpolación cromática basados en formulaciones matemáticas desarrollados para producir colores parecidos a lo que se observa en función de la longitud de onda, la absorción del foto receptor y la distribución espectral del color, evitando de esta forma que aparezcan cambios abruptos de color e impurezas.

Los diferentes medios de almacenamiento y reproducción de imágenes usan formatos como: el RGB, que es un modelo basado en la suma de rayos de luz rojo, verde y azul, este modelo es usado en la reproducción de colores en los monitores debido a la tecnología que se usa en ellos; mientras que en los medios de reproducción físicos tales como las impresoras se usa el modelo CMYK, modelo basado en la sustracción de luz mediante la presencia de agentes químicos que tienen los colores cian, magenta, amarillo y negro.

En ciertas áreas de la industria se requiere de una reconstrucción eficiente y barata de una muestra de color como por ejemplo en el área de mantenimiento y reparación de vehículos, al tener presencia de fallos en la pintura de tales maquinarias; o en la personalización de productos en diferentes aspectos tales como la pintura que desea que lleve una gama de tuberías de PVC o un conjunto de artículos plásticos un cliente; para lo cual se desarrolló un primer prototipo usando redes neuronales encargadas de gestionar las conversiones entre los modelos anteriormente mencionados; y electrónica para el adecuado control del proceso involucrado con la mezcla de los colores referidos al modelo CMYK.

Formulación del problema

¿Cómo proveer de herramientas técnicas de bajo costo capaces de remplazar un laboratorio de colorimetría para sectores emergentes de la economía que potencien los servicios y den valor agregado a los productos generados por pequeños emprendimientos que dedican sus actividades a la reparación de fallos en la pintura de vehículos y la personalización de los colores en la fabricación de productos?

Sistematización del problema

¿Cómo puede un pequeño taller de reparación de vehículos brindar un servicio eficiente en lo que se refiere a la corrección de defectos o fallas en la pintura del automóvil?

¿De qué forma un pequeño emprendimiento puede cumplir con las exigencias que presentan los clientes al personalizar un producto en lo referido al color que este llevará?

¿Cómo se puede lograr que pequeños negocios y talleres accedan a soluciones eficientes y de bajo costo capaces de remplazar laboratorios de colorimetría?

¿Cómo reducir los costos de operación de una pequeña industria, en lo referido al uso de soluciones privativas de hardware como de software?

Justificación

Justificación teórica

La tendencia del desarrollo de la tecnología muestra un interés creciente en el uso de herramientas de inteligencia computacional en aspectos como: las comunicaciones, robótica, el control de procesos, modelado de curvas económicas de difícil predicción, creación de sistemas expertos de auto aprendizaje, exploración para robots móviles, cálculo de rutas más cortas en el transporte, entre otros muchos campos, con el fin de remplazar en algunos casos las herramientas matemáticas y estadísticas de compleja resolución implementadas.

En este trabajo de grado se busca demostrar la eficiencia que tiene el uso e implementación de herramientas de inteligencia computacional tales como las redes neuronales, en la mejora del control de procesos, en el desarrollo de nuevas tecnologías, y en remplazar las actuales herramientas matemáticas creadas para la resolución de determinado problema, permitiendo que así sistemas específicos tengan la capacidad de aprender un proceso para luego resolverlo de manera rápida.

Justificación aplicativa

El adecuado desarrollo de este trabajo permitirá lograr una conversión eficiente entre modelos de color, para el caso práctico entre el modelo RGB y CMYK, para la determinación de los componentes de un color dentro del espacio de color CMYK.; logrando determinar así una respuesta de bajo costo computacional y principalmente reemplazar el uso de tecnologías costosas económicamente hablando por el uso de herramientas tanto de software como hardware libres en donde los requerimientos lo permitan, en apoyo al decreto 1014 emitido por la presidencia de la república el 10 de abril de 2008, añadiendo que no solo el sector público se ve beneficiado por el uso de este tipo de herramientas, sino que el sector privado también las puede explotar con el fin de ganar rentabilidad dentro de sus actividades.

Tomando como eje fundamental de aplicación los objetivos del plan del buen vivir: objetivo 10. Impulsar la transformación de la matriz productiva.

Política 10.1. Diversificar y generar mayor valor agregado en la producción nacional; en su lineamiento c. Consolidar la transformación productiva de los sectores prioritarios industriales y de manufactura, con procesos de incorporación de valor agregado que maximicen el componente nacional y fortalezcan las capacidad de innovación y de aprendizaje colectivo.

Política 10.2. Promover la intensidad tecnológica en la producción primaria, de bienes intermedios y finales; en su lineamiento a. Articular la investigación científica, tecnológica y la educación superior con el sector productivo, para una mejora constante de la productividad y competitividad sistemática, en el marco de las necesidades actuales y futuras del sector productivo y el desarrollo de nuevos conocimientos.

Y los lineamientos y programas de investigación establecidos por la Escuela Superior Politécnica de Chimborazo y la Escuela de Ingeniería Electrónica en Control y Redes Industriales.

Se pretende también desarrollar el espíritu crítico e investigativo y la aplicación de las técnicas, fomentando la existencia de ideas que apoyen o refuten los resultados obtenidos en el presente trabajo bajo el postulado de que lo expuesto aquí es únicamente la apreciación de un observador mas no la verdad absoluta en este tipo de desarrollos.

Objetivos

Objetivos generales

Diseñar y construir un prototipo de prueba capaz de realizar conversiones entre modelos RGB y CMYK a través de redes neuronales.

Objetivos específicos

Analizar las limitaciones que presenta la conversión entre modelos RGB y CMYK.

Usar redes neuronales para describir un modelo que permita la conversión entre espacios de color RGB y CMYK.

Implementar un prototipo electrónico de prueba del modelo desarrollado, que permita realizar las conversiones entre los espacios RGB y CMYK.

Realizar las pruebas de ajuste en el prototipo creado.

capítulo I

1. MARCO Teórico

Este capítulo describe el funcionamiento del sistema visual humano, así como sus diversos componentes y la forma en que interactúan para procesar las imágenes, además se ha buscado enfatizar el análisis de los colores desde el punto de vista espectral de tal forma que se puede comprender como una forma de onda se convierte en un rayo de luz y como en dependencia de la longitud de onda de una señal es posible visualizar un color. También se explican las nociones básicas de la teoría de las redes neuronales y en particular la del perceptrón multicapa, las diferentes formas de entrenarlo y los métodos más usados para evaluar lo efectivo del entrenamiento. Se abrió un paréntesis en este capítulo para mencionar las herramientas que se usaron en el desarrollo de este trabajo de titulación.

1.1 Teoría del color desde el punto de vista fisiológico, espectral

Los ojos como elemento sensorial presentan diversos miembros que hacen que la percepción visual sea única en cada persona, cada elemento se constituye de diferente forma, haciendo al sistema visual humano uno de los más complejos dentro de la fisiología del hombre, a continuación es descrito el funcionamiento de los ojos, así como sus miembros con relevancia especial dentro del ojo.

1.1.1 Sistema visual humano, funcionamiento

El sistema visual humano, está compuesto de foto-receptores: bastones y conos, los cuales son células encargadas de convertir la radiación electromagnética que produce la luz al chocar con un objeto observado en electricidad, que es transmitida al cerebro, quien se encarga de decodificarla y presentarla como una imagen en color; y lo constituyen además otros órganos que cumplen diferentes funciones en cada espacio por donde debe pasar la luz.

La luz debe recorrer cierto camino para poder llegar al cerebro y durante ese viaje debe pasar por: la córnea, el humor acuoso, el cristalino y el humor vítreo. Los principales elementos de refracción que tiene el ojo son: la córnea y el cristalino, donde las propiedades ópticas de las superficies refractivas son determinadas por la curvatura de cada elemento y por el índice de refracción que les corresponde.

La refracción de una onda (luz) se ve en el cambio de dirección y de velocidad que sufre la onda al pasar de un medio a otro, hablando de medios transparentes, como: el agua, el aire, el etanol, el vacío; lo cual se produce por la velocidad de propagación que tiene la luz en los distintos materiales.

El índice de refracción para ondas electromagnéticas se puede calcular de diferentes formas; en algunos casos, como por ejemplo para ondas de comunicaciones, el índice de refracción de la ionosfera se ve afectado por la cantidad de electrones libres por metro cúbico y por la frecuencia que se va a usar, también lo afectan la hora del día, la estación del año, las manchas solares, la altura, etc. para el caso de frecuencias visibles tomaremos el índice de refracción como la relación que existe entre la velocidad de la luz en el vacío y la velocidad de la luz en el material analizado.

1.1.2 Sistema visual humano, componentes

La figura 1.1 muestra de manera esquemática la distribución de los diversos componentes pertenecientes al ojo, los cuales son: fóvea, fibras zonulares, cámara posterior, conducto de schlemm, cámara anterior, humor acuoso, conjuntiva, córnea, iris, limbo, cristalino, cuerpo ciliar, esclera, coroides, retina, humor vítreo, nervio óptico.

A continuación se describirá brevemente algunos de los componentes del ojo que afectan mayormente al tratamiento de la información mediante la vista:

1.1.2.1 Córnea

Constituye la principal estructura refractiva del ojo, con alrededor del 70% del poder dióptrico, el poder dióptrico se refiere a la capacidad refractiva de la córnea, dentro de lo cual uno de los factores que determina la transparencia de la córnea es la longitud de onda de la luz visible, que afecta al tamaño de los componentes del estroma.

Figura 1-1: Esquema del ojo humano

Fuente: Fisiología ocular, Dr. Leonidas Traipe, Fuente:

http://www.oftalandes.cl/clases/Fisiologia_Ocular_-_Dr._Traipe.pdf

1.1.2.2 Cristalino

Capaz de modificar su curvatura a fin de adaptar la distancia focal del ojo entre el objeto observado y el infinito, en el caso de verse deteriorada esta capacidad se produce la presbicie, que por lo general aparece después de los 40 años mostrando dificultad para ver de cerca, al deteriorarse totalmente el cristalino se produce lo conocido como catarata.

1.1.2.3 El Iris.

Su estructura muscular actúa sobre la pupila, dilatándola o contrayéndola, de tal forma que puede variar la cantidad de luz que entra a la retina en alrededor de 64 veces, en 200 milisegundos aproximadamente, el músculo radial y músculo anular actúan sobre la dilatación y la contracción respectivamente, a través de diferentes sistemas.

1.1.2.4 Cuerpo Ciliar

Esta constituido por el músculo ciliar quien al contraerse hace que el cristalino aumente su radio de curvatura, permitiendo así el enfoque para la visión de cerca.

Figura 2-1: Esquema de la apariencia clínica del cristalino

Fuente: Fisiología ocular, Dr. Leonidas Traipe: http://www.oftalandes.cl/clases/Fisiologia_Ocular_-_Dr._Traipe.pdf

1.1.2.5 Retina

Es una proyección del cerebro que se especializa en tratar estímulos luminosos los cuales se trasmiten a través del nervio óptico al cerebro, hay tres tipos de células que participan en el tratamiento de la información lumínica: células bipolares, foto-receptores y células ganglionares; las células ganglionares emiten cierto nivel de voltaje que viaja al cerebro por medio de axones.

1.1.2.6 Los foto-receptores

Conos y bastones, están encargados de la visión diurna y nocturna respectivamente, debido a los diferentes umbrales de energía luminosa que usan cada uno de ellos, hay tres tipos de conos que responden a longitudes de onda diferentes, esto es provocado por la existencia de tres opsinas diferentes, lo cual permite la visión en color, las opsinas estimulan a los conos en longitudes de 420nm (color azul), 531nm (color verde) y 558nm (color rojo).

Figura 3-1: Densidad de conos y bastones en diferentes partes de la retina

Fuente: Fisiología ocular, Dr. Leonidas Traipe: http://www.oftalandes.cl/clases/Fisiologia_Ocular_-_Dr._Traipe.pdf

1.1.3 Colores Primarios

Los colores primarios en este estudio se definirán como los colores a los cuales las células foto-receptoras del sistema visual humano son sensibles, es decir el Azul, verde y rojo (Küppers, p. 25-32).

1.1.4 Colores Elementales

Hay ocho colores elementales, tres de ellos son los colores primarios mientras que el resto son las posiciones extremas de sensibilidad del ojo humano, entonces existen 6 colores cromáticos, que son: rojo, verde, azul, magenta, cian y amarillo; y 2 colores acromáticos: blanco y negro, esto se explica mediante una analogía binaria donde se usa los tres colores primarios como variables on/off, en este caso conviene imaginar un cuarto oscuro donde existen tres linternas que emiten los colores rojo, verde y azul y las tres señalan a un mismo punto, las linternas encendidas (on) se representaran con un “1” y las apagadas (off) con un “0”, ya que se usa lógica binaria se puede encontrar el numero de combinaciones posibles usando la fórmula:

donde: n: es el número de posibles estados, m: es el número de variables

Mediante la resolución de esta operación se tiene que el número de combinaciones es 8, lo cual lo expresaremos en la siguiente tabla:

Todos estos colores, de manera explícita se recogen y se explican mejor en las siguientes definiciones de los modelos de color.

Tabla 1-1: Combinaciones de colores primarios.

Rojo	Verde	Azul	Combinación
0	0	0	Negro
0	0	1	Azul
0	1	0	Verde
0	1	1	cian
1	0	0	Rojo
1	0	1	Magenta
1	1	0	Amarillo
1	1	1	Blanco

Fuente, Fundamentos de la teoría de los colores, Harald Küppers

1.1.5 Modelos de color

Un modelo de color es la formalización matemática de las leyes que dominan el uso y aplicación de diferentes modelos de color, la información como tal esta representada en cuantos de color en los que por lo general se usa codificaciones que van entre 0 y 100, esto en términos del porcentaje que aparece en una combinación de determinado color; o en el caso de un monitor, que use una profundidad de 8 bits, va de 0 a 255, esto depende de la cantidad de bits que se desee usar para representar un color. Por lo general las academias de arte y lugares donde se enseñe de colores visto de forma estética, no muestran gran aceptación a los modelos y a las combinaciones basadas en estos, ya que el arte no necesita formalización matemática para ser arte.

Previo a entrar en la definición de un modelo de color específico se debe tomar en cuenta ciertas condicionantes de un color como tal.

El color es una cualidad que se da a un objeto o material, así como la forma y su tamaño, pero, ¿Es correcto decir que el color de un material permanecerá constante al observador? La respuesta es que, un color no permanece constante en el tiempo, durante todas las 24 horas del día, ni durante todos los días del año; entonces al no poder definir un color constante es incorrecto asignar esto como una cualidad del material analizado.

Las circunstancias y factores que hacen que un color no se muestre de manera constante a un observador son, o tienen que ver con: las cualidades del sistema visual humano, de los índices de refracción de los materiales por donde debe pasar la luz hasta llegar a la córnea, como: el aire, cristales, el cristalino del ojo, del ángulo desde el cual pueda observar un material.

La diferenciación de colores incluso varia de observador en observador debido a las propias características fisiológicas que se presentan en los elementos de los órganos involucrados, esto es el comienzo para que se diga que un color es relativo, y mas que eso, el color es solo una percepción sensorial sujeta a diferentes variables.

Desde el punto de vista físico, lo único medible y no sujeto a la percepción de cada persona es, el análisis de la luz como una onda, en la cual sus atributos y propiedades se pueden determinar.

1.1.5.1 Modelo de color RGB

El modelo RGB es un modelo aditivo de luz, en donde se asume un fondo negro sobre el cual se combinan haces de luz de color rojo, verde y azul; el nombre de este modelo viene de las siglas en inglés de los colores antes mencionados (Red, Green and Blue), este modelo es la aproximación mejor lograda del sistema visual humano para usar en un monitor.

Los componentes de este modelo se ubican en un plano tridimensional de tal forma que el color puro aparece en uno de los ejes, es decir que a lo largo del eje “x” puede estar el verde, en el eje “y” el azul y en el eje “z” el rojo, esto da lugar a que se genere un cubo cuyas caras representan un color constante y las variaciones de los dos elementos restantes; en el vértice del cubo, opuesto al origen, aparece el color blanco, ubicado en el origen aparece el negro, dado esto, es posible configurar un color como un vector de tres posiciones que establezcan cada componente de un color.

Figura 4-1: Modelo RGB como conjuntos

Fuente, http://ramaymauriescuela.blogspot.com/2013/05/modelos-rgb-y-cmyk.html

La forma en la cual el contexto de este modelo es mejor explicado es como muestra la figura 5-1 donde se presentan el cubo anteriormente mencionado y las caras que lo conforman, además se ve que en las esquinas no mencionadas anteriormente están los colores cian, magenta y amarillo, pertenecientes al conjunto de los colores elementales, como se dijo, los colores representados por el modelo RGB se usan en computadores para describir una imagen, de tal forma que en dependencia del número de bits que se use se puede lograr mayores combinaciones de los colores primarios, es decir se puede lograr mayor número de colores, por ejemplo con 8 bits de profundidad de color podríamos lograr 16777216 millones de colores.

Figura 5-1: Modelo RGB, cubo de color

fuente, http://gva1.dec.usc.es/~antonio/docencia/2003tratamientocomputacionaldeimagenes/P2_mtc/P2_mtc.html

1.1.5.2 Modelo de color CMYK

Este modelo usa los colores cian, magenta, amarillo y negro, de donde toma las iniciales de sus traducciones al inglés, con excepción del negro, que fue remplazado por la “K” con el fin de evitar confusiones con el azul (blue) del modelo RGB, se puede decir que el modelo CMYK es un ajuste al modelo CYM, en el cual se lograba con la combinación de los tres, el color negro, pero de mala calidad, así es que se decidió agregar el color negro “puro” al modelo.

El modelo CMYK se usa principalmente en tecnologías de impresión en color, y es de esta forma como este modelo trabaja bajo la suposición de que el color del material de fondo es blanco.

Este modelo es de característica sustractiva, y opera en base a pigmentos con los colores mencionados, de esta forma al chocar un haz de luz con los pigmentos elimina ciertas componentes de la luz, con esto se logra enviar la sensación de los colores en RGB al ojo, haciendo posible la reproducción de imágenes en un papel con el uso de tecnologías de impresión.

Figura 6-1: Modelo de color CMYK

Fuente, http://www.enfocus.com/manuals/referenceguide/pp/11/eses/es-es/concept/c_aa1141452.html

En la figura 6-1 y 7-1 se puede observar como la combinación de los tres colores debería generar el negro, pero no es así, debido a que en las tintas usadas para este tipo de operaciones existen impurezas y se logra un color marrón, y que las combinaciones de dos en dos forman los colores del modelo RGB, de tal forma que más adelante se podrá usar algún modelo matemático para poder convertir un color dato en términos de RGB a CMYK

Como se ha visto los modelos RGB y CMYK usan colores elementales los cuales son extremos de sensibilidad del ojo humano como se observó en la figura 5-1, y con lo cual podría suponerse que pasar de un modelo al otro es una operación totalmente básica y que basta con usar los recíprocos de cada medición con respecto a su escala máxima, pero esto no implica un proceso bidireccional en el cual se pueda ir de RGB a CMYK y luego volver a RGB sin que existan pérdidas.

Figura 7-1: Modelo CMYK como conjuntos

Fuente, http://www.co-print.hu/nyomdai-tudastar/szinek

1.1.5.3 Otros modelos de color

Se ha enunciado algunos otros modelos de color como el YBR (amarillo, azul y rojo) como modelo de combinación de pigmentos, pero este modelo únicamente es usado a nivel de enseñanza básica de las nociones de bellas artes y pintura. Entre otros.

1.1.6 Espectro Visible

El espectro electromagnético esta compuesto por todas las frecuencias o longitudes de onda posibles de energía oscilante en el tiempo, y conformadas de campos eléctricos y magnéticos que en dependencia del lugar donde se propaguen encuentran más o menos dificultad para su transmisión, en el caso del espectro visible por el ser humano puede encontrar factores atenuantes en la propagación en dependencia del material o fluido en el cual se lo transmite, como el aire y su índice de refracción, o la córnea y su correspondiente índice.

Los componentes que definen a una forma de onda son: la frecuencia, el periodo, la longitud de onda, la amplitud y el desface para los modelados matemáticos, y para formas de onda físicamente realizables se añade la potencia o la energía, según se trate de una forma de onda de potencia o de energía, el valor RMS, las componentes de corriente directa (DC), entre otros.

El espectro visible es la sección de todo el espectro que el ojo humano puede percibir sin necesidad de instrumental especializado, como sucede en la observación de las diferentes radiaciones que emiten estrellas o agujeros negros; para el ser humano el espectro visible va desde los 400nm hasta los 700nm; por debajo de los 400nm aparece la luz ultravioleta, radiación cósmica, los rayos gamma y demás; por encima de los 700nm esta la luz infrarroja, la sección del espectro usada en las comunicaciones (onda celeste, onda terrestre), el sonido, entre otros.

A medida que una onda aumenta su frecuencia, incluso en los instrumentos de medición deja de parecer una forma de onda oscilante y empieza a parecerse a un rayo de luz como se puede ver en las siguientes figuras, donde se ha usado ondas sinusoidales de frecuencia de 1, 10, 100 y 1000 Hz (Hertz), en donde se puede apreciar de mejor manera como una onda se va convirtiendo en un rayo de luz a medida que la frecuencia aumenta y la longitud de onda disminuye.

Figura 8-1: Ondas sinusoidales a 1, 10 y 100 hertz

Fuente, El autor

Figura 9-1: Ondas sinusoidales a 10, 100 y 1000 hertz

Fuente, El autor

A medida que la longitud de onda disminuye el ojo humano se vuelve capaz de percibir estas ondas y durante esa disminución se puede observar los colores azul cerca de los 420nm, verde alrededor de los 531nm y rojo próximos a los 558nm.

1.1.7 Metamerismo

Es un fenómeno ligado a variables físicas, psicológicas y fisiológicas donde, un color puede tener cierta similitud a otro con diferente longitud de onda, en dependencia de la luz con la que se les ilumine, incluso se podría estar viendo un único objeto bajo diferentes condiciones de luz y el color en cada observación sería diferente.

Lo que produce el metamerismo son factores como la luz aplicada a los objetos, el ángulo de visión, las reacciones de los componentes químicos de los pigmentos a la luz aplicada, la geometría del material, el nivel de agotamiento de los ojos y sus componentes internos.

Entonces, la única forma de tener la certeza de que un color siempre es el mismo bajo diferentes circunstancias es medir su longitud de onda.

La percepción del color es subjetiva por todas las variables enunciadas y explicadas desde el inicio de este capítulo hasta este punto.

1.2 Redes neuronales

Las redes neuronales artificiales forman parte de un conjunto de herramientas dedicadas a hacer que el mundo real sea comprendido por una computadora o máquina especializada, conocidas en términos generales como Inteligencia Artificial o Inteligencia Computacional. La inteligencia computacional es una rama de la inteligencia artificial, donde aparecen las redes neuronales, algoritmos difusos, algoritmos evolutivos, entre otros.

En adelante para referirse a la Inteligencia Artificial se usará las siglas “IA” y no las siglas de Inteligencia Computacional debido al parecido que existe con las abreviaciones usadas para circuitos integrados (IC o CI), esto porque en algún punto de este informe pudiera ser necesario hablar de circuitos integrados.

Las técnicas que por lo general se usan y mas difundidas de la IA son: las redes semánticas, ontologías, redes bayesianas, lógica difusa, búsqueda de primero el mejor, algoritmo A, algoritmo IDA, algoritmo SMA, algoritmos voraces, algoritmos de ramificación y poda, algoritmo de mejora iterativa o búsqueda local, algoritmo de escala o máximo gradiente, algoritmo evolutivo, etc.

Muchas de estas herramientas se usan para, reconocimientos de patrones, búsquedas de rutas óptimas, optimización de funciones multivariable, control óptimo, diseño de formas, regresión de funciones, entre muchas otras aplicaciones que se le puede y se da a la IA.

En específico, las redes neuronales artificiales se usan para: regresión de funciones, reconocimiento de patrones, control óptimo, diseño óptimo de formas, optimización de funciones, y demás usos similares derivados de los mencionados anteriormente.

1.2.1 Orígenes y pasos importantes

Numerosos trabajos se han desarrollado desde el origen como tal de las redes neuronales en 1943, este primer paso en las redes neuronales lo dieron Warren McCulloch y Walter Pitts, pero, Alan Turing fue quien por primera vez planteó las nociones de una máquina inteligente.

Frank Rosenblatt, da inicio a la historia del perceptrón en 1957, un modelo ampliamente usado en reconocimiento de patrones, posee grandes cualidades para generalizar los elementos de aprendizaje; en 1959 se desarrolla un filtro adaptativo para eliminar ecos en las líneas telefónicas, este modelo fue llamado ADALINE (ADAptative LINear Elements)y fue creado por Bernard Widrow y Marcial Hoff.

En 1967 Stephen Grossberg desarrolla una red “Avalancha” que permitía el reconocimiento continuo del habla y aprender el movimiento de los brazos de robots. En 1969 Marvin Minsky y Seymour Papert, investigadores del MIT, lanzan un libro llamado “Preceptrons” donde se hacia un análisis matemático de las capacidades del perceptrón y sus limitaciones, generando como conclusión que expandir el perceptrón a múltiples capas no daría buenos resultados, lo que causó que el desarrollo de las redes neuronales artificiales decayera.

En 1977 se desarrolla un “Asociador lineal” que consistía en neuronas que suman sus entradas, esto lo realiza James Anderson; Teuvo Kohomen desarrolla un modelo similar al de Anderson tres años más tarde, pero de manera independiente. El neocognitrón se desarrolla en 1980, este modelo permitía el reconocimiento de patrones y fue emprendido por Kunihiko Fukushima.

Dos trabajos impulsan el interés en las redes neuronales artificiales en 1982; John Hopfield desarrolla una variación del Asociador Lineal, el cual es explicado matemáticamente y muestra como trabajan y las posibles aplicaciones; Teuvo Kohomen realiza un modelo que usa mapas de características, muy parecido a como ocurre en el cerebro, añadiéndole un vector de cuantificación de aprendizaje y un mapa de la organización propia del modelo. En 1986 se presenta el algoritmo back-propagation creador por Rumelhart, Hinton y Williams.

1.2.2 Analogía, red neuronal biológica y red neuronal artificial

El comportamiento de una neurona artificial busca simular el funcionamiento de una neurona biológica, y una red neuronal artificial se asocia de la misma manera en que varias neuronas biológicas se unen y producen respuesta o transmiten un determinado estímulo.

1.2.2.1 Red neuronal biológica

Las neuronas son los principales elementos del sistema nerviosos central, están interconectadas a fin de transmitir información de estímulos a través de zonas definidas, las respuestas a esos estímulos se generan por el trabajo de una red completa de neuronas y no de una sola neurona.

Las redes neuronales biológicas, funcionan en base de estímulos, recogidos por la sinapsis, que pasan los potenciales de acción por medio de procesos electroquímicos, provenientes de otras neuronas, a las dendritas de la siguiente neurona; un potencial de acción es un nivel de energía eléctrico, transmitido a fin de comunicar los diferentes estímulos a los que están expuestas las neuronas; las dendritas comunican la información recibida a la soma o cuerpo celular, donde será procesada, y responde con un potencial de acción a ser transmitido por el axón, el que usa las sinapsis para pasar los impulsos a las neuronas siguientes; cada neurona puede tener varias dendritas que hacen posible que a una neurona la existen diferentes estímulos.

1.2.2.2 Red Neuronal artificial

Las redes neuronales artificiales son entidades que poseen variadas entradas, organizados en una capa de neuronas llamada capa de entrada, poseen además neuronas de salida agrupadas en un conjunto conocido como capa de salida y pueden tener varias capas intermedias, organizados en columnas conocidas como capas ocultas; estas redes están compuestas por perceptrones, entidades equivalentes a las neuronas biológicas, y son la unidad básica de procesamiento de la información en la red.

Figura 10-1: Neurona Biológica,

Fuente, Neuronas y neurotransmisores,	http://depa.fquim.unam.mx/amyd/archivero/NEURONASYNEUROTRANSMISORES_1118.pdf

Una neurona (perceptrón) esta compuesta de varias entradas a las que le pertenece un conjunto de pesos sinápticos; equivalente a la soma de una neurona biológica se tiene una función de combinación donde las entradas del perceptrón serán multiplicadas por cada uno de sus pesos sinápticos respectivos y sumados entre sí y a un valor de ganancia, este resultado es evaluado en términos de una función de activación a fin de obtener la salida de la neurona.

Figura 11-1: Neurona Artificial.

Fuente, Roberto López, OpenNN User's Guide

Donde:

Los valores Xi, representan las entradas de la neurona,

Wi, son los pesos sinápticos asociados a cada entrada,

b, es un valor de ganancia en la neurona,

c, es la función de combinación,

a, es una función de activación, y

y es la salida de la neurona.

De este punto en adelante se debe aclarar que no se volverá a referirse a redes neuronales o neuronas biológicas, en específico se tratará de redes neuronales artificiales o perceptrones y simplemente se les llamará redes neuronales (RN) o perceptrón según sea el caso.

A partir de este punto, es importante indicar que, no se profundizará sobre los modelos matemáticos que se usa para una función objetivo o para un algoritmo de entrenamiento, y que solo se enunciarán las formulaciones más relevantes de los algoritmos, se explicará el funcionamiento y se señalará la aplicación dentro de este proyecto.

1.2.3 Problema de Aprendizaje

El problema de aprendizaje para una red neuronal, es formulado como la necesidad de buscar un perceptrón multicapa que optimice una función objetivo, usando un algoritmo de entrenamiento.

1.2.4 Tarea de Aprendizaje

Se define como la tarea para la que se entrena una red neuronal, ya sea el reconocimiento de patrones, la regresión de funciones, el control óptimo o cualquier actividad que deba cumplir una red neuronal.

1.2.5 Perceptrón

Es la unidad básica de procesamiento dentro de una red neuronal, para su debido funcionamiento consta de: entradas, pesos sinápticos, ganancia, función de combinación, y función de activación.

1.2.5.1 Entradas

Las entradas en los perceptrones, son un conjunto de valores, expresados dentro de un vector.

A partir de aquí los vectores serán denotados con letras mayúsculas, mientras que sus miembros usarán letras minúsculas y sus respectivos subíndices.

1.2.5.2 Parámetros

Los parámetros de una red neuronal son: los pesos sinápticos y la ganancia usada, los pesos sinápticos están ubicados dentro de un vector W, y la ganancia se la reconocerá por “b”, entonces:

1.2.5.3 Función de Combinación

La función de combinación se expresa como la suma de la ganancia del perceptrón con el producto punto de X y W.

o

Lo cual expresa que la función de combinación es igual a la ganancia, más la sumatoria de la multiplicación de los miembros de los vectores W y X, uno a uno, desde el primero hasta el enésimo miembro.

1.2.5.4 Función de Activación

Se define como la salida de el perceptrón en términos de su función de combinación, las funciones de activación pueden ser: escalón unitario, escalón unitario simétrico con respecto al eje x, función sigmoide, tangente hiperbólica, lineal, etc.

Función Escalón Unitario, la salida de la neurona será cero si el resultado de la función de combinación es menor que cero y uno en caso de que sea mayor o igual a cero.

Figura 12-1: Función de activación, Escalón Unitario

Fuente, Roberto López, OpenNN User's Guide

Función escalón unitario simétrico con el eje “x”, esta función indica que si el resultado de evaluar la función de combinación es menor que cero, la salida de la neurona será -1, mientras que si la salida de la función de combinación es mayor o igual que cero, la salida será uno.

Figura 13-1: Función de activación, Escalón Unitario simétrico

Fuente, Roberto López, OpenNN User's Guide

Función sigmoide, resulta de evaluar el resultado de la función de combinación en la ecuación:

Figura 14-1: Función de activación, sigmoide

Fuente, Roberto López, OpenNN User's Guide

Función tangente hiperbólica, en este caso, se evaluará el resultado de la función de combinación en la función tangente hiperbólica, de la siguiente manera,

Figura 15-1: Función de Activación, tangente hiperbólica

Fuente, Roberto López, OpenNN User's Guide

La función de activación lineal, aquí, la salida de la función de activación es igual a la salida de la función de combinación, así,

Figura 16-1: Función de activación, lineal.

Fuente, Roberto López, OpenNN User's Guide

1.2.6 Perceptrón multicapa

El perceptrón multicapa es uno de los muchos modelos que existen de redes neuronales y es la unión de varios perceptrones organizados en capas, a fin de que por lo general se observa una estructura formada por varias capas, dentro de las cuales deben existir, una capa de entrada, una capa de salida y por lo menos una capa oculta, cada uno de estos perceptrones están interconectados con todos y cada uno de los perceptrones de la capa anterior a el.

1.2.6.1 Arquitectura de la red neuronal

Las neuronas pueden ser organizadas de diferentes formas y la arquitectura de la red describe: el número de neuronas, la interconectividad entre ellas y su ubicación dentro de la red.

Para representar adecuadamente una red neuronal, es necesario usar un gráfico donde se deben mostrar: las neuronas y la conectividad de ellas, como el de la figura 17-1, donde cada neurona es representada por un nodo y la conectividad es representada por los caminos entre ellas, cada neurona esta debidamente nombrada, y los caminos están etiquetados de forma que se sabe de donde viene el flujo de información y hacia donde va.

Figura 17-1: Modelo de red neuronal de un perceptrón multicapa

Fuente, Roberto López, OpenNN User's Guide

1.2.7 Función objetivo

Como se dijo antes, el problema de aprendizaje del perceptrón multicapa es formulado, a fin de minimizar la función objetivo, y una función objetivo es asociada a una red neuronal para que de esta forma la red sea capaz de resolver un problema específico. La función objetivo depende del problema que se este resolviendo, y no existe una función objetivo generalizada.

Figura 18-1: Representación geométrica de una función objetivo

Fuente, Roberto López, OpenNN User's Guide

1.2.8 Estrategias de entrenamiento

Varios algoritmos de entrenamiento pueden formar una estrategia de entrenamiento, y una estrategia de entrenamiento es el procedimiento que se lleva a cabo para lograr entrenar a una red neuronal.

En este proceso pueden llevarse acabo tres diferentes algoritmos de entrenamiento a fin de que el sistema generado sea robusto, en donde puede existir un algoritmo de inicialización de los parámetros de la red, un algoritmo principal de entrenamiento, y un algoritmo encargado de refinar los parámetros.

El algoritmo de inicialización, se encarga de llevar los parámetros de la red neuronal cerca de una zona estable de la función objetivo, para este fin se suele usar búsquedas aleatorias o algoritmos evolutivos, que en realidad son muy robustos.

El algoritmo principal de entrenamiento, es el responsable de realizar la mayor parte del trabajo, donde usar el método Quasi-Newton representa una buena elección.

El algoritmo de refinamiento, se usa con el objetivo de lograr una gran precisión en el resultado final.

1.2.9 Algoritmo de entrenamiento

Existen varios algoritmos de entrenamiento, dedicados a entrenar a una red neuronal, para que sea capaz de cumplir propósitos o tareas específicas; un algoritmo de entrenamiento busca mejorar los parámetros de una red neuronal de forma que cumplan con la función objetivo declarada para una tarea.

Los algoritmos de entrenamiento funcionan en base a modelos matemáticos en los cuales se requiere minimizar los errores producto de la comparación de la salida deseada de una RN con la salida que en realidad está generando esa red.

1.2.9.1 Optimización unidimensional y multidimensional

Los algoritmos de entrenamiento pueden hacer uso de la optimización unidimensional o multidimensional, en realidad los parámetros de un perceptrón multicapa por su naturaleza generan espacios vectoriales, donde se debe buscar los valores de los parámetros que mejor se ajusten a la función objetivo.

La optimización unidimensional consiste en buscar valores máximos o mínimos de una función según sea el caso, la búsqueda matemática de esos valores consiste en derivar la función objetivo en función de los parámetros de la red neuronal e igualar el resultado de esto a cero, evaluando los factores producto de esta operación se conocerá los máximos o mínimos.

Durante la optimización de los parámetros es posible que alguno de los valores hallados sea un mínimo o máximo local, lo cual generará buenas respuestas de la red neuronal en ciertos vecindades, pero no en todo el dominio de la función considerada, es decir se perdería la capacidad de generalización propia de un perceptrón multicapa.

Un mínimo local es aquel valor que hace que la función tome su valor mas bajo pero solo en una vecindad, lo que matemáticamente se expresa como

siendo a y b los límites dentro de los cuales se evalúa la función.

Un mínimo global es aquel valor que hace que la función considerada tome su valor más bajo en todo el rango de la función.

Aquí se debe considerar que la operación de maximización o minimización son relativamente iguales debido a que el máximo de una función es igual al mínimo del negativo de esa función.

Para el caso multidimensional se recurrirá a el uso de el gradiente de la función objetivo en función de los parámetros, lo cual matemáticamente es similar a lo ya explicado.

Figura 19-1: Gradiente de la función objetivo

Fuente, Roberto López, OpenNN User's Guide

1.2.9.2 Descenso del Gradiente

Conocido también como el método de descenso más rápido, este método es principalmente aplicado en modelos de propagación lineal, donde las variables involucradas se comportan de manera no lineal.

El método del gradiente toma la siguiente estructura para la resolución de un problema: en primera instancia se debe tomar un punto dentro de la función evaluada, iniciando un contador “i” en cero; seguido de esto se debe escoger una dirección de descenso ; a esta operación se le agrega una tasa de entrenamiento en el caso de el uso en redes neuronales, o lo conocido como un paso en lo que se refiere a métodos numéricos de evaluación de funciones; luego, el nuevo punto a evaluar () será igual al punto actual () mas la tasa de entrenamiento por la dirección de descenso escogida; lo que en un modelo de algoritmo se vería así:

donde el signo negativo en el operador nabla indica un decremento yes la tasa de entrenamiento.

1.2.9.3 Método de Newton

El método de Newton, hace uso de las segunda derivada de la función objetivo, esta segunda derivada es conocida como la matriz hessiana; el método de Newton se comporta de una forma determinística.

La función objetivo se evalúa en términos de la serie de Taylor ampliamente usada en sistemas de control y demás disciplinas, como sigue:

en términos generales, para usarla en un perceptrón multicapa de forma iterativa se debe hacer:

aquí se incrementará i hasta que alguno de los criterios de parada sean satisfechos, se debe notar que en esta operación no participa directamente la matriz hessiana (segunda derivada de la función objetivo con respecto a los parámetros), sino su matriz inversa.

El vector que genera el producto punto entre la matriz hessiana inversa y el gradiente de la función objetivo se conoce como el incremento de Newton.

Si se considera que la matriz hessiana pudiera ser negativa, entonces el resultado avanzará hacia un máximo y no hacia un mínimo, de igual forma el algoritmo se torna inestable de tal forma que el resultado podría salirse del espacio válido de soluciones, para solucionar esto se agrega una tasa de entrenamiento, como sigue:

de esta manera se nota que la tasa de entrenamiento puede ser fija o calculada en cada iteración, y el producto punto entre la matriz hessiana inversa y el gradiente de la función objetivo se conocen ahora como la dirección de entrenamiento de Newton (d).

Figura 20-1: Proceso de entrenamiento con el método de Newton

Fuente, Roberto López, OpenNN User's Guide

Las operaciones como el calculo de la matriz hessiana y la matriz hessiana inversas son de un alto costo computacional y esto se incrementa al ser el proceso de carácter iterativo.

1.2.9.4 Gradiente Conjugado

Se puede decir que este es un método intermedio entre el método de Newton y el método del descenso del gradiente, pero capaz de converger mucho más rápido que el método de descenso del gradiente, a la vez se hace menor uso de procesos asociados con la evaluación, almacenamiento y la inversión de la matriz hessiana que usa el método de Newton.

Este método debe cumplir ciertas condiciones de ortogonalidad con respecto a la matriz hessiana para que su solución converja de manera rápida

para todo i diferente de j, donde “d” es un vector de direcciones de entrenamiento, y las direcciones de entrenamiento se pueden calcular como sigue,

Para todo i, es llamado parámetro conjugado, y existen varias formas de calcular el parámetro conjugado, que generan diferentes versiones del método de gradiente conjugado

,

parámetro conjugado de Fletcher-Reeves

,

parámetro conjugado de Polak-Ribiere

Los nuevos parámetros de la red neuronal se pueden conseguir con el siguiente cálculo,

donde cualquiera de los métodos de cálculo del parámetro conjugado presentados, satisfacen la ecuación.

1.2.9.5 Método Quasi-Mewton

Se le conoce también como el método de la métrica variable, este método es pensado como una solución al desgaste computacional alcanzado por el cálculo de la matriz hessiana y su inversa en el método de Newton, mediante el uso de una aproximación, calculada usando un conjunto de pasos.

La matriz de Hessian se la calcula por medio de la segunda derivada parcial de la función objetivo en función de los parámetros de la red, el principio fundamental de este método es aproximar la matriz inversa de Hessian por medio de una matriz G, usando únicamente la primera derivada parcial de la función objetivo, entonces si se logra que la nueva matriz G sea aproximada al inverso del hessiano, la formula de Newton se transforma en

donde la tasa de entrenamiento puede calcularse o establecer un valor fijo; esto implica que se generaran una serie de matrices G cada vez mas cercanas al hessiano inverso, para calcular la serie de matrices G se puede usar alguno de estos procedimientos:

Algoritmo de Dadivon-Fletcher-Powel (DFP),

Algoritmo de Broyden-Fletcher-Goldfarb-Shanno (BFGS)

el vector se calcula con:

Figura 21-1: Proceso de entrenamiento con el método de las métricas variables

Fuente, Roberto López, OpenNN User's Guide

1.2.9.6 Condiciones de parada

Al ser todos los métodos explicados iterativos debe existir por lo menos una condición que haga que el proceso de entrenamiento se de por terminado.

Los criterios de parada dependerán de la aplicación y el método de entrenamiento que se este usando y pueden ser que: se ha alcanzado el óptimo de la función objetivo, se ha alcanzado el tiempo máximo permitido para el entrenamiento, se ha alcanzado el número máximo de épocas permitidas en el proceso de entrenamiento, los parámetros de la red neuronal ya no incrementan, entre otros.

1.2.10 Regresión de Funciones

En un problema de regresión de funciones la red neuronal debe aprender de un conjunto de datos, donde se especificarán cuales son las entradas y cuales los objetivos que debe alcanzarse.

Es decir, la regresión de funciones busca generar una función a partir de un conjunto de datos, aquí las entradas especificadas en el conjunto de datos son valores que en algún instante podrían tomar las entradas de la red neuronal y los objetivos son las salidas que la red neuronal debería generar.

La resolución de un problema de regresión de funciones requiere de: un conjunto de datos donde existan datos de entrada y los objetivos buscados, un perceptrón multicapa, una función de evaluación del error, un algoritmo de entrenamiento y un método de corroborar los resultados obtenidos.

1.2.10.1 Conjunto de datos de entrada y objetivos

Como se dijo antes, la red neuronal aprende de un conjunto de datos donde se expresan las entradas y los objetivos a alcanzar, el conjunto de datos lo forman un subconjunto de n variables de entrada y m objetivos, que componen Q instancias, en forma general se puede ver un conjunto de datos como en la tabla 2-1

Tabla 2-1: Esquema general de un conjunto de datos

Fuente, Roberto López, OpenNN User's Guide

De el conjunto de datos es conveniente que se tome tres subconjuntos: el primero dedicado exclusivamente para el entrenamiento de la red neuronal, el segundo subconjunto se usará para la validación de los parámetros resultantes de la red neuronal y el último se usará para realizar pruebas. Los porcentajes que normalmente se usan son: 60% de las instancias se usa para el entrenamiento de la red, un 20% para la validación de los resultados y el porcentaje restante para las pruebas del sistema. Los datos se pueden asignar a un subconjunto de forma aleatoria o por criterio del diseñador.

1.2.10.2 Perceptrón multicapa, criterios de dimensionamiento

Como se dijo en la sección 1.2.6 el perceptrón multicapa debe tener una capa de entrada, una capa de salida y por lo menos una capa oculta, para el caso de una regresión basada en un conjunto de datos, el número de entradas de la red neuronal (perceptrón multicapa) podría ser el número de entradas existentes en el conjunto de datos, el número de salidas de la red neuronal podría ser el número de objetivos que hay en el conjunto de datos, el tamaño y la cantidad de capas ocultas esta a discriminación del diseñador, pero, por lo general una capa es suficiente para una regresión y el tamaño de la capa oculta se puede estimar en base al n número de entradas y al m número de salidas, de la siguiente forma

el tamaño de la capa oculta usando este método es solo empírico, pero resulta en una buena aproximación y usa la complejidad del problema para calcularse.

1.2.10.3 Evaluación del error

La evaluación del error es un elemento necesario en el diseño de una red neuronal, de esta manera es como se conoce que los parámetros que la red neuronal va tomando época tras época son capaces de generar una buena aproximación convergente en el conjunto de datos evaluado.

Las funciones para la evaluación del error comúnmente usadas son:

El Error Cuadrático

Es de las funciones mas usadas en el caso de las regresiones porque permite tratar a la función objetivo como una función continua y diferenciable, permitiendo evaluarla en el subconjunto de datos de entrenamiento.

,

La expresión evalúa el error a lo largo de todas las instancias Q del conjunto de datos de entrenamiento, y el error E se expresa como la sumatoria de los cuadrados de la resta de la salida que produce una entrada menos el objetivo , además el gradiente y hessiano del error se pueden calcular usando el algoritmo de retro propagación del error (back-propagation).

El Error Medio Cuadrático

Presenta las mismas ventajas que el error cuadrático, y mejora en el sentido de que el error medio cuadrático no se ve afectado por el tamaño del conjunto de datos evaluado.

La raíz del error medio cuadrático

El Error Cuadrático Normalizado

donde es la media del objetivo evaluado del conjunto de datos, lo cual se puede calcular de las siguientes maneras:

donde es la media, es la desviación estándar, min es el mínimo y max es el máximo referido a los objetivos del subconjunto de entrenamiento. y este método no muestra sensibilidad al tamaño del conjunto de datos.

Se debe indicar que todos los métodos de evaluación del error expuestos aquí permiten el cálculo del gradiente y el hessiano del error por medio del algoritmo de back-propagation.

1.3 Herramientas usadas.

Las herramientas que se usó en este desarrollo fueron, C++, CMake, OpenNN y OpenCV, todo esto corriendo en una plataforma GNULinux.

1.3.1 Debian 7 (Wheezy)

Una de las distribuciones linux más usadas y con mayor compromiso de los desarrolladores alrededor del mundo, que mantiene un fuerte entusiasmo con el software libre y el desarrollo, con mas de cuarenta y tres mil paquetes incluidos en sus repositorios.

Debian actualmente va por la versión 8 de su distribuciones conocida con el nombre clave “Jessie”

Figura 22-1: Debian

Fuente: https://www.debian.org/index.es.html

1.3.2 C++

Es un lenguaje de programación orientado a objetos creado en los años 80s, de amplias capacidades y la base para el desarrollo científico de muchos aplicaciones y otros lenguajes de programación; es una versión mejorada de C

1.3.3 CMake

Cmake es un compilador de código fuente robusto y multiplataforma, puede ser usado en equipos que corren con Mac, windows o linux, lo cual lo hace muy versátil.

Funciona en base a archivos encargados de gestionar la configuración de los paquetes usados y los paquetes generados, es capaz de trabajar con librerías estáticas o dinámicas, todos estos procesos son programados en un archivo CMakeLists.txt o en un archivo MakeFile.

Figura 23-1: Cmake

Fuente: http://www.cmake.org/

1.3.4 OpenNN

Son un conjunto de librerías que proporcionan funciones objetivo y algoritmos de entrenamiento eficaces para un red neuronal tipo perceptrón multicapa, basadas en el lenguaje de programación C++.

Figura 24-1: OpenNN

Fuente: http://opennn.cimne.com/

1.3.5 OpenCV

Son un conjunto de herramientas de visión artificial, desarrolladas en un principio por Intel, tienen en sus librerías una gran cantidad de procedimientos dedicados al procesamiento de imágenes, seguimiento de objetos y hasta visión estereoscópica.

Figura 25-1: OpenCV

Fuente: http://opencv.org/

Capítulo II

2. Diseño

Este capítulo muestra todas y cada una de las condiciones que se ha usado para crear la red neuronal, así como el módulo de prueba, se explica el por qué de usar cada elemento durante la etapa de diseño y a que necesidad responde dentro del aspecto general del proyecto, se evalúa las mejores opciones que es posible usar para el módulo de prueba y para la red neuronal.

2.1 De la red neuronal

La red neuronal es un elemento que ha sido cuidadosamente diseñado, respondiendo a las necesidades propias del problema, se consideró aspectos como: el desgaste computacional que genera el proceso de entrenamiento, el conjunto de variables de entrada y salida, las condiciones de parada adecuadas, los métodos y procedimientos para realizar el entrenamiento y la evaluación del error en la red neuronal, la forma en la que se obtendría información para el entrenamiento y como se generarían los datos estadísticos del entrenamiento sobre el perceptrón multicapa, y la aproximación matemática debidamente formulada que actuaría como elemento de comparación entre los resultados obtenidos y lo que las ecuaciones arrojan.

2.1.1 Definición del problema y la solución tomada

¿Cómo proveer de herramientas técnicas de bajo costo capaces de remplazar un laboratorio de colorimetría para sectores emergentes de la economía que potencien los servicios y den valor agregado a los productos generados por pequeños emprendimientos que dedican sus actividades a la reparación de fallos en la pintura de vehículos y la personalización de los colores en la fabricación de productos?

Se consideró que la manera en que los pequeños negocios pueden operar adecuadamente es en base a la transferencia de conocimientos entre universidades y politécnicas del país y los sectores emergentes de la economía ecuatoriana, de tal forma que los esfuerzos realizados por los estudiantes respondan a necesidades específicas del sector productivo, estos esfuerzos deben ser encaminados hacia el uso de herramientas no privativas de tal forma que los costos de desarrollo se vean minimizados y se potencie la capacidad creativa de los participantes de los proyectos.

¿Cómo puede un pequeño taller de reparación de vehículos brindar un servicio eficiente en lo que se refiere a la corrección de defectos o fallas en la pintura del automóvil?

Para dar solución a este necesidad se debe minimizar los tiempos de producción o el tiempo en que los encargados de las operaciones den solución a los requerimientos del cliente, de tal forma que como respuesta se planteó la creación de un módulo que permita obtener los colores que combinados den la respuesta visual deseada.

¿De qué forma un pequeño emprendimiento puede cumplir con las exigencias que presentan los clientes al personalizar un producto en lo referido al color que este llevará?

Cada exigencia de un cliente debe ser resuelta de la mejor forma, en este sentido se adecuado eliminar los espacios de prueba y error que existen en el intento de personalizar una gama de productos y a esto se responde con la creación de un elemento que sea capaz de describir los componentes de un color, mediante el uso de redes neuronales.

¿Cómo se puede lograr que pequeños negocios y talleres accedan a soluciones eficientes y de bajo costo capaces de remplazar laboratorios de colorimetría?

El aprendizaje de una red neuronal puede remplazar los experimentos dentro de un laboratorio y contemplar la experiencia ganada en un entorno controlado, además se puede reducir costos mediante el uso de tecnologías libres.

¿Cómo reducir los costos de operación de una pequeña industria, en lo referido al uso de soluciones privativas de hardware como de software?

La solución que se planteó es el uso de herramientas libres tanto de hardware como de software, de tal forma que el costo más grande que se puede alcanzar sería el uso de la mano de obra debidamente entrenada para operar los equipos y aplicaciones.

2.1.2 Variables y sus relaciones

Las variables que se trató en este proyecto fueron, las variables deducidas en la sección 1.1.4, colores elementales: Rojo, Verde, Azul, cian, Magenta, Amarillo, negro (K) y blanco.

En la secciones referidas a los modelos de color, secciones 1.1.5.1 y 1.1.5.2, se señaló por primera vez en este trabajo los ámbitos de aplicación de cada modelo; para el modelo RGB le correspondieron aplicaciones donde se hace uso de luz para generar colores, tales como pantallas, monitores, etc.

Se mencionó además que el color generado de esta forma tiene su profundidad en dependencia de la cantidad de bits o cuantos de luz que podría ser capaz de generar una computadora.

Teóricamente, los modelos de color permitirían una gama infinita de colores, pero a esto lo limitan las capacidades propias del sistema de mediciones que se use para generar los cuantos de color. En el caso de una pantalla LED, muy usada, el principio de funcionamiento se basa en un sistema de tres diodos emisores de luz (LED) conocidos en este ámbito como píxeles, como los de la figura 1-2, donde en dependencia de la potencia que se suministre a los diodos, se logrará diferentes colores.

Figura 1-2: Distribución de los píxeles en TvCrt, PcCrt, Lcd.

Fuente: http://avacablog.avacab-online.com/el-ccd-donde-empiezan-todas-las-imagenes-reales/

Para tener la capacidad de controlar la potencia que consumirá un LED se usa un controlador basado en la modulación por ancho de pulso (PWM, figura 2-2), pero, un diodo tiene voltajes y corrientes umbrales diferentes de cero voltios, cero amperios, lo que haría que no sea aprovechable cierta cantidad de anchos de pulsos, incapaces de producir la corriente y voltaje umbral de cada diodo, esto deteriorará la resolución de los colores cercanos a el color negro. En dependencia de la resolución del controlador PWM también variaran los colores generados y la cantidad de colores.

Figura 2-2: Modulación por ancho de pulso

Fuente: http://www.protostack.com/blog/2011/06/atmega168a-pulse-width-modulation-pwm/

De igual forma para la reproducción de colores (modelo de color CMYK) en tecnologías de impresión, se presentaran ciertas dificultades relacionadas con la capacidad de medir las cantidades de pigmentos o fluidos que se usan.

Se partió de lo mencionado en la sección 1.1.3 (Colores primarios), y la sección 1.1.4 (Colores elementales) y se hizo uso de la tabla 1-1 (Combinación de colores primarios), para poder deducir, que los componentes del espacio de color CMYK son los recíprocos del espacio RGB, por lo tanto,

ec.: (1.2)

ec.: (2.2)

ec.: (3.2)

donde, r pertenece al rojo, g representa al verde y b se asoció con el azul, se debió considerar que las variables r, g y b estaban entre cero y uno, lo cual hizo necesario transformar los colores dados en términos de la profundidad de bits usada (R es rojo, G es verde y B es azul), de forma que

ec.: (4.2)

ec.: (5.2)

ec.: (6.2)

aquí las variables mayúsculas son variables que están entre 0 y, donde n es el número de bits de la profundidad de color; y las variables minúsculas, son variables comprendidas entre cero y uno. Las variables c, m, e y están comprendidas dentro del intervalo de cero y uno ambos incluidos , de tal forma que se hizo fácil expresarla en términos de cantidades de pigmentos o volúmenes de tinta.

Como se mencionó en la sección 1.1.5.2, la combinación de los colores cian (c), magenta (m) y amarillo (y) generan un color negro de mala calidad, por lo que se hace necesario incluir la variable K, que para el modelo CMYK se calcula por medio de

ec.: (7.2)

entonces, las ecuaciones 1.2, 2.2 y 3.2 se modifican de la siguiente manera:

ec.: (8.2)

ec.: (9.2)

ec.: (10.2)

Las ecuaciones 7.2, 8.2, 9.2 y 10.2 representan los componentes dentro del espacio CMYK.

Se observó que el calculo de K mediante la ecuación 7.2 parecía ser una aproximación empírica de la componente negro del modelo CMYK, pero es una muy buena aproximación.

La componente K podría calcularse tomando los componentes r, g y b de un color diferente al blanco como los componentes de un vector espacial () y los componentes r, g y b del color blanco como un vector extremo (), de tal forma que es posible calcular la proyección del vector sobre . Las componentes de esta proyección representarían al vector espacial como una escala de grises para los colores rojo, verde y azul, mientras que la diferencia de restar el módulo de la proyección de sobre , de el módulo derepresentaría la componente K.

2.1.3 Condicionamientos generales

Se ha propuesto realizar la conversión entre modelos RGB y CMYK a través de una red neuronal, para lo cual se debió considerarse que:

La formulación matemática es una buena aproximación para la conversión, pero al evaluarla no logra las mismas respuestas que las tablas comercialmente existentes, como la de la tabla 1-2

Tabla 1-2: Equivalencias RGB CMYK

Fuente: https://cosassencillas.wordpress.com/2007/01/30/equivalencias-pantone-cmyk-rgb/

La red neuronal debe ser una red capaz de manejar los datos obtenidos de las ecuaciones 7.2, 8.2, 9.2 y 10.2 , y realizar una adecuada generalización de la información contenida en los datos, con el fin de obtener buenas predicciones para ejemplos diferentes de los ya usados.

2.1.4 Diseño de la red neuronal

Dados los condicionamientos generales, se buscó una red neuronal que cumpla lo anteriormente expuesto, ya que teniendo un conjunto de datos de entradas y salidas, se observó que la red neuronal adecuada es un perceptrón multicapa, capaz de resolver un problema de regresión de una función como el planteado.

2.1.4.1 Conjunto de datos

Se hizo uso de un conjunto de datos de 2042 instancias, donde las instancias la formaron datos simulados generados a partir de las ec. 7.2, 8.2, 9.2 y 10.2; este conjunto de datos esta compuesto de 3 variables de entrada y 4 objetivos.

Figura 3-2: Conjunto de datos

Fuente, El autor

2.1.4.2 Perceptrón Multicapa

Según lo descrito en la sección 1.2.10.2, se eligió un perceptrón multicapa de tres entradas, 4 salidas y una capa oculta de 5 neuronas.

Dando como resultado una arquitectura de red como la de la figura 4-2, donde la red es una feed-forward (alimentada hacia adelante).

2.1.4.3 Función de Error

La sección 1.2.10.3 describe los métodos de mayor trascendencia al evaluar el error dentro de una función objetivo, el error cuadrático, como se dijo produce una buena estimación del error, pero muestra cierta sensibilidad al tamaño del conjunto de datos evaluado, mientras que en el error cuadrático medio el problema de la sensibilidad a el tamaño de datos desaparece, lo mismo que para la raíz del error cuadrático medio.

Figura 4-2: Arquitectura de red usada

Fuente, El Autor

El error cuadrático normalizado no muestra sensibilidad al tamaño de los datos, y además este método mostró que no necesitaba preprocesamiento de los datos, por lo tanto como función de evaluación del error se eligió evaluarla por medio del error cuadrático normalizado.

2.1.4.4 Algoritmo de entrenamiento

El algoritmo del descenso del gradiente mostró matemáticamente hablando una buena aproximación a la solución deseada, debido a que evalúa el error cerca de los puntos críticos de la función objetivo; el método de Newton es más eficiente en términos matemáticos ya que usa el gradiente y el hessiano para hallar los parámetros de la red, si se hace una analogía con la gráfica de una curva obtenida por medio de la primera y segunda derivada, se puede notar que el método de Newton busca el óptimo de la función usando como información de partida los puntos críticos de la función por medio del gradiente (primera derivada parcial) y evalúa la dirección de entrenamiento usando los puntos de inflexión de la curva por medio del hessiano (segunda derivada parcial).

El inconveniente de este método es el enorme desgaste computacional que requiere para lograr obtener, el gradiente, el hessiano y el inverso del hessiano, lo cual hizo que se tome en cuenta otro método; la mejor opción fue el método de las métricas Variables, que usa lo robusto del método de Newton, pero reduce el costo computacional a través de una aproximación del hessiano inverso, esto hizo que el algoritmo de entrenamiento Quasi-Newton se presente como el de mejores cualidades para la solución de un problema de regresión de funciones en un perceptrón multicapa.

2.1.4.5 Criterios de parada

Los criterios de parada que se eligieron fueron:

1. El número máximo de iteraciones

2. El incremento mínimo de la normal de los parámetros

3. Tiempo máximo de entrenamiento.

Para la tasa de entrenamiento se uso el método de Brent, que consiste en, buscar una parábola que a través de interpolación numérica reduce los puntos exteriores de la parábola hasta que sean menores que cierta tolerancia establecida, entre el valor actual de la tasa de entrenamiento y el valor pasado.

Figura 5-2: Condiciones de parada

Fuente, El autor

2.2 El Módulo de Prueba

La necesidad de corroborar los datos y resultados obtenidos con la red neuronal hizo que se vuelva imprescindible un equipo desarrollado específicamente para este proyecto.

El módulo de prueba que se creó cumple con las especificaciones únicas de este trabajo, refiriéndose a la precisión de las medidas, es de control relativamente fácil y consumos moderados de energía eléctrica, fue pensado de tal forma que no ocupe demasiado espacio y no sea muy pesado.

Este equipo fue creado para trabajar con tinta, de características similares a las usadas en tecnologías de impresión.

2.2.1 Requerimientos del módulo de prueba

El módulo de prueba debió cumplir con las siguientes especificaciones:

Ser capaz de entregar dosis homogéneas de cada color requerido.

Debe ser capaz de estar activo durante el tiempo que puedan tomar las pruebas.

Debe ser de fácil manipulación.

Debe ser susceptible de control a través de una computadora.

Debe ser duradero, y, en lo posible,

debe ser de bajo costo (sin que con esto se sacrifique los puntos anteriores).

2.2.2 Exploración de posibilidades

El factor al que se le dio la mayor importancia fue a la capacidad de generar dosis iguales de cada color, debido a que esto haría que los resultados sean mejor apreciados, con esta idea en mente se busco posibilidades y tecnología capaz de realizar esto.

2.2.2.1 La primera idea

Propuso hacer uso de un sistema de jeringuillas, donde el cuerpo debería ser lo suficientemente resistente como para poder anclarlo a una superficie sin que se deforme, en el caso de usarse algún cuerpo metálico, el componente debería ser tratado de tal forma que pudiera estar inmerso en líquidos sin oxidarse.

A el vástago de la jeringuilla debería acoplarse un sistema cremallera-engrane que permitiera iniciar la dosificación de forma automatizada usando un motor paso a paso o un servo motor.

Para que el sistema de jeringuillas pudiera ser usado, debería tener forma de recargar el liquido, sin fugas y sin mover la jeringuilla de su empotramiento, conservando el vacío interno, de tal forma que debería hacerse un agujero en el costado de la jeringuilla, cerca de donde iría una aguja, para conectar una válvula de control de flujo de dos vías; el otro extremo estaría conectado a un tanque, en el extremo de la aguja debe existir una segunda válvula, para que en el momento de recargar el liquido no pueda entrar aire al sistema.

2.2.2.2 Segunda idea y modelo usado

En esta posibilidad se pensó en hacer uso de una válvula en la que en estado abierto no permitiera el paso de fluidos por acción de la gravedad, de esta forma se controlaría mecánicamente la emisión de fluidos, y para mover el fluido debería usarse una bomba hidráulica que mueva el fluido del contenedor hasta la válvula y a través de ella.

Este ultimo modelo plantea la solución de forma adecuada, ya que no permite que el fluido salga de su cause normal y controlado, el inconveniente fue conseguir una válvula de las características mencionadas.

En adelante se hablará de cada componente usado en la construcción del módulo y el porque de su uso, sin darle importancia a los usos que por lo general se le da.

2.2.3 Selección de los equipos y materiales a usar

Cada componente fue cuidadosamente pensado a fin de responder a una necesidad específica del sistema y la forma en que serán usados.

2.2.3.1 De los contenedores para las pinturas

Los contenedores fueron inicialmente pensados de algún material metálico, pero el hecho de que iban a ser llenados de líquidos que pudieran deteriorarlos hizo que se opte por materiales plásticos.

El hecho de que uno o todos los contenedores llegasen a oxidarse afectaba a la especificación de larga durabilidad del equipo en general, y a la calidad del fluido; el fluido se veía afectado debido a la herrumbre y demás sedimentos producto de la oxidación de los metales; se debió tomar en cuenta que es más barato remplazar un contener plástico que uno metálico y principalmente que un contenedor plástico no produciría sedimento alguno.

Figura 6-2: Contenedores usados

Fuente, el autor

2.2.3.2 De las válvulas

En busca de la precisión que se requirió para construir el modulo se tubo que observar industrias de trayectoria, es así que se dio con la industria automotriz, en donde para mover un motor de combustión interna se debe generar explosiones controladas de cantidades muy precisas de combustible.

Los actuadores que facilitan el trabajo del motor son los inyectores, que antiguamente tenían un control mecánico basado en una leva, que movía las camisas del inyector permitiendo el paso a presión del combustible, actualmente, los inyectores son controlados de manera electrónica a través de un solenoide, los inyectores no deben permitir bajo ninguna circunstancia el paso de combustible en estado cerrado, y en estado abierto solo pasara combustible a presión.

Estas características hicieron que los inyectores se conviertan en el candidato ideal para el trabajo de dosificación de las magnitudes de pintura requeridas, el único inconveniente fue el costo que representan, al ser componentes de precisión de un vehículo.

Figura 7-2: Inyectores usados en el proyecto

Fuente, El autor

2.2.3.4 De las bombas

La necesidad de presión para trabajar con los inyectores, hizo que se consigan bombas hidráulicas, capaces de generar suficiente presión para trabajar con los inyectores, el hecho de que los contenedores fuesen plásticos facilitaba mucho el acople de las bombas al sistema, pero con el fin de evitar posibles fugas que afecten a la estructura se hizo uso de bombas hidráulicas sumergibles.

Por desgracia no se logró conseguir 4 bombas idénticas, y se usó dos bombas de 400 litros por hora y dos de 300 litros por hora, y para poder usarlas de manera adecuada en el prototipo se debió hacer ajustes en la etapa de control de los inyectores, basados en los datos obtenidos de forma experimental, presentados mas adelante.

Figura 8-2: Bomba sumergible

Fuente, El autor

2.2.3.5 De la estructura.

Una vez comprobado la factibilidad técnica de la idea desarrollada, se procedió con el diseño de la estructura que soportaría todos los materiales y controladores; en el diseño de la estructura para el módulo de prueba se contempló los emplazamientos y modos de sujetar de todos los actuadores y para hacerlo robusto se planteó una estructura basada en aluminio.

Durante la etapa de validación técnica de los equipos se notó que las bombas producían vibraciones que al tratarse de una sola, no representarían mayor problema, pero al tener la oportunidad de usar las cuatro bombas de manera simultanea las vibraciones y el ruido generado se tornaron notorios, a esto se añade el sonido propio de cuatro inyectores trabajando; es de esta forma que se busca que la estructura absorba una buena parte del ruido generado, cumpliendo el requerimiento de hacer un equipo amistoso al usuario.

En la búsqueda del material adecuado para construir la estructura de soporte se pensó hacer uso de materiales plásticos, y fue descartado debido a que podrían no tener la resistencia necesaria al peso y las vibraciones presentes del equipo en funcionamiento.

Un material capaz de soportar cierto peso y tener la porosidad adecuada para absorber las vibraciones, son, los tableros de fibra de media densidad (MDF), producidos a partir de eucalipto y poliuretanos naturales, de esta forma se eligió para la estructura MDF de 15mm de espesor, reforzada con aluminio.

Figura 9-2: Estructura módulo de prueba, primeros pasos

Fuente: El autor.

2.2.3.6 De los componentes electrónicos

Los controladores de los inyectores deben ser rápidos y soportar voltajes de entre 7 y 12 voltios, esto hizo que se descarte relés basados en bobinas y se opte por hacer uso del circuito integrado L298N capaz de soportar hasta 46 voltios y hasta un amperio por canal en la etapa de potencia y voltajes TTL en la etapa de control.

Para el controlador principal se escogió El módulo Arduino Mega, basado en el microcontrolador AVR2560, debido a que es un producto de hardware libre, que está soportado en las plataformas linux usada para el desarrollo integral de este proyecto.

2.2.4 Dimensionamiento mecánico del prototipo

El diseño mecánico del prototipo buscó usar el material eficientemente y dar puntos de apoyo donde los equipos como bombas e inyectores lo requirieron, compensar ciertas caídas de presión en las tubería usada y hacer un módulo lo más reducido posible, como muestran los esquemas del anexo C.

2.2.5 Dimensionamiento eléctrico y electrónico del prototipo

Se usó bombas de corriente alterna que consumían 8 vatios cada una, los inyectores funcionan con corriente directa y para alimentar el controlador que gestionó su funcionamiento se usó una fuente conmutada de 24 vatios y salida de 12Vdc, lo que hace que el equipo sea de bajo consumo, teniendo un consumo total de 56 vatios, esquema eléctrico mostrado en el anexo D.

Capítulo III

3. Implementación

Las especificaciones de diseño hechas a lo largo del capítulo tres se recogen a fin de construir una red neuronal debidamente entrenada y capaz de realizar las transformaciones entre los modelos, se implementó además una aplicación de forma que un usuario sin conocimientos profundos de programación y electrónica pudiera ejecutar sin ningún problema, agregado a esto se construyó un módulo donde los resultados de el uso de la red neuronal pudieran palparse, en el cual se debió buscar los puntos de operación adecuados para los inyectores y las bombas usadas.

3.1 Desarrollo de la red neuronal y su aplicación.

Todos los parámetros y puntos de vista que se mencionó en la sección 2.1.4 fueron tomados en cuenta, para realizar la etapa de programación y entrenamiento de la red neuronal, y de la aplicación que hace uso del perceptrón multicapa ya entrenado. La concepción previa de lo necesario para desarrollar la red neuronal y los aplicativos hizo que el tiempo que se usó para construir la aplicación total se reduzca de manera significativa y se definieran rápidamente las herramientas que pudieran ser usadas para lograr el proyecto.

Las características del computador que se usó para correr los entrenamientos y las pruebas produjeron relativamente tiempos bajos de entrenamiento y pocos inconvenientes en el procesamiento de imágenes, en cuanto a procesador se refiere, como lo muestra la figura 1-3, en el cual se usó un procesador de dos núcleos y cuatro procesos, a 2.4GHz

Figura 1-3: Características del procesador usado

Fuente, el autor

3.1.1 Entrenamiento de la red neuronal

El entrenamiento se lo hace por completo usando las librerías del proyecto OpenNN, cargando en primera instancia todas las librerías que han de usarse, como muestra la figura 2-3.

Figura 2-3: Librerías OpenNN

Fuente, El autor

seguido de esto se hizo las definiciones que se consideró necesarias con el fin de conservar la información del entrenamiento, requerida en una etapa de análisis.

Figura 3-3: Definiciones de variables de OpenNN

Fuente, El autor

luego, se cargo la información que el sistema requería para poder usar las funciones del espacio de nombres de OpenNN, el conjunto de datos se lo cargo en un tipo de dato específico para este fin, donde debió ingresarse, el número de instancias, las variables de entrada y los objetivos, además se estableció en porcentajes la cantidad de instancias que se usarían para el entrenamiento, las pruebas y la validación de los resultados, en este caso se eligió 60% para entrenamiento, 20% para validaciones y 20% para pruebas. El sistema permite escalar las variables de entrada así como los objetivos, y obtener información estadística como la media y la desviación estándar de cada grupo de instancias definidas y conservar la información para luego procesarla.

Se declaró un perceptrón multicapa de 3 entradas, 5 neuronas en la capa oculta y 4 salidas. Al perceptrón se le cargó la información estadística tomada del conjunto de datos.

Se declaró una función objetivo del tipo error cuadrático normalizado, que fue asociada al perceptrón multicapa y al conjunto de datos.

Seguido de esto se declaró un algoritmo de entrenamiento, basado en el método de las métricas variables, que se debió asociar a una función objetivo, en este caso el error cuadrático normalizado.

Se declaró las condiciones de parada y el método de búsqueda de la tasa de entrenamiento, mostrados en la figura 5-2 y de esta forma se procedió con el entrenamiento, al compilar el programa se observo un alto uso de CPU (Unidad central de procesos) de la computadora y un incremento de la temperatura.

Figura 4-3: Compilación y Arranque del entrenamiento de la RN

Fuente, El Autor

El proceso terminó tras 884 segundos (14 minutos y 44 segundos) y en la iteración 903, habiendo cumplido con la condición de parada relacionada con el mínimo crecimiento de los parámetros de la red neuronal.

Figura 5-3: Fin del proceso de entrenamiento de la RN

Fuente, El autor

El programa con el fin de facilitar el funcionamiento y el entendimiento se lo dividió en 2 partes: una, dedicada exclusivamente a entrenar la red neuronal, y la otra, presentaría una aplicación que haga uso de el perceptrón multicapa ya entrenado y gestionase las interfaces con el módulo de prueba.

3.1.2 El perceptrón multicapa y la aplicación final

Al terminar el entrenamiento de la red neuronal se corrieron ejemplos únicamente usando la línea de comandos de linux, pero los resultados no podían observarse de forma amigable,

Figura 6-3: Resultados tabulados

Fuente, El autor

es por esto que, adelante con el proyecto se pensó hacer una aplicación donde pudiéramos demostrar que tan confiables fueron los resultados logrados.

Es así como se creó una aplicación, donde existe: una cámara web de 24 bits de color verdadero, que le sirve como un ojo a la red neuronal; una interfaz de usuario que gestiona el uso de la red neuronal, y la hace amigable con el usuario; y ofrece la posibilidad de generar la combinación de colores estimada por el perceptrón multicapa dentro del modelo CMYK, a través del módulo de prueba.

La interfaz de usuario fue creada con ayuda de las funciones y librerías de OpenCV y OpenNN, incluyendo también las librerías estándar de C++.

Como se dijo en la sección anterior al aplicación completa fue dividida en 2 partes, la primera dedicada exclusivamente al entrenamiento de la red neuronal y la segunda dedicada a hacer uso del perceptrón multicapa. La información relevante de la RN (parámetros, ganancias, escalado de las entradas y desescalado de las salidas, desviaciones estándar y algunos otros indicadores estadísticos) fue almacenada en un archivo de texto con el formato adecuado para que pudiera ser leído fuera del programa de entrenamiento.

Nuevamente, el programa comienza con la definición de las librerías usadas, en la sección dedicada a la definición de los espacios de nombres, hubo conflictos con los espacios de nombres estándar de C++ y el espacio de nombres de OpenNN, OpenNN dentro de su estructura contemplaba denominaciones extra de ciertas funciones, así es que se decidió hacer uso de el espacio de nombres de OpenNN (flood) y, el de C++ (std) y el de OpenCV (cv) usarlos anteponiendo el espacio de nombres correspondiente a las funciones usadas.

Figura 7-3: Definiciones y espacio de nombres de interfaz de usuario

Fuente, El autor

Se realizó una aplicación compacta de estilo minimalista, donde únicamente existe la imagen captada por la cámara y tres opciones que el usuario podía tomar:

Figura 8-3: Aplicación y su primera impresión

Fuente, El autor

La primera opción permite al usuario tomar una imagen centrada en un recuadro rojo, esta imagen es procesada y de allí se sacan parámetros como la moda de cada canal de color, con el fin de obtener los valores RGB predominantes en la muestra, estos valores pasarán por el perceptrón multicapa y a su salida se tendrá los componentes dentro del modelo CMYK, que se presentaran en forma de diagramas de barras en la aplicación.

Figura 9-3: Aplicación, Procesamiento de imagen.

Fuente, El autor

La segunda opción (Generar mezcla), establece la comunicación de la aplicación con el hardware manejado por linux (en este caso USB), y el controlador del módulo de prueba, se debió considerar para este punto, la estructura del manejo del hardware por parte de linux. El programa recoge los valores generados por la RN y los envía al controlador cada 250 milisegundos, esto se hizo usando restas sucesivas de los valores enteros de las variables c, m, “y” y k, es decir en cada momento es enviaba la orden de mover una única vez los actuadores finales, de esta forma se tubo control sobre el proceso en el módulo, al ser capaz de detener los actuadores desde la aplicación haciendo uso de un atajo de teclado creado exclusivamente para ese fin.

La opción final (Nuevo color) se la creó para poder reiniciar las variables usadas a lo largo de la ejecución del programa.

Figura 10-3: Compilación sin errores de la aplicación

Fuente, el autor

3.2 Construcción del módulo de prueba

El equipo se construyó bajo las consideraciones realizadas en el capítulo 2, y el proceso se observa en la siguiente serie de figuras.

Figura 11-3: Módulo, soporte de contenedores

Fuente, El autor

Soporte para los contenedores de pintura realizado en MDF y reforzado con uniones de aluminio

Figura 12-3: Corte de piezas

Fuente, El autor

Corte de la estructura encargada de sujetar los inyectores de gasolina.

Figura 13-3: Estructura terminada

Fuente, El autor

Contenedores, inyectores y bombas instalados en la estructura encargada de su soporte.

Figura 14-3: Contenedor recipiente final

Fuente, El autor

Soporte para el contenedor final, en donde se recogerán las mezclas generadas.

Figura 15-3: Sujeta mangueras

Fuente, El autor

Pieza dedicada a sujetar las mangueras, creada con el fin de evitar que las mangueras generen tracción en la parte funcional del módulo de prueba.

Figura 16-3: Instalación de inyectores

Fuente, El autor

Figura 17-3 Inyector instalado

Fuente, El autor

Figura 18-3: Instalación de tuberías

Fuente, El autor

Figura 19-3: Módulo, parte funcional terminada

Fuente, El autor

Figura 20-3: Mangueras instaladas

Fuente, El autor

Mangueras instaladas con empaques de caucho a fin de evitar retrocesos de las tuberías.

Figura 21-3: Bombas sumergidas

Fuente, El autor

Figura 22-3: Circuitos, prueba de actuadores

Fuente, El autor

Circuitería usada, basada en el modulo arduino mega 2560 y el CI L298N

3.2.1 Operaciones de prueba

Para las operaciones de prueba se hizo uso de agua común, el objetivo fue verificar el adecuado funcionamiento de los inyectores y la capacidad de las bombas como se puede observar en la figura 21-3, en efecto se logró determinar que el inyector generaba dosis muy homogéneas de líquido en función del tiempo de activación de los inyectores y la presión de las bombas, en este punto, el hecho de que las bombas tuvieran diferentes dimensiones de caudal hizo que las mediciones entre los inyectores variasen, y para obtener un punto en que todos los inyectores generen el mismo volumen de líquido, se construyeron curvas basadas en el tiempo de apertura de los inyectores y el volumen generado en una determinada cantidad de pulsos.

3.2.2 Ajustes

Las bombas de diferentes dimensiones en efecto producen diferentes volúmenes de líquido, como lo demuestran las tablas 1-3, 2-3, 3-3 y 4-3

Tabla 1-3: Volumen de fluido dosificado, bomba de 300L/H con pulsos de 200mseg en alto y 50mseg en bajo

pulsos	ul
10	500
20	1000
30	1600
40	2000
50	2500
60	3100
70	3550
80	4000
90	4500
100	5000

Fuente, El autor

Tabla 2-3: Volumen de fluido dosificado, bomba de 300L/H con pulsos de 80mseg en alto y 20mseg en bajo

pulsos	ul
10	200
20	400
30	600
40	800
50	1000
60	1200
70	1400
80	1550
90	1600
100	2010

Fuente, El autor

Tabla 3-3: Volumen de fluido dosificado, bomba de 400L/H con pulsos de 200mseg en alto y 50mseg en bajo

pulsos	ul
10	600
20	1250
30	1800
40	2400
50	3000
60	3650
70	4200
80	4850
90	5400
100	6050

Fuente, El autor

Tabla 4-3: Volumen de fluido dosificado, bomba de 400L/H con pulsos de 80mseg en alto y 20mseg en bajo

pulsos	ul
10	250
20	500
30	750
40	1000
50	1250
60	1520
70	1760
80	2000
90	2250
100	2500

Fuente, El autor

Para cada tabla se asoció una curva, que generó las gráficas siguientes

Figura 23-3: Gráficas de volúmenes de líquido en microlitros, generados por la acción de bombas de 300L/H y 400L/H

Fuente, El autor

A cada bomba se le aplicó dos pruebas, en las que se utilizaba dos diferentes anchos de pulso, para evaluar cuanto producían los sistemas, en dependencia de la cantidad de pulsos suministrados, de esta forma se explica que para cada bomba exista dos curvas diferentes, en la figura 23-3.

Las curvas trazadas con color azul son curvas que se generaron a partir de un pulso de 200 milisegundos en alto y 50 milisegundos en bajo, es decir, una señal con forma de onda cuadrada y una frecuencia de 4Hz con un ciclo de trabajo del 80%, y donde el eje “x” corresponde a el incremento de la cantidad de pulsos realizados y el rango de las curvas es el volumen de líquido generado con una determinada cantidad de pulsos. Las curvas de color rojo se trazaron usando una frecuencia de 10Hz, con un ciclo de trabajo del 80%.

Debe indicarse que se decidió usar una forma de onda cuadrada y no solo corriente directa (DC) para la activación/desactivación de los inyectores, buscando extender su vida útil y conservar los solenoides internos en buen estado.

Como se observa en la figura 23-3 las bombas durante las pruebas fueron capaces de generar curvas de volúmenes lo suficientemente lineales para poder interpolarlas y obtener sus funciones, de esta manera se busco un punto en el que las bombas entreguen la misma cantidad de fluido.

Por cada orden de trabajo enviada por el programa se debió lograr que el sistema bomba-inyector genere las mismas cantidades de fluidos en cada una de sus estaciones, tras realizar una interpolación lineal se obtuvo como función de las bombas, las siguientes ecuaciones:

ec.: (1.3)

ec.: (2.3)

ec.: (3.3)

ec.: (4.3)

de tal forma que si en una orden de trabajo se quisiera que los sistemas generen 200 microlitros, se debe evaluar las ecuaciones 1.3 y 3.3, que son producto de una prueba bajo las mismas características y con una bomba diferente, donde estas ecuaciones se transforman en las ecuaciones 5.3 y 6.3,

ec.: (5.3)

ec.: (6.3)

al remplazar en las ecuaciones 5.3 y 6.3 los términos “y” por la cantidad de líquido deseada (200uL) se obtiene que: el sistema con la bomba de 300L/H deben activarse 3.3435 veces y el sistema con la bomba de 400L/H debe activarse 3, 2091 veces.

Para las pruebas con frecuencia de 10Hz se obtuvo luego de evaluar las ecuaciones 7.3 y 8.3 que: el sistema con las bombas de 300L/H debe activarse 9.9817 veces y el sistema que usa bombas de 400L/H debe activarse 7.9370 veces.

ec.: (7.3)

ec.: (8.3)

Con estos datos se observó que las diferencias en cuanto a los microlitros generados por las pruebas con frecuencias de 4Hz no era lineal y que difícilmente tendríamos un punto en el que sea adecuado operar, mientras que para las pruebas de 10Hz la curva se mostraba prácticamente lineal, como lo muestra la figura 24-3. y alcanzaba alrededor de 500 microlitros dentro de los rangos de las pruebas.

Figura 24-3: Diferencias medidas en microlitros de las pruebas con frecuencias de 4Hz y 10Hz

Fuente, El autor

Al tratar las curvas de diferencias se decidió expresarlas en términos porcentuales buscando un intervalo donde se muestren estables las diferencias, la figura 25-3 muestra el resultado de este análisis.

Figura 25-3: Diferencias en términos porcentuales

Fuente, El autor

Las diferencias referidas a las pruebas realizadas a 10Hz (figura 25-3, color rojo) son mucho mas altas que las de las pruebas de 4Hz (figura 25-3, color azul), pero muestran mayor estabilidad cerca del punto de trabajo comprendido entre los ]0;40] pulsos.

3.2.3 Puesta a punto

El análisis de la sección 3.2.2 sirvió para establecer las posibilidades reales del sistema usando una frecuencia con un ancho de pulso constante para los dos subsistemas.

Tras haber comprobado el intervalo de estabilidad a través de las diferencias porcentuales se obtuvo una zona donde era posible buscar los puntos de operación adecuados. Con este fin se cambio la escala de las tablas 2-3 y 4-3 por su valor en milisegundos, que es la información de las curvas que mostraron estabilidad y crecimientos constantes; cada pulso al tener un ciclo de trabajo del 80% con una frecuencia de 10Hz, producía un ancho de pulso de 80 milisegundos. Y con los datos derivados de las ecuaciones 7.3 y 8.3 se estableció que el sistema con bombas de 300L/H en 800 milisegundos dosificaba 200.3633uL y el sistema con bombas de 400L/H en 640 milisegundos dosificaba 201.5757uL, al trabajar en una sección de la curva de dosificación lineal, es posible tomar una regla de tres para averiguar cuanto produciría cada sistema en un milisegundo e interpolar a un punto mas grande de operación de los inyectores.

El propósito para el proyecto fue hacer que los subsistemas generen medidas muy próximas entre si de tal manera que en 100 pulsos poder generar 5000uL los sistemas deben trabajar con un pulso en alto de 200 milisegundos los basados en bombas de 300L/H y con un pulso en alto de 159 milisegundos los basados en bombas de 400 litros sobre hora, logrando así que se produzca 5010uL y 5007.864uL en cada sistema respectivamente, logrando un error del 0.43% referidos a la proximidad de las medidas.

Capítulo IV

4. PRUEBAS Y Análisis DE RESULTADOS

En este capítulo se evaluarán los tiempos de entrenamiento y analizarán los cambios de los parámetros de la red neuronal a través de cada época o iteración, también se describirán los elementos sobre los cuales para este tema es adecuado realizar experimentos y comprobaciones, se reduce el conjunto de pruebas a aquellos elementos que son capaces de arrojar resultados generalizados dentro del uso de la red neuronal y el modelo CMYK, debido al gran conjunto en el que se puede hacer las pruebas.

4.1 Pruebas

En esta sección se describirán las pruebas que se realizaron a nivel de software, así como a nivel de hardware.

De esta manera es como se dividió las pruebas en dos etapas, la primera se refiere a los resultados que se pueden presentar a nivel de software y las capacidades de generalización de lo aprendido por la red neuronal, el segundo enfoque contempló el resultado que en efecto se estaba produciendo con la combinación de pinturas cian, magenta, amarillo y negro.

4.1.1 Uso de tecnología

Los diferentes materiales usados para realizar las pruebas debieron cumplir ciertas características, en busca de una mejor apreciación de los resultados.

Los objetos que se analizaron no contaban con formas geométricas complicadas, donde la luz pudiera dispersarse, y no debían ser de materiales brillantes o que reflejen demasiado la luz.

4.1.2 La tecnología adecuada para el experimento

La tinta usada, fue la misma usada en impresoras epson, y para los colores cian y magenta se usó las tonalidades light, lo cual permitiría reducir la apariencia oscura en los resultados.

Las bombas como ya se mencionó fueron bombas sumergibles, con el fin de evitar fugas en puntos de unión y acople en el módulo, resultó conveniente preocuparse de evitar fugas debido al material del que fue construido el módulo.

La cámara usada, fue una cámara omega, con sensor CMOS, de 24 bits de color verdadero, puerto usb 2.0, de 5 megapixeles, con ajuste manual del enfoque, de hasta 30 cuadros por segundo, con control automático del color y balance de blanco.

Los Inyectores, fueron de un chevrolet spark, de los cuales el fabricante no proporciona mayor información.

4.1.3 Descripción de las pruebas

Las pruebas se realizaron de la siguiente manera.

En un sitio adecuado se ubicaba el material a percibir por la cámara, de esta forma era posible suministrar la luz necesaria para el experimento.

Figura 1-4: Iluminación sobre los objetos analizados

Fuente: El autor.

Con la ayuda de la aplicación de software creada se ubicaba el objeto en la zona de enfoque adecuada y se procesaba la imagen. Al tener los resultados del procesamiento se inspeccionaba de forma visual que sean adecuados o muy próximos a la muestra.

Seguido de esto se generaba la mezcla a partir de la orden de trabajo emitida desde la aplicación.

La evaluación de los resultados físicos difícilmente puede ser cuantificada, debido a que como se explicó en el capítulo 1, los colores son percepción sensorial exclusivamente afectada por las características intrínsecas del sistema visual humano, a los que además pudiera afectar, factores externos como: el ángulo desde el que se observa un objeto analizado, la cantidad de luz existente y reflejada. De esta forma es que los resultados físicos podrían ser solo observados con precisión a través de un análisis espectral de la muestra y lo generado.

4.1.4 Ensayos específicos

En el momento de elegir las pruebas que se debía hacer en el sistema, refiriéndose a los colores que sería prioritario evaluar, se encontró con el hecho de que habrían tantas pruebas posibles como colores en el mundo, de tal forma que se debió buscar un conjunto de colores reducido y finito a analizar.

Un subconjunto reducido de colores podía haber sido expresado por la cantidad de bits de color verdadero a los que es sensible una cámara, los que por lo general son 8 bits, de esta manera se tiene que por cada color existen 256 posibilidades y multiplicadas entre sí, se obtuvo un resultado de 16777216 a los que la cámara es susceptible, lo cual hizo que se descarte este subconjunto.

Dentro de la definición y elementos de la teoría del color, planteada en el capitulo 1, al derivar los colores de los espacios de color se buscó los colores primarios y a estos los colores extremos del cubo de color, es así que se definieron los colores elementales.

En la tabla 1-1 en la sección 1.1.4 se hizo la descomposición de los colores primarios en colores elementales, que son un conjunto reducido de muestras, pero capaces de arrojar resultados consistentes y generales de todo el trabajo realizado.

4.2 Análisis de resultados

Todo proceso de alguna manera medible, es sujeto de análisis, con el fin de buscar puntos donde se pueda mejorar los resultados.

El análisis de algunas de las variables que aparecieron durante el entrenamiento y ejecución de la aplicación fue una parte importante, en dependencia de estos resultados se generó conclusiones y se estableció puntos en los que pudieran mejorar los sistemas.

4.2.1 Criterios a evaluar

Las variables a considerar de la red neuronal y su entrenamiento fueron: el tiempo usado para entrenar la red y el tiempo transcurrido durante cada iteración, el historial de cambio de los parámetros de el perceptrón multicapa, el historial de validación de errores, los cambio sufridos por el gradiente de la función objetivo, y las tasas de entrenamiento.

De la ejecución de la aplicación podemos evaluar, de forma visual lo que a través de la cámara se ve y lo que el observador percibe, la distribución de los valores en RGB y la presencia de ruido a través del sistema, y comparar los resultados obtenidos a través de la red neuronal con los valores que las formulas son capaces de generar.

De el prototipo en general se evaluara de manera visual la combinación generada con lo proyectado en la pantalla.

4.2.1.1 Tiempo usado en el entrenamiento

La figura 2-4 muestra el tiempo que toma realizar cada iteración, donde para todo el proceso de entrenamiento se tomaron 884 segundos en 903 iteraciones.

Figura 2-4: Tiempo de entrenamiento en cada iteración

Fuente, El autor

Cada iteración duro en promedio 0.97896 segundos, el tiempo de cada iteración es relativamente bajo, esto se debió a que el tamaño del conjunto de datos tenia un número no muy grande de instancias a evaluar (2042) y a las características ya mencionadas del computador usado.

4.2.1.2 Historial de cambio de los parámetros de la red neuronal

Figura 3-4: Cambios de los parámetros en función de la iteración

Fuente, El autor

Los parámetros de la red neuronal sufrieron cambios notorios en especial los de las capas de entrada como de salida, hasta establecerse, como muestra la figura 3-4 y4-4, donde los datos fueron considerados como una superficie, a fin de condensar todos los cambios en una sola gráfica.

Figura 4-4: Cambio de los parámetros en función de la iteración, vista complementaria

Fuente, El autor

y el resultado final del entrenamiento es, el mostrado en la figura 5-4

Figura 5-4: Valor final de los parámetros de la red neuronal

Fuente, El autor

4.2.1.3 Validación de los errores

Todo error generado producto de la asignación de valores aleatorios a los parámetros de una red neuronal, fueron rápidamente minimizados con el uso del método de las métricas variables, como lo muestra la figura 6-4

Figura 6-4: Decrecimiento del valor de evaluación del error

Fuente, el autor

logrando un valor de evaluación al terminar el entrenamiento de 0.0421577.

4.2.1.4 El gradiente histórico

Figura 7-4: Histórico del gradiente

Fuente, el autor

4.2.1.5 Tasa de entrenamiento

Figura 8-4: Tasa de entrenamiento

Fuente, el autor

4.2.2 Análisis sobre las pruebas

Para tener un mejor panorama del funcionamiento de los sistemas, en la etapa de procesamiento de imagen se decidió no hacer uso de técnicas sofisticadas para la mejora del contraste, el color o la eliminación del brillo de las imágenes, solo se aplicó un filtro gausiano y un filtro de mediana con el fin de reducir el ruido de los instrumentos. Como se mencionó al inicio de la sección 4.1.4, los colores donde se hicieron las pruebas son: los colores primarios: rojo, verde y azul y los colores del modelo CMYK: cian, magenta, amarillo y negro, sumados a estos el color blanco.

4.2.3 Pruebas sobre colores elementales.

Las pruebas se hicieron sobre luz blanca y sobre fondos blanco para evitar el efecto de adaptación a la luz por parte de la cámara, que al igual que un ojo humano tiende a reducir las diferencias entre los colores que se esta viendo.

Las distribuciones de frecuencias absolutas muestran como el efecto de la luz en las muestras distorsiona los colores observados, los valores sobre el cual es mas grande un canal en la figura 9-4 muestran el valor dominante de las muestras de cada canal, y fácilmente es apreciada la distorsión de colores en el color blanco y negro, donde los valores pico deberían ser 255 y 0 respectivamente, por ende en los demás colores se mostraron desplazamientos similares de donde deberían situarse los picos de los canales r, g y b, donde las curvas trazadas en azul son la componente del canal azul, las líneas graficadas de rojo le pertenecen al canal rojo y el trazo de color amarillo es el canal verde.

Figura 9-4: Distribuciones absolutas de los colores analizados en las pruebas, afectados por la luz y el ruido

Fuente, el autor

Ya que todos las pruebas se encontraron contaminadas de la misma forma, se explicará cuatro ejemplos representativos del grupos de evaluación: La peor aproximación realizada, la mejor aproximación, un caso especial y un caso manipulado.

La peor aproximación

Figura 10-4: La peor aproximación realizada

Fuente, el autor

Figura 11-4: La peor aproximación realizada vista desde la aplicación

Fuente, el autor

Como se puede observar en las figuras 10-4 y 11-4 el objeto analizado es oscurecido al llegar hasta la aplicación, lo que genera presencia del color negro en la transformación, dando un resultado en la mezcla mucho mas oscuro que el objeto analizado.

La mejor aproximación

Figura 12-4: La mejor aproximación

Fuente, el autor

Figura 13-4: La mejor aproximación vista desde la aplicación

Fuente, el autor

Lo observado por la aplicación y lo generado por el procesamiento son muy parecidos, pero no así lo que observa la aplicación y el objeto analizado, al igual que en el ejemplo anterior el objeto analizado es oscurecido al llegar a la aplicación y mas aún al generarse las combinaciones

Un caso especial

Figura 14-4: Un caso especial

Fuente, el autor

Figura 15-4: Un caso especial visto desde la aplicación

Fuente, el autor

Como ya se venia notando la cámara oscurecía las imágenes al llevarlas a la aplicación, lo que causo que el color blanco se vea como un componente de una escala de grises, y de manera muy importante se notó cierta deficiencia en el modelo CMYK no palpable con los casos anteriores; el modelo CMYK trabaja bajo el supuesto de que el color de fondo es blanco y que su proporción debe ser equivalente al recíproco del negro expresado en porcentajes, así para todos los casos.

Caso manipulado

Figura 16-4: Caso manipulado

Fuente, el autor

Figura 17-4: Caso manipulado visto desde la aplicación

Fuente, el autor

Para un ejemplo manipulado se escogió el color verde descrito en las variables r, g y b como 0, 255 y 0 o 0, 1 y 0 respectivamente, que previamente se sabe que dentro del modelo CMYK es 1, 0, 1 y 0 para las variables c, m, “y” y k respectivamente, como se puede observar en la figura 17-4, pero el valor en la variable k ha tenido un incremento no previsto, lo cual genera en la figura 15.4 un color verde mucho más oscuro de lo esperado.

Esto reveló una dificultad de la red neuronal para generalizar la información referida a la variable k, derivado probablemente de la forma en que se calcula k y los datos ingresados bajo esa modalidad de cálculo.

4.2.4 Necesidad de compensaciones

Como se dijo antes, es posible mejorar la imagen a través del procesamiento, pero la intención del proyecto fue evaluar las capacidades de la red neuronal creada.

Esta red genero muy buenas aproximaciones en las variables c, m y “y”, pero lastimosamente no generalizo la información de la variable k, haciendo que el resultado final fuese un poco mas oscuro de lo que se esperaba.

Todo el análisis hecho a lo largo de este proyecto genera conclusiones importantes y recomendaciones para posibles trabajos que involucren este tipo de tratamiento a los colores.

Figura 18-4: Pruebas representativas

Fuente, el autor

4.2.5 Análisis de datos producidos por la red neuronal y por la formulación matemática

Tabla 1-4: Entradas usadas para el análisis de datos

r	g	b
0.694118	0.231373	0.780392
0.639216	0.756863	0.913725
0.701961	0.937255	0.494118
0.0705882	0.788235	0.0156863
0.0705882	0.552941	0.34902
0.588235	0.180392	0.847059
0.952941	0.505882	0.203922
0.27451	0.0901961	0.541176
0.2	0.533333	0.0117647
0.156863	0.619608	0.32549
0.4	0.815686	0.556863
0.678431	0.952941	0.317647
0.592157	0.658824	0.254902
0.0862745	0.729412	0.541176
0.105882	0.298039	0.0941176
0.952941	0.384314	0.27451
0.298039	0.835294	0.780392
0.501961	0.109804	0.368627
0.545098	0.811765	0.4
0.054902	0.968627	0.0235294
0.380392	0.866667	0.337255
0.941176	0.54902	0.290196
0.756863	0.639216	0.447059
0.0117647	0.729412	0.67451
0.0509804	0.333333	0.470588
0.145098	0.286275	0.858824
0.419608	0.0823529	0.192157
0.698039	0.588235	0.803922
0.564706	0.631373	0.615686
0.968627	0.686275	0.0823529

Fuente, El autor

Tabla 2-4: Salidas producidas por las fórmulas y por la red neuronal

cf	mf	yf	kf	crn	mrn	yrm	krm
0.110553	0.703518	0	0.219608	0.0151919	0.952281	0.0151855	0.158545
0.300429	0.171674	0	0.0862745	0.00584427	-0.0152034	0.0181942	0.218231
0.251046	0	0.472803	0.0627451	0.00149674	-0.0141776	0.974658	0.0567247
0.910448	0	0.9801	0.211765	0.968336	0.0192791	0.984042	0.249548
0.87234	0	0.368794	0.447059	0.973568	0.0209864	0.0271695	0.415588
0.305556	0.787037	0	0.152941	0.0162141	0.955037	0.0148489	0.188084
0	0.469136	0.786008	0.0470588	0.00651054	-0.000348947	0.972903	0.183155
0.492754	0.833333	0	0.458824	0.0231987	0.972649	0.0129616	0.463254
0.625	0	0.977941	0.466667	0.969514	0.0218165	0.983869	0.321811
0.746835	0	0.474684	0.380392	0.972307	0.0179931	0.0274478	0.354868
0.509615	0	0.317308	0.184314	0.965365	-0.000293043	0.0295871	0.128189
0.288066	0	0.666667	0.0470588	0.00336627	-0.00901726	0.974002	0.10363
0.10119	0	0.613095	0.341176	0.00818813	0.0041485	0.972359	0.233221
0.88172	0	0.258065	0.270588	0.969818	0.011651	0.0281427	0.260808
0.644737	0	0.684211	0.701961	0.971492	0.0253218	0.983834	0.488472
0	0.596708	0.711934	0.0470588	0.00713041	0.00132828	0.972697	0.200731
0.643192	0	0.0657277	0.164706	0.963958	-0.00419298	0.0300859	0.0938289
0	0.78125	0.265625	0.498039	0.022436	0.970971	0.0130851	0.418529
0.328502	0	0.507246	0.188235	0.00552785	-0.00309333	0.973258	0.160412
0.94332	0	0.975709	0.0313725	0.966688	0.0154314	0.984383	0.166096
0.561086	0	0.61086	0.133333	0.961338	0.00156847	0.985955	-0.0222358
0	0.416667	0.691667	0.0588235	0.00527467	-0.00373979	0.973329	0.150922
0	0.15544	0.409326	0.243137	0.00466164	-0.00545728	0.973553	0.137062
0.983871	0	0.0752688	0.270588	0.969276	0.0102069	0.0283152	0.244064
0.891667	0.291667	0	0.529412	0.974732	0.0235779	0.0269712	0.482161
0.83105	0.666667	0	0.141176	0.973609	0.963683	0.0271211	0.0684699
0	0.803738	0.542056	0.580392	0.0189302	0.972826	0.969757	0.36767
0.131707	0.268293	0	0.196078	0.00813682	-0.0089115	0.0174024	0.277915
0.10559	0	0.0248447	0.368627	0.0110234	-0.000958734	0.016395	0.351228
0	0.291498	0.91498	0.0313725	0.00559044	-0.00284914	0.973212	0.157703

Fuente, el autor

Los datos usados para la comparación de los resultados obtenidos se generaron aleatoriamente, mediante el uso de c++, estos se describen en la figura 19-4, donde los valores trazados con azul representan la profundidad en el color rojo, los trazados con color azul representan el verde y los graficados con amarillo representan el azul.

Figura 19-4: Entradas Aleatorias

Fuente, el autor

La comparación de los resultados se la hace a través de los siguientes diagramas de barras, donde el color azul representa datos generados por la formulación matemática y el color amarillo son datos generados por la red neuronal.

Figura 20-4: Comparación de resultados para el color cian.

Fuente, el autor

Figura 21-4: Comparación de resultados para el color magenta.

Fuente, el autor

Figura 22-4: Comparación de resultados para el color amarillo

Fuente, el autor

Figura 23-4: Comparación de resultados para el color negro

Fuente, el autor.

Las figuras 20-4, 21-4, 22-4 y 23-4 muestran que a nivel general la red neuronal a tenido una buena abstracción de los datos usados en el entrenamiento, produciendo así resultados bastante próximos a los generados por las fórmulas matemáticas.

La descripción del programa usado para el entrenamiento de la red neuronal se la observa en el anexo E.

Conclusiones

1. Siguiendo el modelo matemático para convertir de RGB a CMYK no es posible tomar el camino inverso para convertir de CMYK a RGB.

2. Al no contar con una definición explícita del color blanco dentro del modelo CMYK este modelo no es de aplicación generalizada.

3. Las aproximaciones realizadas por una red neuronal podrían generar errores no previstos en la estimación de las respuestas de una red.

4. Los algoritmos de entrenamiento y las funciones de evaluación de errores cuidadosamente elegidos según la aplicación específica, formarán mejores respuestas al problema tratado.

5. El tiempo que tarda en entrenar una red neuronal se convierte en un aspecto secundario comparado con la fidelidad de los resultados.

6. En dependencia de la aplicación tomada, es de vital importancia lograr que los equipos con diferentes dimensionamientos nominales puedan producir las mismas velocidades, voltajes o la variable física que se este analizando, a fin de lograr medidas homogéneas en los subsistemas involucrados, haciendo uso de estrategias adecuadas de control en los sistemas eléctricos y electrónicos.

7. Las fibras porosas como el MDF son adecuadas para la eliminación de vibraciones y ruido generados por la operación de equipos.

8. La definición adecuada de un conjunto de pruebas o de valores a evaluar en un sistema hace que los tiempos de entrega de un prototipo se reduzcan y eviten acumulación de datos posiblemente inservibles.

9. Los equipos eléctricos y electrónicos debidamente seleccionados generarán mejores resultados en los sistemas y subsistemas a desarrollar.

Recomendaciones

1. Las mediciones de las variables físicas deben buscarse en una zona estable de operación del equipo que es capaz de producirlas, ya sea un motor, una válvula o cualquier otro elemento que requiera de calibración.

2. Las herramientas que se use en una aplicación deben justificarse, y no solo usarse por intereses ajenos al trabajo en cuestión.

3. Los diseños realizados deben buscar reducir el uso de materiales en los prototipos.

4. En lo posible se debe conseguir que los equipos usados para cumplir una misma actividad deban ser de los mismos dimensionamientos nominales, según sea el caso de aplicación.

5. Para poder considerar como un modelo de aplicaciones industriales generalizadas al modelo CMYK debería incluirse de forma explícita el color blanco dentro del modelo.

Bibliografía

BAEZA, J., GONZÁLEZ, J., SALAZAR, G. El Uso De Redes De Neuronas Artificiales En Aspectos De Análisis De Niveles De Productividad De Construcción [en linea]. 2001. [Consulta: 14 de abril de 2015]. Disponible en: http://www.ricuc.cl/index.php/ric/article/view/195/pdf

BARRERO, B., LEÓN, P. Determinación De La Arquitectura Óptima De Una Red Neuronal Tipo Perceptrón Multicapa Para La Extracción De Características Relevantes Y Reconocimiento De Señales Mioeléctricas [en linea]. [Consulta: 13 de abril de 2015]. Disponible en: http://www.ewh.ieee.org/reg/9/noticieeero/docs/art_tec_ed_41.PDF

CALVO, I. Modelo RGB [en linea]. Proyectacolor. [Consulta: 11 de abril de 2015]. Disponible en: http://www.proyectacolor.cl/aplicacion-del-color/modelos-de-color/modelo-rgb/

CONTI, F. Fisiología Médica [en linea]. McGraw-Hill, 2010. [Consulta: 10 de mayo de 2015]. Disponible en:

http://highered.mheducation.com/sites/dl/free/9701073414/817952/conti_fm_1e_cap_muestra.pdf

COUCH, L. Sistemas de comunicación digitales y analógicas. 7a de. Mexico. Prentice Hall, 2008 pp. 10-12, 34-40,

CMake [en linea]. Kitware, inc. [Consulta: 15 de abril de 2015]. disponible en: http://www.cmake.org/overview/

Debian [en linea]. Software in the Public Interest, Inc. [Consulta: 15 de abril de 2015]. Disponible en: https://www.debian.org/intro/about

El Metamerismo un Fenómeno Físico y Mental [en linea]. Red Gráfica Latinoamericana. [Consulta: 15 de mayo del 2015]. Disponible en: http://redgrafica.com/El-Metamerismo-un-fenomeno-fisico

KUPPERS, H. Fundamentos de la teoría de los colores. Barcelona-España: Gustavo Gili, SA. 1992, pp. 11 – 177.

LOPEZ, R. OpenNN: An Open Source Neural Networks C++ Library [software]. International Center for Numerical Methods in Engineering, 2014. Disponible en: www.cimne.com/flood

MARTÍNEZ, E. Curso de Procesamiento Digital de Imágenes [En linea]. [Consulta: 14 de abril del 2015]. Disponible en: http://turing.iimas.unam.mx/~elena/PDI-Mast/Tema_6_C.pdf

Modelo de Color CMYK [en linea]. Enfocus BVBA, 2013. [Consulta: 15 de mayo del 2015]. Disponible en: http://www.enfocus.com/manuals/referenceguide/pp/11/eses/es-es/concept/c_aa1141452.html

Modo de color rgb [en linea]. Fotonostra. [Consulta: 11 de abril de 2015]. Disponible en: http://www.fotonostra.com/grafico/rgb.htm

MOLINA, D. Tutorial de CMake [en linea]. 2009. [Consulta: 7 de mayo de 2015]. Disponible en: http://servicio.uca.es/softwarelibre/publicaciones/cmake-material.pdf

MOSQUERA, A. Modelos Para el Tratamiento del color [en linea]. Santiago de Compostela-España, 2004. [Consulta: 14 de mayo del 2015]. Disponible en: http://gva1.dec.usc.es/~antonio/docencia/2003tratamientocomputacionaldeimagenes/P2_mtc/P2_mtc.html

Neuronas y Neurotransmisores [en linea]. [Consulta: 18 de mayo del 2015]. Disponible en: http://depa.fquim.unam.mx/amyd/archivero/NEURONASYNEUROTRANSMISORES_1118.pdf

OpenCV [en linea]. Itseez, [Consulta: 16 de abril de 2015]. Disponible en: http://opencv.org/about.html

Optimización Sin Restricciones [en linea]. [Consulta: 21 de mayo del 2015]. Disponible en: http://www.dma.uvigo.es/~aurea/transparencias2.pdf

PALMA, J., MARIN, R., Inteligencia Artificial: Métodos, técnicas y aplicaciones. Madrid – España. McGraw-hill, 2008

RODRÍGUEZ DEL RIO, R. Gráficas con Matlab [en linea]. Madrid-España. [Consulta: 12 de junio del 2015]. Disponible en: http://www.mat.ucm.es/~rrdelrio/documentos/rrrescorial2002.pdf

SOLIS, G., MARROQUIN, E. Aplicación de Técnicas de Análisis Estadístico Multivariado en un Proceso de Control Dimensional [en linea]. IEEE LATIN AMERICA TRANSACTIONS, VOL. 5, NO. 2, 2007. [Consulta: 13 de abril del 2015]. Disponible en: http://www.ewh.ieee.org/reg/9/etrans/ieee/issues/vol05/vol5issue2May2007/5TLA2_03SolisRodriguez.pdf

TRAIPE, L. Fisiología Ocular [en linea]. [Consulta: 10 de mayo de 2015]. Disponible en: http://www.oftalandes.cl/clases/Fisiologia_Ocular_-_Dr._Traipe.pdf

Anexos

Anexo A. Instalación de OpenCV en una distribución linux

Los paquetes necesarios para poder usar e instalar OpenCV son

build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev

Los cuales se instala como súper usuario en una terminal en una distribución linux con la instrucción apt-get install

Seguido de esto se debe compilar los paquetes de instalación, los cuales se pueden descargar de: http://opencv.org/downloads.html

Para compilar OpenCV se crea un directorio temporal, dentro de la carpeta que contiene los archivos descomprimidos de OpenCV, una vez creado el directorio temporal se debe ingresar a el y ejecutamos: cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

A continuación se ejecuta la orden “make” y luego como súper usuario “make install”

Como root, se crea el siguiente fichero: /etc/ld.so.conf.d/opencv.conf y se le agrega el siguiente contenido: /usr/local/lib

En modo súper usuario se ejecuta: ldconfig

Por último se edita el fichero: “/etc/bash.bashrc” añadiendo al final las siguientes líneas:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lo­cal/lib/pkgconfig

export PKG_CONFIG_PATH

Anexo B. Uso de librerías OpenNN

Para poder compilar un programa basado en las librerías de OpenNN con CMake se debe configurar un archivo CMakeLists.txt de la siguiente forma:

PROJECT (proyecto)

CMAKE_MINIMUM_REQUIRED (VERSION 2.8)

FIND_PACKAGE ( OpenCV REQUIRED )

INCLUDE_DIRECTORIES (ObjectiveFunctional/ TrainingAlgorithm/ MultilayerPerceptrón/ Perceptrón/ Utilities/)

SET (VARS ../librerias/MultilayerPerceptrón/MultilayerPerceptrón.cpp

../librerias/ObjectiveFunctional/NormalizedSquaredError.cpp

../librerias/ObjectiveFunctional/ObjectiveFunctional.cpp

../librerias/Perceptrón/Perceptrón.cpp

../librerias/TrainingAlgorithm/TrainingAlgorithm.cpp

../librerias/TrainingAlgorithm/QuasiNewtonMethod.cpp

../librerias/Utilities/FunctionRegressionUtilities.cpp

../librerias/Utilities/InputTargetDataSet.cpp)

ADD_EXECUTABLE (rgbcmyk rgbcmykt.cpp ${VARS})

TARGET_LINK_LIBRARIES (rgbcmyk ${OpenCV_LIBS})

Anexo C. Dimensionamiento mecánico de la estructura usada en la construcción del módulo de prueba

Figura 1-C: Módulo, vista general

Fuente, Él autor

Figura 2-C: Módulo, vista frontal

Fuente, Él autor

Figura 3-C: Módulo, vista Inferior

Fuente, Él autor

Figura 4-C: Módulo, vista lateral

Fuente, Él autor

Figura 5-C: Módulo, vista posterior

Fuente, Él autor

Figura 6-C: Módulo, vista Superior

Fuente, Él autor

Anexo D: Esquema eléctrico y electrónico

Figura 1-D: Esquema electrico

Fuente, Él autor

Anexo E: Procedimiento de entrenamiento de la red neuronal.

void entrenamiento (Vector<double> entradasPrueba)

{

srand ( (unsigned)time ( NULL ) );

InputTargetDataSet itds (2042, 3, 4);

itds.load_data ("../Data/Data.dat");

itds.split_random_indices (0.60, 0.20, 0.20);

itds.set_variable_name (0,"R");

itds.set_variable_name (1,"G");

itds.set_variable_name (2,"B");

itds.set_variable_name (3,"C");

itds.set_variable_name (4,"M");

itds.set_variable_name (5,"Y");

itds.set_variable_name (6,"K");

itds.save_instances_statistics ("../Data/InstancesStatistics.dat");

dsStatistics = itds.calculate_data_statistics ();

mlp.set_variables_information (variables_information);

mlp.set_variables_statistics (variables_statistics);

mlp.set_output_variable_lower_bound (0, 0.00);

mlp.set_output_variable_upper_bound (0, 1.00);

mlp.set_output_variable_lower_bound (1, 0.00);

mlp.set_output_variable_upper_bound (1, 1.00);

mlp.set_output_variable_lower_bound (2, 0.00);

mlp.set_output_variable_upper_bound (2, 1.00);

mlp.set_output_variable_lower_bound (3, 0.00);

mlp.set_output_variable_upper_bound (3, 1.00);

NormalizedSquaredError nse (&mlp, &itds);

QuasiNewtonMethod qnm (&nse);

qnm.set_maximum_epochs_number (4000);//por defecto es 1000

qnm.set_minimum_parameters_increment_norm (0);//por defecto es cero

qnm.set_maximum_time (2000);//por defecto es 1000

qnm.set_reserve_parameters_history (true);

qnm.set_reserve_evaluation_history (true);

qnm.set_reserve_gradient_history (true);

qnm.set_reserve_training_rate_history (true);

qnm.set_reserve_elapsed_time_history (true);

qnm.train ();

FunctionRegressionUtilities fru (&mlp, &itds);

fru.save_linear_regression_analysis ("../Data/LinearRegressionAnalysis.dat");

itds.save ("../Data/InputTargetDataSet.dat");

mlp.set_variables_scaling_method (MultilayerPerceptrón::MeanStandardDeviation);

mlp.save ("../Data/MultilayerPerceptrón.dat");

mlp.save_expression ("../Data/MultilayerPerceptrónExpression.dat");

nse.save ("../Data/NormalizedSquaredError.dat");

qnm.save ("../Data/QuasiNewtonMethod.dat");

qnm.save_training_history ("../Data/TrainingHistory.dat");

std::string trmn = qnm.get_training_rate_method_name ();

double mpin = qnm.get_minimum_parameters_increment_norm ();

int men = qnm.get_maximum_epochs_number ();

double mt = qnm.get_maximum_time ();

nParametrosRN = mlp.get_neural_parameters_number ();

parametrosRN = mlp.get_neural_parameters ();

mJacobiana = mlp.calculate_Jacobian (entradasPrueba);

mSensibilidad = mlp.calculate_sensitivity (entradasPrueba);

expresionMat = mlp.get_expression ();

calObjective = nse.calculate_objective ();

calObjGradient = nse.calculate_objective_gradient ();

calEvaluation = nse.calculate_evaluation ();

calGradient = nse.calculate_gradient ();

histEvaluacion = qnm.get_evaluation_history ();

histGradient = qnm.get_gradient_history ();

histTrainingRate = qnm.get_training_rate_history ();

histElapsedTime = qnm.get_elapsed_time_history ();

dsStatistics.save ("../Data/DataStatistics.dat");

parametrosRN.save ("../Data/parametrosRN.dat");

mJacobiana.save ("../Data/jacobiano.dat");

mSensibilidad.save ("../Data/sensibilidad.dat");

std::ofstream arch1 ("../Data/nparametros.dat");

arch1 <<"Numero de parametros: "<< nParametrosRN << std::endl;

arch1.close ();

std::ofstream arch2 ("../Data/expresionMP.dat");

arch2 <<"Expresion matematica en el perceptrón multicapa:" << std::endl;

arch2 <<""<< expresionMat << std::endl;

arch2.close ();

calObjGradient.save ("../Data/gradientemlp.dat");

calGradient.save ("../Data/gradientefo.dat");

calHessian.save ("../Data/hessian.dat");

std::ofstream arch3 ("../Data/evaluacion.dat");

arch3 <<"Evaluacion de la red neuronal:" << std::endl;

arch3 <<""<< calObjective << std::endl;

arch3.close ();

std::ofstream arch4 ("../Data/evaluacionFo.dat");

arch4 <<"Evaluacion de la funcion objetivo:" << std::endl;

arch4 <<""<< calEvaluation << std::endl;

arch4.close ();

histParametros.save ("../Data/histParametros.dat");

histEvaluacion.save ("../Data/histEval.dat");

histGradient.save ("../Data/histGradiente.dat");

histTrainingRate.save ("../Data/histTrainingR.dat");

histElapsedTime.save ("../Data/histTime.dat");

}