APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL RECONOCIMIENTO DE ROSTROS EN UNA IMAGEN, UTILIZANDO REDES NEURONALES Y ALGORITMOS DE RECONOCIMIENTO DE OBJETOS DE LA BIBLIOTECA OPENCV EDISON RENE CABALLERO BARRIGA COD: 20162099033 GRUPO 2 GRUPO SEMINARIO: 24 UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERIA ESPECIALIZACIÓN EN INGENIERÍA DE SOFTWARE BOGOTA D.C. 2017
60
Embed
APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL RECONOCIMIENTO DE ...repository.udistrital.edu.co/bitstream/11349/6104/1/CaballeroBar... · reconocimiento de rostros en una
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL
RECONOCIMIENTO DE ROSTROS EN UNA IMAGEN, UTILIZANDO REDES
NEURONALES Y ALGORITMOS DE RECONOCIMIENTO DE OBJETOS DE LA
BIBLIOTECA OPENCV
EDISON RENE CABALLERO BARRIGA
COD: 20162099033
GRUPO 2
GRUPO SEMINARIO: 24
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERIA
ESPECIALIZACIÓN EN INGENIERÍA DE SOFTWARE
BOGOTA D.C.
2017
APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL
RECONOCIMIENTO DE ROSTROS EN UNA IMAGEN, UTILIZANDO REDES
NEURONALES Y ALGORITMOS DE RECONOCIMIENTO DE OBJETOS DE LA
Para conseguir que cada nuevo clasificador preste mayor atención a los datos más erróneos
se emplea una función de énfasis que pondera la importancia de cada dato durante el
entrenamiento del clasificador.
1.5.2.7. Clasificador Haar en Cascada
El Clasificador Haar en cascada, es un método desarrollado por Viola-Jones (Viola &
Jones, Rapid object detection using a boosted cascade of simple features, 2001) y es una
versión del algoritmo Adaboost (Freund & Schapire, 1997). Es un clasificador basado en
árboles de decisión con entrenamiento supervisado. Estos clasificadores se utilizan para
realizar el reconocimiento de un rostro en una imagen, utilizando clasificadores débiles
para cada una de las características que se desea detectar.
18
En el análisis de una imagen en busca de un rostro, se debe recorrer la imagen
completamente, esto se realiza tomando pequeñas ventanas de la imagen original. La mayor
parte de las ventanas que se analizan corresponden con porciones de la imagen donde no se
encuentran rostros, por lo tanto, un método rápido y sencillo, es analizar la pequeña ventana
de la imagen, si no es un rostro, desecharla y no procesarla de nuevo. De esta manera, se
optimiza el tiempo necesario para comprobar una posible región de un rostro en la imagen
completa.
Para realizar el proceso mencionado anteriormente, Viola-Jones utiliza la Cascada de
Clasificadores. En lugar de aplicar todas las características, en una ventana, agrupa las
características en diferentes etapas de los clasificadores y aplica una por una.
(Normalmente las primeras etapas contendrán un número muy reducido de características a
usar). Si una ventana falla en la primera etapa se desecha y no se evalúan las características
restantes en la ventana. Si pasa, se aplica la segunda etapa de funciones y se continua el
proceso. La ventana que pasa por todas las etapas es una región donde se encuentra un
rostro.
1.5.2.8. Lenguaje C# de .Net
El lenguaje C#, (See Sharp), es un híbrido de C y C ++, es un lenguaje de programación de
Microsoft (Microsoft, 2017). C # es un lenguaje de programación orientado a objetos
utilizado con servicios Web basados en XML en la plataforma .NET y diseñado para
mejorar la productividad en el desarrollo de aplicaciones web.
C# cuenta con seguridad de tipos, la recolección de basura, declaraciones de tipo
simplificados, control de versiones y soporte escalabilidad, y otras características que hacen
que las soluciones de desarrollo más rápido y más fácil, especialmente para COM + y
servicios Web. Los críticos de Microsoft han señalado las similitudes entre C # y Java.
19
Microsoft define c#, como: C # es un lenguaje orientado a objetos elegante y de tipo seguro
que permite a los desarrolladores crear una variedad de aplicaciones seguras y robustas que
se ejecutan en .NET Framework (Microsoft, 2017).
1.5.3. MARCO HISTÓRICO
En el siglo XVI se desarrolla la teoría de la perspectiva, las Máquinas de Perspectiva
ayudan a los pintores a reproducir en una imagen, exactamente la perspectiva de un objeto
observado, sin tener que hacer cálculos matemáticos.
En el siglo XIX el químico francés Joseph Nicéphore Niépce, considerado el inventor de la
fotografía, logra fijar una imagen en una superficie fotosensible ubicada dentro de una
cámara obscura (BATCHEN, 2004). Posteriormente, en 1838 el químico francés Daguerre
hizo el primer proceso fotográfico práctico. Daguerre utilizó una placa fotográfica que era
revelada con vapor de mercurio y fijada con trisulfuro de sodio, este se emplea sobre todo
como fijador en la fotografía (Mery, 2004).
Un hito importante en el inicio de la formulación de un enfoque para la visión artificial, fue
acotado por Larry Roberts (Roberts, 1963), que trabajo ampliamente en los inicios del
internet desde el proyecto ARPA, el cual, en 1961 creo un software que podía ver una
estructura de bloques, analizar y crear una versión de la misma utilizando otra perspectiva.
Esto lo realizo con una cámara conectada a un computador (Bidgoli, 2004).
El trabajo que aporta las bases conceptuales y teóricas sobre visión artificial es publicado
en 1982 por David Marr (Marr D. , 1982), este trabajo presenta por primera vez una
metodología completa para el análisis de imágenes a través de un computador. A partir de
este trabajo de Marr, la visión artificial se establece como como una línea principal de
investigación en muchas universidades. Por ello se considera que la década de los ochenta,
marca un hito en el desarrollo de la Visión Artificial por computadora.
20
1.6. METODOLOGÍA DE LA INVESTIGACIÓN
Ian Sommerville (Sommerville, Ingenieria del Software, 2006), define modelo de proceso
de software, como "Una representación simplificada de un proceso de software,
representada desde una perspectiva específica. Por su naturaleza los modelos son
simplificados, por lo tanto; un modelo de procesos de software es una abstracción de un
proceso real."
El modelo de desarrollo elegido para el presente trabajo es un modelo incremental, en este
modelo las actividades del proceso de desarrollo de software se llevan a cabo en secuencias
lineales, en forma escalonada a medida que avanza el calendario de actividades. Este
modelo es muy útil cuando los requerimientos iniciales del software están bien definidos,
pero se desea tener de forma temprana una versión con funcionalidad limitada del software
y aumentarla en incrementos posteriores (Pressman, 2005).
El primer incremento de este modelo de desarrollo, generalmente es el producto
fundamental, en el cual se abordan los requerimientos básicos, y se dejan para próximos
incrementos las características suplementarias. Este modelo fue propuesto por Harlan D.
Mills en 1980 (Basili, DeMarco, & Mili, 1999), y surge con la necesidad de poder probar el
software de forma temprana y poder tomar mejor experiencia en los requerimientos a
medida que se adquiría experiencia en el sistema.
Imagen 4. Modelo de desarrollo iterativo-incremental. (Sommerville, Ingenieria del Software, 2006)
Para el desarrollo de cada uno de los incrementos, se puede utilizar un modelo clásico en
cascada, si los requerimientos a desarrollar como parte del incremento son lo
suficientemente claros y se pueden considerar estables. El modelo en cascada es el modelo
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
21
de desarrollo de mayor uso en la industria del software, en este modelo cada fase debe
seguirse en orden y debe terminar para poder continuar con la siguiente.
En el modelo en Cascada las actividades fundamentales, según define Pressman (Pressman,
2005), son:
• Definición de los requisitos: Los servicios, restricciones y objetivos son
establecidos con los usuarios del sistema. Se busca hacer esta definición en detalle.
• Diseño de software: Se divide el sistema en sistemas de software o hardware. Se
establece la arquitectura total del sistema. Se identifican y describen las
abstracciones y relaciones de los componentes del sistema.
• Implementación y pruebas unitarias: Construcción de los módulos y unidades de
software. Se realizan pruebas de cada unidad.
• Integración y pruebas del sistema: Se integran todas las unidades. Se prueban en
conjunto. Se entrega el conjunto probado al cliente.
• Operación y mantenimiento: Generalmente es la fase más larga. El sistema es
puesto en marcha y se realiza la corrección de errores descubiertos. Se realizan
mejoras de implementación. Se identifican nuevos requisitos.
En este modelo una fase no puede iniciar, si la fase anterior no se ha terminado, esto es un
principio del modelo y debe ser respetado, ya que la salida de cada fase alimenta a la fase
siguiente.
Imagen 5. Fases del desarrollo en cascada. (Pressman, 2005)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
22
1.7. ESTUDIO DE SISTEMAS PREVIOS
El MIT junto con la Universidad de Stanford se perfilan como los centros más
sobresalientes en los estudios de visión artificial, dentro de sus trabajos más relevantes se
pueden mencionar la visión aplicada a robótica bajo el proyecto Hand-Eye (Estados Unidos
Patente nº 7151853, 2005) y el llamado proyecto UIS (Nakano & Yasuaki, 1988), este
último proyecto marca el comienzo del uso de estas técnicas en aplicaciones de tipo militar.
Por otra parte, países como Japón desarrollaron el llamado proyecto PIPS (Pattern-
Information Processing System) (Nishino, 1978), el cual impulsó el desarrollo del análisis
de imágenes (Ken-ichi, Masatsugu, & Hidenori, 1978).
Los siguientes trabajos presenta aplicaciones de las técnicas de visión y reconocimiento
artificial, estos trabajos ya se están probando y utilizando en ambientes reales y los
mencionamos debido a su gran contribución en la visión artificial.
1.7.1. CARE-O-BOT
En 1999 en la universidad de Stuttgart Alemania, los médicos Schaeffer y May (Schraft,
Schaeffer, & May, 1998), desarrollaron el sistema Care-O-bot™, este sistema intenta
contribuir a las soluciones tecnológicas necesarias una plataforma de demostración de un
sistema móvil de atención en el hogar.
El Care-O-bot™ es un robot de servicio móvil que tiene la capacidad de realizar diversas
tareas de apoyo en el hogar, como llevar y traer objetos. El énfasis principal está puesto en
la integración de las tareas de comunicación y sociales, como llamadas automáticas de
emergencia y comunicación interactiva.
1.7.2. PHOTOFACE
En el 2011 durante la conferencia Information Forensics and Security de la IEEE, se
presenta la base de datos PhotoFace (Zafeiriou, 2013), en este trabajo se presenta una base
de datos adecuado para el reconocimiento facial 2D y 3D, basado en estéreo fotométrico.
La base de datos PhotoFace se creó mediante una medida de cuatro dispositivos estéreo
fotométricos, estos pueden ser fácilmente utilizados en entornos comerciales. A diferencia
23
de otras bases de datos a disposición del público el nivel de cooperación entre los sujetos y
el mecanismo de captura fue mínimo. El dispositivo propuesto también se puede usar, para
capturar en 3D caras expresivas.
1.7.3. LUNABOT
Un grupo de estudiantes de la Universidad Pedagógica Nacional participaron en la
competencia NASA's Third Annual Lunabotics Mining Competition, en el que participaron
un total de 70 equipos de universidades de diferentes países a nivel mundial. El desafío de
los estudiantes era diseñar y construir un robot excavador, llamado Lunabot, que pudiera
extraer y depositar un mínimo de 10 kilógramos de un compuesto similar a la arena lunar,
en 10 minutos en un lugar cerrado, desplazándose de un punto a otro (Ministerio de
Educación Nacional, 2013).
Como podemos darnos cuenta los trabajos sobre Visión Artificial no son solo interés de
instituciones o universidades extranjeras, en Colombia también existen trabajos interesantes
sobre este tema y que han generado aportes importantes de aplicación en diferentes campos
de la industria y la ciencia.
1.8. ORGANIZACIÓN DEL TRABAJO DE GRADO
El presente documento se ha organizado en tres partes cada una a su vez, organizada en
capítulos.
• En la primera parte se realiza la descripción del problema de investigación y los
objetivos, que motivaron el desarrollo del proyecto.
• En la segunda parte se desarrollan los conceptos relacionados con la detección y el
reconocimiento de rostros en imágenes.
• En la tercera parte se presentan los resultados obtenidos del proyecto y los trabajos
futuros que se pueden desarrollar.
24
PARTE 2. DESARROLLO DE LA INVESTIGACIÓN
CAPÍTULO 2. RECONOCIMIENTO BIOMETRICO
2.1. BIOMETRÍA
La Biometría es la ciencia que busca establecer la identidad de un Individuo basado en
atributos físicos o de comportamiento (Jain, Bolle, & Pankanti, Biometrics: personal
identification in networked society, 2006). El concepto de biometría proviene de la palabra
bio (vida) y metría (medida), por lo tanto, un equipo biométrico mide e identifica alguna
característica propia de una persona.
El objetivo de los sistemas biométricos es la identificación, entendida como el
reconocimiento de una persona; o la autenticación, verificación de un individuo en una base
de datos de características. En los sistemas biométricos es muy importante definir su
objetivo, ya que algunas características son mejores para aplicaciones donde se busque
identificar y otras características funcionan mejor si el objetivo es autenticar (Pankanti,
Bolle, & Jain, 2002).
Las características anatómicas suelen permanecen estables al paso del tiempo, por ejemplo,
la huella dactilar; por el contrario, las características de comportamiento, pueden variar con
los años o con el estado anímico de la persona. Por ejemplo, la firma es considerada una
característica de comportamiento, que puede variar con el paso del tiempo.
No cualquier característica anatómica puede ser utilizada con éxito por un sistema
biométrico. Para que una característica pueda ser considerada como válida para un sistema
biométrico se debe considerar los siguientes aspectos (Jain, Flynn, & Ross, Handbook of
biometric, 2007):
• Universalidad: Que cualquier persona del mundo posea esta característica.
• Unicidad: Que la probabilidad que dos personas tengan esta característica idéntica
sea muy pequeña.
• Permanencia: Que la característica perdure en el tiempo.
25
• Cuantificación: Que la característica pueda ser medida de forma cuantitativa.
• Rendimiento: Que tan preciso, veloz y robusto es el proceso de identificación
• Aceptabilidad – Que tanta aprobación tiene por parte de las personas
• Fiabilidad - ¿Qué tan fácil engañar al sistema mediante técnicas fraudulentas?
La Biometría hace posible que una característica física de nuestro cuerpo pueda ser
utilizada como identificación y clave de acceso. Actualmente los sistemas Biométricos
tienen un futuro muy prometedor en lo relacionado a la autenticación digital, y se están
realizando muchos estudios para llevarla a sectores específicos como los pagos bancarios.
2.2. BIOMETRÍA POR RASGOS FACIALES
La biometría busca desarrollar sistemas de seguridad y de autenticación confiables y
rápidos, basados en la identificación de las características propias de la persona, con lo cual
se logra que la suplantación sea prácticamente imposible (Woodward Jr, Horn, Gatune, &
Thomas, 2003). La técnica de reconocimiento basadas en los rasgos del rostro es conocida
como biometría facial, y se basa en las diferencias que existen entre el rostro de una
persona, con respecto a las demás.
El reconocimiento facial se utiliza principalmente para el control y seguridad, en este
campo se cuenta con dos categorías (Xiao, 2007):
• Verificación biométrica: consiste en usar una determinada tecnología para asegurar
que el individuo que debemos reconocer es quien dice ser.
• Identificación biométrica: en este caso no queremos confirmar que un usuario es
quien asegura ser, sino que tratamos de aplicar la tecnología para conocer la
identidad de un individuo.
Un sistema de biometría facial consta de tres componentes fundamentales:
• Cámara: Se encarga de registrar la imagen
26
• Software de Detección de rostros: Se encarga de verificar si en la imagen está
presente un rostro.
• Software de reconocimiento: Se encarga de diferenciar los rostros que se encuentran
en la imagen, para diferenciar entre las personas presentes.
El reconocimiento facial tiene su principal complicación relacionada con la luz, ya que
dependiendo de la iluminación puede cambiar el color del rostro y generar sombras que
pueden afectar la detección y el reconocimiento. Otro factor es el envejecimiento, ya que
con el paso del tiempo las facciones del rostro cambian, y el contorno de los ojos cambia
debido a las arrugas.
Este campo a tenido gran desarrollo en los últimos veinte años, y sigue evolucionando,
financiado principalmente por la industria militar, los bancos y la de seguridad.
CAPÍTULO 3. DETECCIÓN Y RECONOCIMIENTO DE ROSTROS
3.1. ALGORITMO DE VIOLA-JONES
El método de reconocimiento de objetos en imágenes digitales conocido como Viola-Jones,
fue propuesto por los investigadores Paul Viola y Michael Jones en el año 2001 (Viola &
Jones, Rapid object detection using a boosted cascade of simple features, 2001). Es uno de
los primeros métodos que logra detectar eficazmente objetos en tiempo real en una imagen.
Este método originalmente fue desarrollado para realizar la detección de rostros, pero
puede ser usado para detectar cualquier objeto dentro de una imagen. Actualmente es uno
de los métodos más utilizados en la industria, por su velocidad y su alto porcentaje de
acierto.
Viola-Jones utiliza clasificadores de características para lograr el reconocimiento de los
objetos. Basándose en estas características Haar (Papageorgiou, Oren, & Poggio, 1998), se
logra obtener un detector de objetos robusto (Viola & Jones, Rapid object detection using a
27
boosted cascade of simple features, 2001). También se denominan estos clasificadores
mediante el nombre de cascada, ya que el resultado del clasificador es el fruto de varios
clasificadores más simples utilizados en conjunto. Una porción de la imagen donde se
presume está el objeto buscado, debe superar todas las etapas del clasificador en cascada
para ser aceptado.
El método de Viola-Jones, se divide en tres etapas. En la primera se realiza una
transformación de la imagen generando una nueva llamada imagen integral, en la segunda
etapa se realiza la extracción de características usando filtros con base Haar (Viola & Jones,
Robust real-time face detection, 2004), y por último se usa Boosting (Mayhua-Lopez,
Gómez-Verdejo, & Figueiras-Vidal, 2012) para la construcción de clasificadores en
cascada.
Etapas de procesamiento de Viola-Jones
Este algoritmo realiza tres etapas para realizar la detección de un rostro, cada una de las
etapas se describe a continuación:
Imagen 6. Etapas del método para detección de rostros de Viola-Jones. Fuente: Realización propia.
28
a) Imagen Integral
La suma de todos los pixeles de un rectángulo, puede ser calculada empleando una
representación intermedia llamada imagen integral. Esta imagen intermedia permite extraer
de forma rápida características a diferentes escalas. Los autores definen la imagen integral
como aquella en la cual cada punto contiene el resultado de la suma de los valores de todos
los puntos situados por encima y a su izquierda en la imagen original.
Imagen 7. Calculo de la imagen integral de Viola-Jones. (OpenCv O. , 2017)
La imagen integral es utilizada por el algoritmo como una forma rápida de calcular la suma
de los valores del rectángulo de una característica de tipo Haar (Papageorgiou, Oren, &
Poggio, 1998). Esta imagen integral es la suma de los pixeles del rectángulo desde la
esquina superior izquierda hasta un punto elegido dentro de la imagen. Para el cálculo de la
imagen integral, la imagen original debe estar en escala de grises.
b) Extracción de características
En imágenes las características de cada objeto se extraen al aplicar ciertas funciones que
permitan la representación y descripción de los objetos de interés de la imagen (patrones).
29
Imagen 8. Filtros Haar rotados, trasladados y con cambios de escala. (OpenCv O. , 2017)
La extracción de características es un paso en el reconocimiento de patrones en el cuál las
medidas u observaciones son procesadas para encontrar a tributos que puedan ser usados
para asignar los objetos a determinada clase. En la metodología de Viola-Jones, la
extracción de características es realizada aplicando a la imagen filtros con bases Haar
(Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001).
Imagen 9. Detección de rostros utilizando características Haar en cascada. (OpenCv O. , 2017)
30
c) Clasificación
Esta etapa se encarga de seleccionar un conjunto de características de tipo Haar
(Papageorgiou, Oren, & Poggio, 1998) y aplicarlos dentro de la imagen que se está
analizando. Para llevar a cabo la clasificación es necesarios realizar un proceso de
entrenamiento para crear un clasificador en cascada. Este proceso se realiza mediante el
algoritmo de AdaBoots (Sirovich & Kirby, 1987). La aplicación de clasificadores en
cascada ha permitido obtener muy buenos resultados y es uno de los grandes aportes de este
algoritmo.
La utilización de un clasificador en cascada y la introducción del algoritmo de aprendizaje
AdaBoots, además del gran aporte conceptual, son los motivos principales para que el
método de Viola-Jones sea considerado como uno de los métodos más importantes
desarrollados en este campo. La idea de Paul Viola y Michael Jones de utilizar
clasificadores débiles para formar clasificadores fuertes, denominados clasificadores en
cascada, ha sido utilizado por otros investigadores para el reconocimiento de objetos en
visión por computador.
3.2. EIGENFACES
Los sistemas de reconocimiento de rostros se basan en la idea de que cada persona tiene
una estructura de rostro particular y, utilizando la simetría facial, es posible la comparación
computarizada de las imágenes del rostro. El rostro y sus propiedades estructurales deben
ser identificadas cuidadosamente, y la imagen resultante debe convertirse en datos digitales
bidimensionales.
El enfoque de Eigenface (Sirovich & Kirby, 1987) es considerado por muchos como la
primera tecnología de reconocimiento facial de alto desempeño, y sirvió como base para
uno de los principales productos comerciales de tecnología de reconocimiento facial en
biometría (Heseltine, Pears, & Austin, 2002). Desde su desarrollo inicial y publicación, ha
habido muchas extensiones al método original y muchos nuevos desarrollos en sistemas
automáticos de reconocimiento facial.
31
La idea de utilizar los componentes principales para representar los rostros humanos fue
desarrollada por Sirovich y Kirby (Sirovich & Kirby, 1987) y utilizada por Turk y Pentland
(Turk & Pentland, Eigenfaces for recognition, 1991) para la detección y reconocimiento de
rostros. La motivación de las Eigenfaces es doble:
• Extraer la información facial pertinente, que puede o no estar directamente
relacionada con la intuición humana de rasgos faciales como los ojos, la nariz y los
labios. Una manera de hacerlo es capturar la variación estadística entre las imágenes
de un mismo rostro.
• Representar imágenes de rostros eficientemente. Para reducir el cómputo y la
complejidad del espacio, cada imagen de un rostro se puede representar usando un
pequeño número de parámetros.
Los Eigenfaces pueden ser considerados como un conjunto de características que
representan la variación global entre las imágenes de un rostro. Cada Eigenface representa
un rasgo característico de las imágenes faciales siguiendo un patrón obtenido del estudio de
muchos rostros.
El funcionamiento de este método es el siguiente:
• Por cada imagen del set de entrenamiento (imágenes de prueba) se concatenan sus
filas de pixeles, transformándola en un vector en el que cada valor se corresponde
con el valor del pixel correspondiente.
• Tras esto, se obtiene una matriz de vectores, siendo cada vector una imagen.
• A este vector se le aplica el método PCA (Principal Component Analysis) (Peason,
1901), para obtener los componentes principales y reducir la dimensionalidad.
A partir de estos Eigenfaces, cada imagen del set de entrenamiento se puede reconstruir de
una forma muy aproximada. Se calcula la distancia entre el vector de valores de la imagen
de entrada con el resto de las imágenes del set de entrenamiento, y se selecciona la que
produce la distancia mínima. Si dicha distancia se encuentra dentro de un umbral
32
establecido, se selecciona como valor aceptado. Si no está dentro del umbral, se considerará
un rostro desconocido.
Este método es muy aceptado debido a su fácil implementación y a que, bajo unas buenas
condiciones, tiene un buen porcentaje de aciertos. Por el contrario, un inconveniente de este
enfoque es que no solo se maximiza la dispersión entre imágenes producida en mayor parte
por las condiciones de iluminación y por la expresión facial, lo cual dificulta la
clasificación.
CAPÍTULO 4. DESARROLLO DE LA APLICACIÓN
En este capítulo se realizará la descripción de los componentes utilizados para el desarrollo
de la aplicación para el reconocimiento de rostros. Se describe como mediante una librería
de Visión Artificial como OpenCv y un lenguaje orientado a objetos como c#, es posible
realizar el desarrollo de la aplicación, logrando muy buenos resultados.
También se describe la metodología de desarrollo utilizada, y los diferentes artefactos
generados como parte del proceso de diseño y desarrollo.
4.1. OPENCV
Para el desarrollo de la aplicación utilizaremos el módulo de “Object Detection” del Core
de la librería OpenCV. Este detector de objetos utiliza los conceptos propuesto por Paul
Viola. (Viola & Jones, Rapid object detection using a boosted cascade of simple features,
2001)
La librería OpenCV (Open Source Computer Vision) es biblioteca de visión artificial
iniciada por Intel en 1999 (OpenCv, 2017). Esta biblioteca multiplataforma se centra en el
procesamiento de imágenes en tiempo real e incluye implementaciones libres de patentes de
los últimos algoritmos de visión computarizada.
33
Esta librería está escrita en C y C++ y cuenta con aproximadamente quinientas funciones
que abarcan diferentes procesos de la visión artificial. OpenCV fue diseñado para la
eficiencia computacional y con un fuerte enfoque en aplicaciones en tiempo real. La librería
permite el manejo eficiente de imágenes y matrices, reconocimiento de objetos y análisis de
imágenes utilizando la técnica de Eigenfaces y el algoritmo AdaBoost (OpenCv O. , 2017).
OpenCv se encuentra actualmente en su versión 3.2.0, liberada el 23 de diciembre de 2016,
en esta versión se cuenta con la clase de FaceRecognizer para el reconocimiento facial, Los
algoritmos actualmente disponibles son:
• Eigenfaces
• Fisherfaces
• Local Binary Patterns Histograms
OpenCv nos permite detectar un rostro mediante el uso de clasificadores en cascada, y
realizar el reconocimiento de un rostro especifico utilizando Eigenfaces. Por lo anterior se
eligió esta librería para el desarrollo de la aplicación para el reconocimiento de una
persona, la cual es el producto final esperado del presente trabajo.
El módulo de reconocimiento de objetos de OpenCv nos provee las siguientes clases:
Clases
class cv::BaseCascadeClassifier
class cv::CascadeClassifier
Cascade classifier class for object detection.
struct cv::DetectionROI
struct for detection region of interest (ROI)
34
struct cv::HOGDescriptor
class cv::SimilarRects
Tabla 1. Lista de Clases del módulo de reconocimiento de objetos de OpenCv. (OpenCv O. , 2017)
Para el reconocimiento especifico de rostros OpenCv suministra las clases y métodos:
Clases
class cv::face::BasicFaceRecognizer
class cv::face::FaceRecognizer
Abstract base class for all face recognition models. More...
class cv::face::LBPHFaceRecognizer
class cv::face::PredictCollector
Abstract base class for all strategies of prediction result handling. More...
Ptr< LBPHFaceRecognizer > cv::face::createLBPHFaceRecognizer (int radius=1, int
neighbors=8, int grid_x=8, int grid_y=8,
double threshold=DBL_MAX)
35
Tabla 2. Clases y métodos del Módulo de reconocimiento facial de OpenCV. (OpenCv, 2017)
4.1. EMGUCV
Emgu CV es un contenedor para la plataforma .Net de la biblioteca de procesamiento de
imágenes de OpenCV (EmguCV, 2017). Permitir que las funciones de OpenCV sean
llamadas desde los lenguajes compatibles con .NET, tales como C #, VB, VC ++ etc. El
contenedor puede ser compilado por Visual Studio, Xamarin Studio y Unity, puede
ejecutarse en Windows, Linux, Mac OS X, iOS, Android y Windows para teléfonos
móviles.
EmguCV permite usar OpenCV en la plataforma .net con lenguajes como C #. El algoritmo
de Viola-Jones hace parte de EmguCV. Al usar este algoritmo, estaríamos haciendo uso de
un detector de rostros que ha sido entrenado con miles y miles de rostros humanos. Los
datos de entrenamiento generados a partir de los rostros se almacenan en archivos Xml que
vienen por defecto con el paquete EmguCV que se almacenan en [EnguCV Root Folder] \
opencv \ data \ haarcascades.
4.2. IMPLEMENTACIÓN DEL MODELO DE DESARROLLO
Para el desarrollo de la aplicación para el reconocimiento de rostros se eligió el modelo
Incremental. Esta elección se basó en el hecho de que los requerimientos de la aplicación
son los suficientemente estables, ya que estos fueron definidos con anticipación y formaron
parte del anteproyecto presentado como parte de la investigación, y de esta forma poder
realizar el desarrollo en iteraciones; al final de cada iteración se cuenta con una versión de
la aplicación que cuenta con funcionalidad lista para ser probada.
El modelo Incremental permite tener de forma temprana un prototipo de la aplicación, en la
cual se implemente la funcionalidad relacionada a la detección de rostros. Un segundo
incremento con la funcionalidad relacionada con el entrenamiento y el reconocimiento de
una persona. Un tercer incremento estará relacionado a la parte de usabilidad e interface de
usuario.
36
Con este modelo es posible probar cada módulo de la aplicación, detectar las fallas
corregirlas y seguir con el siguiente modulo, sin necesidad de esperar a tener toda la
funcionalidad implementada para iniciar con las pruebas. Esto permite una
retroalimentación temprana y la posibilidad de realizar ajustes específicos, sin tener que
realizar cambios a todo el desarrollo realizado.
A continuación, se detalla el proceso que se realizara para cada uno de los incrementos:
PRIMER INCREMENTO
• Definición de los requisitos: Se desarrollan los requerimientos relacionados con la
detección de un rostro en una imagen.
• Diseño de software: Se diseñan los casos de uso.
• Implementación y pruebas unitarias: Se realiza el desarrollo y las pruebas.
SEGUNDO INCREMENTO
• Definición de los requisitos: Se desarrollan los requerimientos relacionados con el
reconocimiento del rostro de una persona.
• Diseño de software: Se diseñan los casos de uso. Se diseña la arquitectura del
sistema.
• Implementación y pruebas unitarias: Se realiza el desarrollo y las pruebas.
• Integración y pruebas del sistema: Se realizan las pruebas de integración del
sistema, realizando pruebas de detección y reconocimiento de un rostro
TERCER INCREMENTO
• Integración y pruebas del sistema: Se realizan casos de prueba para el sistema. Estos
casos de prueba estarán relacionados con el entrenamiento y el reconocimiento de
un rostro.
• Operación y mantenimiento: Se realiza la operación de la aplicación en un ambiente
controlado.
37
El resultado final será la aplicación funcionando, los casos de uso, los diagramas de
arquitectura del sistema y la aplicación desarrollada con el lenguaje C#.
4.3. DEFINICIÓN DE LOS REQUISITOS
4.3.1. ALCANCE
Desarrollar un sistema de visión artificial, utilizando la librería de Visión Artificial
OpenCV, que pueda ser entrenado para reconocer el rostro de una persona en una imagen
de video. El entrenamiento se realizará utilizando fotografías del rostro de la persona
tomadas de forma frontal.
La aplicación realizará el proceso de reconocimiento facial, utilizando una cámara web
conectada al sistema. Cuando la persona, con la cual se realizó el entrenamiento, este
dentro del espacio capturado por la cámara, el sistema la reconocerá e indicará en la
pantalla la ubicación de la persona dentro de la imagen y el nombre de la persona.
4.3.2. LIMITACIONES
• El sistema solo reconocerá una persona dentro de la imagen
• Para el entrenamiento y reconocimiento del rostro de la persona, esta no debe llevar
accesorios como lentes, sombreros u otro tipo de elementos que interfieran en el
reconocimiento.
• El clasificador para el reconocimiento de la persona, requiere de fotografías con
ciertos parámetros de iluminación y fondo.
• El sistema solo mostrara en pantalla el nombre de la persona cuando la reconozca
dentro de la imagen.
4.3.3. RESULTADOS ESPERADOS
El sistema de visión artificial desarrollado, será capaz de analizar un flujo de video que
recibe de una cámara web, y por medio de los algoritmos para reconocimiento de rostros,
proporcionados por la librería OpenCV, localiza el rostro en la imagen y lo resalta mediante
un rectángulo.
38
El sistema reconocerá el rostro de una persona en particular, para lo cual se debe realizar
con anterioridad el entrenamiento utilizando imágenes del rostro de la persona tomadas de
forma frontal. Cuando el sistema reconozca la persona dentro de la imagen, se indicara en
pantalla encerrando el rostro de la persona en un rectángulo e imprimiendo su nombre.
4.4. DISEÑO DE SOFTWARE
Los requerimientos para la aplicación de visión artificial están relacionados con la
interacción del usuario con el sistema y con los diferentes subsistemas que lo componen, ya
que este depende de la información de otros procesos automáticos que están en continua
ejecución.
4.4.1. REQUERIMIENTOS
Requerimientos funcionales:
Numero Tipo Descripción
RF1 Funcional El sistema debe poder reconocer un objetivo dentro de su
campo visual, para ello debe estar analizando continuamente
el flujo de video recibido por una cámara.
RF2 Funcional El objetivo que deberá reconocer el sistema será único, el
sistema no reconocerá varios objetos de diferentes tipos, para
este trabajo se decidió que el objetivo sería una persona que
esté dentro del campo de visión del sistema.
RF3 Funcional El sistema debe ser capaz de detectar un rostro cuando este
dentro de su campo de visión.
RF4 Funcional Cuando el sistema detecte un rostro este debe indicarlo en
pantalla dibujando una señal que indique que se reconoció el
objetivo.
RF5 Funcional Cuando el sistema haya reconocido el objetivo debe indicar el
nombre de la persona que concuerda con el rostro detectado.
39
Requerimientos no funcionales:
Numero Tipo Descripción
RNF1 No funcional Se necesita un sistema de entrenamiento para definir el
objeto a buscar.
RNF2 No funcional Se necesita un sistema portable con la capacidad de
capturar video y enviar la información al PC para su
procesamiento.
RNF3 No funcional El sistema debe desarrollarse con software libre
4.4.2. DISEÑO DE CASOS DE USO
Identificador caso de uso:
CU–01
Nombre:
Reconocimiento de objetivo
Propósito
El sistema debe poder reconocer un objetivo dentro de su campo visual, para ello debe estar
analizando continuamente el flujo de video recibido por una cámara.
Identificador caso de uso:
CU–02
Nombre:
Reconocer objetivo en campo visual
Propósito
40
Requerimiento funcional 2: El objetivo que deberá reconocer el sistema será único, el
sistema no reconocerá varios objetos de diferentes tipos, para este trabajo se decidió que el
objetivo sería una persona que esté dentro del campo de visión del sistema.
Requerimiento funcional 4: El sistema debe ser capaz de detectar un rostro cuando este
dentro de su campo de visión.
IDENTIFICADOR CASO DE USO:
CU–04
NOMBRE:
Indicar en pantalla que se encontró el objetivo
PROPÓSITO
Cuando el sistema detecte un rostro este debe indicarlo en pantalla dibujando una señal que
indique que se reconoció el objetivo.
41
4.4.3. ARQUITECTURA
Para la diseñar los modelos de la arquitectura de la aplicación, se utilizó la especificación
Archimate 2.0 y Architecture Development Method (AMD) (Group, 2012), con la cual se
generaron las tres capas de la Arquitectura: Negocio, Aplicación e Infraestructura. Para la
elaboración de los diagramas de utilizó el software ArchiTools.
4.4.3.1. Vista de Negocio
La Vista de arquitectura de negocio considera los aspectos funcionales del sistema, es decir,
lo que el nuevo sistema tiene la intención de hacer. Esto puede ser construido a partir de un
análisis del entorno existente y de los requisitos y limitaciones que afectan al nuevo sistema
(Blevins, Spencer, Tower, & Waskiewi, 2004).
La aplicación para detección de rostros, debe realizar el proceso de identificación de una
persona, la identificación busca responder la pregunta de: ¿quién es usted?, para ello se
debe comparar la imagen del rostro de la persona detectada en la imagen, con todos los
rostros de personas conocidas que tenga en su repositorio de datos para determinar su
identidad.
42
En la aplicación interactúan, el sistema y la persona que se desea identificar. A
continuación, se muestra el diagrama de negocio para la aplicación.
Imagen 10. Vista del Negocio. Realización Propia.
4.4.3.2. Vista de aplicación
La vista de aplicación es útil para diseñar o comprender la estructura principal de
aplicaciones o componentes y los datos asociados. La capa de aplicación comprende
aplicaciones de software que apoyan los componentes del negocio (Group, 2012).
La capa de aplicación da soporte a la capa de negocio, en esta capa se manifiestan el
dominio de datos y los componentes de la aplicación (Lankhorst, Proper, & Jonkers,
2009). Para la aplicación de reconocimiento de rostros se identifican tres componentes
principales: Autenticación, Detección y Reconocimiento.
La librería OpenCV también es un componente, pero para este caso es un componente de
apoyo, ya que provee servicios a los otros componentes de la aplicación, pero no va a ser
desarrollado o modificado.
43
Como objeto de datos, se encuentran las imágenes del entrenamiento, las cuales se
encuentran alojadas en un directorio y su metadato está en un XML.
Imagen 11. Vista de Aplicación. Realización Propia.
4.4.3.3. Vista de Infraestructura
El punto de vista de Infraestructura contiene los elementos de infraestructura de software y
hardware que soportan la capa de aplicación, como dispositivos físicos, redes o software
del sistema (por ejemplo, sistemas operativos, bases de datos y middleware) (Group, 2012).
Para la aplicación de detección de rostros, se requiere un computador con una cámara web,
la librería OpenCV y el Frame Work de .Net. Los dos últimos componentes deben estar en
la misma máquina, ya que se requieren para la ejecución de la aplicación, pero la cámara
web puede ser un periférico conectado por USB o puede ser una cámara IP.
Imagen 12. Vista de Infraestructura. Realización Propia.
44
4.4.3.4. Vista de Capas
El principio estructural detrás de esta vista, es que cada capa expone servicios, que son
utilizados por la capa superior o capas adyacentes (Group, 2012).
El objetivo principal del punto de vista de Capas es proporcionar una visión general de la
arquitectura en un mismo diagrama. Además, este punto de vista puede ser utilizado como
soporte para el impacto del análisis de cambios y análisis de desempeño o para el portafolio
de servicios.
Imagen 13. Vista de Capas. Realización Propia.
4.5. IMPLEMENTACIÓN Y PRUEBAS
El desarrollo de la aplicación se realizó utilizando el IDE de Visual Studio 2015 de
Microsoft, en su versión Community Edition, la cual cuanta con licencia libre de pago. Se
utilizó el lenguaje C# para el desarrollo del proyecto y de las pruebas de unidad.
45
C# es un lenguaje orientado a objetos, basado en C++, por lo cual resulta muy fácil de
aprender. Este lenguaje permite la conexión con OpenCV, y con bases de datos no
relacionales.
La solución para el desarrollo de la aplicación cuenta con un proyecto de tipo Windows
Forms, en el cual se encuentra el desarrollo de los formularios y los eventos asociados a los
controles dentro de los formularios.
Imagen 14. Solución y proyecto Windows Forms en .Net. Realización Propia.
Las imágenes de prueba con las cuales se realiza el entrenamiento, se guardan en un
directorio dentro de la aplicación, esto con el fin de que se tengan los permisos suficientes
para crear y leer archivos.
Imagen 15. Formulario de la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia.
46
4.6. INTEGRACIÓN Y PRUEBAS DEL SISTEMA
Para realizar las pruebas de integración del sistema, se crearon escenarios de prueba, con
diferentes flujos y resultados esperados.
Prueba Resultado Esperado
Detectar el rostro de una persona, ubicada
de frente a la cámara
Se debe resaltar el rostro en un recuadro.
Detectar el rostro de una persona ubicada
sobre una margen de la cámara.
Se debe resaltar el rostro en un recuadro.
Detectar el rostro de una persona que tiene
gafas oscuras.
No se debe detectar un rostro.
Detectar el rostro de una persona con una
gorra
No se debe detectar un rostro.
Detectar un rostro que no exista en las
imágenes de prueba
Se debe resaltar el rostro en un recuadro. Se
debe etiquetar como desconocido.
Detectar un rostro que se encuentre en las
imágenes de pruebas
Se debe resaltar el rostro en un recuadro. Se
debe etiquetar con el nombre de la persona
a la que pertenece el rostro.
Detectar el rostro de dos personas Se debe resaltar el rostro en un recuadro. Se
debe etiquetar con el nombre de la persona
a la que pertenece el rostro.
4.7. OPERACIÓN Y MANTENIMIENTO
La aplicación para el reconocimiento de rostros, debe instalarse en un computador que
cuente con una cámara web integrada, o con una conectada como periférico. La aplicación
inicia la captura de video tomando la cámara web por defecto que se encuentre configurada.
Cuando se inicia la aplicación y se inicia el reconocimiento de rostros, el sistema analiza
constantemente el flujo de video de la cámara en busca de rostros. Al detectar un rostro este
47
se enmarca en un rectángulo rojo, tal como puede apreciarse en la siguiente imagen. Si no
se ha realizado entrenamiento la aplicación marca el rostro de la persona como
desconocido.
Imagen 16. Imagen con un rostro detectado por la aplicación. Aplicación de Reconocimiento de Rostros.
Realización Propia.
Para realizar el entrenamiento, se debe dar clic en el botón con el texto “Entrenar Sistema de Reconocimiento”, el cual abre una nueva ventana con el formulario para registrar las fotografías de la persona que se desea identificar.
Imagen 17. Entrenamiento de la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia.
48
Las imágenes se guardan en un directorio local, la aplicación guarda cada imagen con el nombre de la persona a la cual pertenece, de esta forma cuando se realiza el proceso de reconocimiento se toma el nombre de la fotografía y se imprime en pantalla.
Imagen 18. Imágenes de entrenamiento. Aplicación de Reconocimiento de Rostros. Realización Propia.
Cuando el rostro detectado, coincide con el de una de las personas que se han registrado en
la aplicación, el sistema muestra el nombre de la persona en la parte superior del recuadro
rojo. En la siguiente imagen puede observarse que la aplicación logro reconocer el rostro
correspondiente a las imágenes de prueba.
Imagen 19. Imagen donde se indica el nombre de la persona. Realización Propia.
49
En la parte derecha del formulario se muestran las imágenes con las cuales se está
realizando la comparación. Estas son las imágenes que se guardaron durante el
entrenamiento. Con mayor cantidad de imágenes, es mejor el resultado del reconocimiento.
Imagen 20. Imagen donde se indica el nombre dos personas diferentes. Realización Propia.
La aplicación puede reconocer varias personas en la imagen, para ello solo es necesario realizar el entrenamiento, de las personas que se desean reconocer.
50
PARTE 3. CIERRE DE LA INVESTIGACIÓN
CAPÍTULO 5. RESULTADOS Y DISCUSIÓN
Como resultado de la presente investigación se logró desarrollar una aplicación que,
utilizando una librería de visión artificial, es capaz de reconocer el rostro de una persona en
una imagen. La aplicación puede ser entrenada para reconocer una o varias personas.
El proceso de reconocimiento inicia con la etapa de detección de rostros, en este proceso se
utilizó el algoritmo de Viola-Jones, que hace parte de la librería OpenCV, y que utiliza
clasificadores en cascada ya entrenados, en donde se utilizaron bases de datos como la de
AT&T Laboratories Cambridge (Cambridge, 1994), la cual cuenta con diez imágenes
diferentes del rostro de cuarenta personas.
Para el reconocimiento se utiliza Eigenfaces, que también viene implementado en OpenCV,
El cual realiza la comparación de la imagen del rostro detectado con las imágenes
guardadas, si encuentra una imagen que se acerqué mucho a la detectada, se indica la
correspondencia.
El reconocimiento facial implementado en la aplicación, es muy utilizado en la biometría,
para la autenticación y la verificación de personas. Utilizando la librería OpenCV, y un
lenguaje de programación es posible realizar aplicaciones de esta técnica orientadas a la
seguridad o al control de personas en oficinas, aulas de clase o para la presentación de
pruebas supervisadas de forma remota.
Aunque existen aún varias complicaciones con estas técnicas ya que son susceptibles a la
luz y a factores como los accesorios que lleve la persona, vemos que, dentro de condiciones
controladas, su desempeño es muy alto y no requieren de computadores con gran capacidad
de procesamiento.
El campo del reconocimiento facial y de objetos, sigue desarrollándose y en el futuro será
el estándar para la autenticación de personas en bancos y tramites gubernamentales.
51
También harán parte de nuestros hogares, ya que esta tecnología se combina actualmente
con el Internet de las Cosas.
CAPÍTULO 6. CONCLUSIONES
De los resultados de la presente investigación, podemos concluir que es posible crear un
sistema de visión artificial con las tecnologías disponibles en el momento. Se logró
comprobar la hipótesis inicial, ya que utilizando OpenCv y un lenguaje de programación
orientado a objetos como C#, fue posible desarrollar una aplicación capaz de reconocer el
rostro de una persona, analizando el flujo de video capturado por una cámara web.
OpenCv nos provee grandes herramientas para aquellos que quieren iniciar se en el estudio
de la visión artificial y del reconocimiento de objetos en imágenes y video. Los sistemas de
cómputo actuales, los precios de los procesadores y discos duros, hacen ahora que sea
posible tener estos sistemas de visión artificial en equipos de cómputo de bajo costo o
incluso en celulares.
CAPÍTULO 7. PROSPECTIVA DEL TRABAJO DE GRADO
La aplicación desarrollada en la presente investigación, puede ser utilizada en control de
presencia o control de acceso en diferentes ámbitos educativos y empresariales.
Como trabajos futuros se puede integrar con una base de datos no relacional distribuida,
con el fin de poder tener varios nodos de consulta, que puedan ser utilizados por diferentes
cámaras, y un nodo de registro, el cual permitirá autorizar una persona, que luego se
replicara a todos los nodos de lectura. Esto con el fin de poder ganar velocidad y
desempeño al momento del reconocimiento.
52
PARTE 4. BIBLIOGRAFIA
Angulo Usategui, J. (1986). Visión Artificial por Computador. Madrid: Thomson Paraninfo S.A. Association Federation of International. (2006). Robots in Education, Entertainment and Service.
FIRA RoboWorld Congress 2006.
Basili, V., DeMarco, T., & Mili, A. (1999). Science and engineering for software development: a
recognition of Harlan D. Mills' legacy. In Proceedings of the 21st international conference
on Software engineering, 710-711.
BATCHEN, G. (2004). Arder en deseos.: La concepción de la fotografía. Barcelona: Editorial
Gustavo Gili, S.L.
Bidgoli, H. (2004). The Internet Encyclopedia, Volume 2. Bakersfield, California: John Wiley and
Sons.
Branch, J., & Olague, G. (2001). La visión por computador: Una aproximación al estado del arte.
Revista Dyna, 133.
Bristol Robotics Laboratory, T. P. (2010). staffwww.dcs.shef.ac.uk. Recuperado el 2013, de
El código complete de la clase es el siguiente: #regionvariablesImage<Bgr,Byte>currentFrame;//ImagentomadaporlacamaraImage<Gray,byte>result,TrainedFace=null;//VariableparaguardarelentrenamientoImage<Gray,byte>gray_frame=null;//ImagenenescaladegrisesCapturegrabber;//Variabledecapturadevideostringpath=Application.StartupPath;//Metododedetección,seusaelcalsificador:haarcascade_frontalface_defaultpublicCascadeClassifierFace=newCascadeClassifier(Application.StartupPath+"/Cascades/haarcascade_frontalface_default.xml");MCvFontfont=newMCvFont(FONT.CV_FONT_HERSHEY_COMPLEX,0.5,0.5);intNumLabels;//EntrenamientoporEigenfacesClassifier_TrainEigen_Recog=newClassifier_Train();#endregionpublicControlPresencia(){InitializeComponent();//Loadofpreviustrainnedfacesandlabelsforeachimageif(Eigen_Recog.IsTrained){message_bar.ForeColor=Color.Green;message_bar.Text="Datosdeentrenamientolistos!!!";}else{message_bar.ForeColor=Color.Red;message_bar.Text="Noexistendatosdeentrenamiento.Deberealizarelentrenamiento.";}initialise_capture();}//CamaraStartStoppublicvoidinitialise_capture(){try{