Post on 07-Jan-2017
UNIVERSIDAD TECNOLÓGICA DE CAMPECHE DIRECCIÓN DE INGENIERÍA EN MECATRÓNICA
ISO 9001:2008 Cert. No. MQA 4000244
PROYECTO DE INTEGRADORA
FABRICACION DE JUGUETES
REALIZADA PARA LA EMPRESA:
LABORATORIO DE ELECTRONICA Y DISPOSITIVOS
TECNOLÓGICOS
QUE PRESENTAN:
ALEXIS RAMOS HERNÁNDEZ
ALEXANDER COCON SÁNCHEZ
ENRIQUE PÉREZ VAZQUEZ
EDGAR PÉREZ CANTE
DE LA PROFESIÓN:
INGENIERÍA EN MECATRÓNICA
GENERACIÓN:
2015-2017
San Antonio Cárdenas, Carmen, Campeche Diciembre de 2016
2
DATOS GENERALES DEL ALUMNO
ALUMNO:
ALEXIS RAMOS HERNÁNDEZ
MATRÍCULA:
4213010476
DIRECCIÓN Y TELÉFONO:
CALLE 77 #654C ENTRE 64ª Y 66 FRACCIONAMIENTO CIUDAD CAUCEL COL.
HERRADURA 2, MÉRIDA, YUCATAN.
TEL.: (938) 4054585 E-MAIL:alexis.1960@hotmail.com
3
ALUMNO:
ALEXANDER COCÓN SÁNCHEZ
MATRÍCULA:
4213010127
DIRECCIÓN:
AV. PERIFERICA NORTE #17 COL.OBRERA, CD. DEL CARMEN, CAMPECHE,
CEL. 938 126 60 53, E-MAIL. alex_cs95@outlook.com
4
ALUMNO:
ENRIQUE PÉREZ VAZQUEZ
MATRÍCULA:
4213010422
DIRECCIÓN:
CALLE MIGUEL HIDALGO N° 13, COL. FRANCISCO I. MADERO, CD. DEL CARMEN,
CAMPECHE,
CEL. 938 107 10 84, E-MAIL. enriqueperez_123@hotmail.com
ALUMNO:
5
EDGAR PÉREZ CÁNTE
MATRÍCULA:
4210010592
DIRECCIÓN Y TELÉFONO:
CALLE 77 #654C ENTRE 64ª Y 66 FRACCIONAMIENTO SANTA RITA, CD. DEL CARMEN,
CAMPECHE.
TEL.: (938) 4054585 E-MAIL:edgar@hotmail.com
6
ÍNDICE
Pág.
LISTA DE FIGURAS ................................................................................................................ 7
LISTA DE TABLAS .................................................................................................................. 7
1. INTRODUCCIÓN .................................................................................................................. 7
DATOS GENERALES DE LA EMPRESA ............................................................................. 7
PLANTEAMIENTO Y DELIMITACIÓN DEL PROBLEMA ...................................................... 8
2. JUSTIFICACIÓN, OBJETIVO Y VIABILIDAD ..................................................................... 9
JUSTIFICACIÓN ................................................................................................................... 9
OBJETIVO ........................................................................................................................... 10
VIABILIDAD DEL PROYECTO ............................................................................................ 11
3. DESARROLLO TEÓRICO ................................................................................................. 17
3.1. MARCO DE REFERENCIA .......................................................................................... 17
3.1.2 Entornos de programación .................................................................. 18
3.2. DISEÑO DE LA INVESTIGACIÓN ............................................................................... 23
Alcance ........................................................................................................... 23
Metodología .................................................................................................... 23
3.2.1. Instalación de Linux ............................................................................... 24
3.2.2. Instalación de Python .......................................................................... 30
3.3. DESARROLLO DEL PROYECTO (15-20 cuartillas) .................................................... 31
3.3.1 Aplicación de la metodología .................................................................. 32
3.3.2 Resultados ............................................................................................... 3
3.3.3. Análisis .................................................................................................... 3
4. CONCLUSIONES Y RECOMENDACIONES ....................................................................... 4
5. FUENTES DE INFORMACIÓN ............................................................................................ 5
6. ANEXOS ............................................................................................................................... 6
7
LISTA DE FIGURAS
LISTA DE TABLAS
Tabla 1 Descripción de puestos ................................................................................. 14
Tabla 2 costo de materia prima ................................................................................. 15
Tabla 3 Costo de equipos .......................................................................................... 16
Tabla 4 Costo anual de mano de obra directa ........................................................... 16
Tabla 5 Gasto anual por personal administrativo ....................................................... 17
Tabla 6.Diagrama de actividades .............................................................................. 24
1. INTRODUCCIÓN
DATOS GENERALES DE LA EMPRESA
El laboratorio de electrónica y dispositivos tecnológicos por sus siglas (LEDT), ubicado en Av.
Periférica Norte #23 Col. Obrera. Se clasifica en dos sectores en industrial y comercial ya que
se dedica al desarrollo de piezas en 3D como cortes en impresora CNC en otras actividades
de igual manera se dedican a la venta de componentes electrónicos (sensores,
microcontroladores) por mayoreo y menudeo.
La empresa cuenta con 5 departamentos que son: finanzas, área de almacén, taller (área de
desarrollo de los productos y dispositivos), departamento de compra y venta de materiales,
auditorio (donde se generan juntas, exposiciones, ponencias, conferencias, capacitaciones,
etc.)
El ing. Alexis Ramos Hernández representante legal de LEDT preocupado por la tecnología en
el sureste mexicano e integrado por un grupo de trabajo conformado en cada área, buscan
implementar la mejor tecnología en el sureste ofreciendo productos de alta calidad y de primer
nivel en el menor tiempo posible satisfaciendo las necesidades de los clientes.
8
LEDT tiene como misión dedicar de su talento y tecnología, para crear productos y servicios
que contribuyan a resolver diferentes necesidades. Como visión buscan ser una empresa
rentable y sustentable, además de ofrecer servicios de manera nacional e internacional busca
contribuir al desarrollo de la tecnología en México.
Esta empresa cuanta con los valores de honestidad y lealtad para su desarrollo personal,
responsabilidad, disciplina, flexibilidad para aceptar los cambios,
Pasión por su trabajo, perseverancia y sobre todo divertirse al aprender.
Básicamente en LEDT se busca construir personas con aptitudes de liderazgo, preparadas
para poder enfrentar diferentes obstáculos, presentados el camino del desarrollo de la
empresa.
PLANTEAMIENTO Y DELIMITACIÓN DEL PROBLEMA
Cuando hablamos de visión, nos referimos a ese sentido donde se puede percibir el mundo
con la vista, en robótica para poder lograr esta percepción es necesario el uso de una cámara
o algún sensor laser o en su caso un GPU o alguna tarjeta de desarrollo FPGA para el
procesamiento de esta.
Lo que se buscar lograr en la siguiente propuesta de proyecto es resolver la búsqueda de
objetos que se fabricaran por una impresora 3D, y esto resulta algo complejo si se piensa
utilizar un solo sensor. Las variables que posiblemente pueden afectar este sistema puede ser
la luz del exterior, el ruido que se produce en la cámara, o que el algoritmo que se desea
implementar no sea el óptimo, por tal motivo este tipo de problemas se resuelves con
aplicaciones matemáticas en cámaras pero también produce otro problema, el procesar
muchas imágenes se consume mucha memoria, lo que se pretende resolver es hacer una
discriminación de los datos innecesarios y aprovechar los recursos del procesador o
computador para acelerar la búsqueda de los objetos que se fabricaran para poder lograr
identificar los objetos fabricados acelerando el proceso de fabricación.
9
2. JUSTIFICACIÓN, OBJETIVO Y VIABILIDAD
JUSTIFICACIÓN
La implementación de un sistema de visión Artificial aplicado para identificar, percibir y
clasificar diferentes objetos es un método que se utiliza mucho en las industrias manufacturas
ya se utiliza para identificar ya sea posibles errores o localizar diferentes objetos específicos
para luego clasificarlos, el proyecto conviene ya que la implementación que realizaremos está
basada en un software de código abierto el cuál logra reducir costos establecidos más adelante
y lo que busca una empresa manufacturera es reducir costos y tiempo de producción, pero
también confiar un producto de calidad.
Esta aplicación me sirve para identificar diferentes objetos en este caso juguetes de diferentes
colores con el fin de clasificarlo luego respectivamente, pero ahí no acaba su aplicación con el
paso del tiempo la tecnología ha ido avanzando por tal motivo este sistema también tiene otra
aplicación mediante el entrenamiento de una red neuronal para clasificar imágenes se busca
localizar errores en los juguetes para que con ello los productos sean producidos de acuerdo
a los estándares de calidad, la empresa tiene como objetivo crecer cada día y como mencione
anteriormente la tecnología va creciendo al paso del tiempo tal que se busca aprender y buscar
a diario un método más simple de resolver este tipo de tareas.
Ayudará al departamento de producción ubicado en el taller de la empresa ya que se busca
acelerar la producción de los juguetes de modo que cuando este sistema localice el objeto
buscara posibles errores y también el tipo de color que se diseñó el juguete.
Si resuelve un problema real ya que en las empresas manufactureras que producen juguete,
cada año se reportan miles de juguetes dañados o con errores de fábrica y esto es dinero
perdido cosa que las empresas buscan eliminar.
Ayudará a la sociedad infantil a disfrutar de un momento más agradable y tardío su juguete
logrando la satisfacción de los clientes.
10
En resumen el sistema propuesto, resolverá el problema presentado en este proyecto gracias
a la implementación de un método de localización de objetos mediante color y la aplicación de
una red neuronal Artificial para extraer imágenes de errores y luego clasificarlo mediante su
entrenamiento se busca acelerar la clasificación y evitar la mayor cantidad de ruido producido
mediante su aplicación. El proyecto tiene un alcance grande ya que estos métodos aún están
en desarrollo su aplicación están en investigación de modo que los únicos inconvenientes que
se pueden presentar seria que la red Neuronal sea lento al estar en entrenamiento pero una
vez clasificada las imágenes su aplicación dará buenos resultados
OBJETIVO
Objetivo general:
Desarrollar un sistema de reconocimiento de objetos, mediante la aplicación de un software,
para clasificarlos por su color y su género.
Objetivos específicos:
11
1. Instalar Python, OpenCV, en ubuntu, mediante la búsqueda de tutoriales presentados en
internet, para luego correr los programas de detección de color.
2. Entrenar imágenes para clasificarlos por colores, mediante la aplicación de una Red
Neuronal Artificial, para mayor precisión en la búsqueda del color del objeto.
3. Realizar pruebas de detección, mediante el algoritmo implementado, para buscar posibles
fallas de clasificación.
VIABILIDAD DEL PROYECTO
Mediante los datos recabados en este estudio de viabilidad se podrá tomar la decisión si
realmente este proyecto de un sistema de visión artificial para monitoreo y control
implementado a celdas de manufactura tales como una banda trasportadora y un brazo
robótico es rentable a la empresa LEDT, considerando para ello los estudios de factibilidad
técnico, operativo y económico. A continuación se detallan cada uno de los estudios de
viabilidad mencionados anteriormente.
Viabilidad técnica
Técnicamente es completamente factible el desarrollo del sistema, dado que se requiere una
herramienta de desarrollo que es completamente gratuita, lo que no implica la compra de
nuevos productos de desarrollo, y además disponiendo del conocimiento para desarrollar este
tipo de aplicaciones.
El sistema de iluminación cuenta con una cavidad óptima para el ajuste de una banda
transportadora, en un proceso de manufactura.
Utilizando un software libre nos permite tener un control total del diseño del sistema de
reconocimiento, ya que los códigos y librerías tienden hacer configurados para tareas
en específicas y para tareas que se puedan complicar por algún problema no
controlado.
Un sensor Kinect, puede ser un dispositivo no muy ocasional, sin embargo su estructura
permite realizar tareas óptimas en ambientes controlados y no controlados, su cámara
RGB y su Sensor infrarrojo son capaces realizar tareas en la oscuridad.
Viabilidad operativa
12
Para el buen funcionamiento de la empresa LEDT es necesario especificar claramente las
actividades de cada uno de los miembros, para ello se realizó un organigrama funcional de
Puestos. Este contiene el análisis de todos los puestos existentes en la empresa. Para realizar
dicho análisis se recogió metódicamente los datos necesarios con integridad y exactitud, para
después plasmarlos por escrito.
El análisis de puestos es indispensable para conocer con toda precisión lo que cada trabajador
hace y conocer las aptitudes que requiere para hacerlo bien.
Se conocerá a través de este organigrama los elementos que integran cada puesto, los detalles
de cada una de las operaciones y los requisitos necesarios para que las actividades se realicen
bien. Además el organigrama funcional representa la posibilidad de saber con todo detalle las
obligaciones y características de cada puesto, facilitando a la empresa la contratación de
personar además de evitar la duplicidad de actividades.
Por otro lado los trabajadores realizarán mejor y con mayor facilidad sus labores, con lo anterior
podemos decir que será de gran utilidad tanto para la empresa como para los trabajadores.
Organigrama Funcional
13
Descripción de puestos
ÁREA PUESTO
Director general
Departamento
Operativo
Jefe de Departamento
operativo
Departamento
Administrativo
Jefe de Departamento
Administrativo
Departamento
Operativo Ingeniero Mecatrónica
Departamento
Administrativo
Jefe de Oficina de
Recursos Humanos
Departamento
Administrativo
Jefe de Oficina de
Recursos Materiales
Departamento
Administrativo
Jefe de Oficina de
Finanzas
Direccion general
Departamento operativo
Ingeniero mecatrónica
ArmadorIngeniero en
SistemasSupervisior de
obra
Departamento operativo
Oficina de recursos humanos
Jefe de Sección de Capacitación y Adiestramiento
Oficina de recursos
materiales
Oficina de finanzas
14
Departamento
Operativo Ingeniero en sistemas
Departamento
Administrativo
Jefe de Sección de
Capacitación y
Adiestramiento
Departamento
operativo Supervisor de obra
Departamento
Operativo Armador
Tabla 1 Descripción de puestos
Viabilidad económica
El principal valor agregado que entregará el sistema de visión artificial es que permitirá dar
mayor satisfacción al cliente en el proceso de manufactura ya que este sistema implica en
gasto de un capital razonable en cuanto la construcción y administración del mismo y raíz de
esto se prevén una mejora continua de la vida útil de la empresa.
Los recursos necesarios para el desarrollo de este proyecto se detallan a continuación; existen
algunos recursos que son actualmente adquiridos de forma gratuita tal es el caso del software
que se utiliza para la programación del sistema, por lo tanto nos es necesario adquirirlos.
El software utilizado corresponde a Python, que se encuentra disponible para la descarga
gratuita en el link https://www.python.org/downloads/ y que permite desarrollar aplicaciones
para estudiantes y además permite su distribución sin ningún costo de licencias ya que es un
software libre.
Viabilidad Técnica
Materia prima El costo total de materia prima, se calculó con base a datos técnicos que proporcionan algunas distribuidoras de tal material en la ciudad del Carmen
15
MATERIAL CANTIDAD UNIDAD
PRECIO
POR
UNIDAD
TOTAL
Aluminio 2 Pliego por
𝒎𝟐 $250 $500
Bases de
aluminio 4 pieza $80 $320
Ángulos de
aluminio 1
Vigas por
metro $120 $120
Remaches 3 Paquetes $20 $60
Pijas y
tornillos 2 Paquetes $35 $70
Pintura 3 Pieza $80 $240
Cables de
red UTP 1
Rollo por
metro $200 $200
Reflector de
luz 1 Pieza $200 $200
TOTAL $1,710
Tabla 2 costo de materia prima
Equipos. En la siguiente tabla se presentan los costos totales de los equipos que se requerirán para la
construcción del sistema.
EQUIPOS MARCA CANTIDAD PRECIO
Cortadora Deker 1 $2,800
Pulidora Craftsman 1 $1,300
Remachadora manual Surtex 1 $273
Taladro Bork 1 $700
Computadora Dell 1 $2,100
16
Cámara de Kinect Microsoft
xbox 1 $300
TOTAL $ 7,473
Tabla 3 Costo de equipos
Total de inversión en el proyecto : MX$9,183.00
Viabilidad Operativa
Mano de obra directa
Por concepto de mano de obra directa, se requiere una inversión total de $1,236,000. Este personal
será el que se encontrara específicamente en el área de producción, en la siguiente tabla se
detallan estos costos.
PUESTO CANTIDAD IMPORTE
MENSUAL
SUBTOTAL
ANUAL
Ingeniero mecatrónica 3 $40,000 $480,000
Ingeniero en Sistemas 1 $28,000 $336,000
Supervisor de Obra 1 $20,000 $240,000
Armador 2 $15,000 $180,000
TOTAL $1,236,000
Tabla 4 Costo anual de mano de obra directa
Gastos de administración De acuerdo con el organigrama general de la empresa (presentado en estudio de viabilidad
operativa), los gastos por personal administrativo ascienden a $ 1,644,000 anualmente. A
continuación, se detallan estos en la tabla 4.
PUESTO CANTIDAD IMPORTE MENSUAL SUBTOTAL ANUAL
Gerente 1 $30,000 $360,000
Jefe de Departamento
operativo
1 $27,000 $324,000
Jefe de Oficina de
Recursos Humanos
1 $22,000 $264,000
17
Jefe de Oficina de
Recursos Materiales
1 $20,000 $240,000
Jefe de Oficina de
Finanzas
1 $20,000 $240,000
Jefe de sección de
capacitación y
adiestramiento
1 $18,000 $216,000
TOTAL $ 1,644,000
Tabla 5 Gasto anual por personal administrativo
Demostrado en los puntos anteriores, tanto los estudios de factibilidad técnica, económica y
operativa resultan ser favorables para el proyecto lo que determina su viabilidad. El proyecto
resulta ser una buena herramienta para la empresa, además a un costo no mayor que puede
ser recuperado a mediano plazo.
3. DESARROLLO TEÓRICO
3.1. MARCO DE REFERENCIA
En un sistema de visión artificial se incluyen diversas técnicas, tales como el
procesamiento de imágenes (captura, transformación, codificación de imágenes) o como
el reconocimiento de formas (teoría estadística de decisiones, enfoques sintácticos y
neuronales aplicados a la clasificación de patrones). En este tipo de sistemas, además se
incluyen técnicas de modelado geométrico y procesos de conocimiento. Por lo tanto, en
este apartado se trata de describir las etapas a considerar en el sistema de visión a
implementar.
La captura de la imagen es el conjunto de operaciones que se efectúan para transformar
la iluminación de una escena en una señal digital. Las imágenes no siempre se presenta
en un formato adecuado para su análisis, por lo que el siguiente proceso es el
preprocesamiento de una imagen, en el cual se utilizan técnicas encaminadas a realizar la
mejora de la imagen, como son el nivel de gris, contraste, eliminación del ruido, el realce
de algunas características de interés, etc. Una vez que esta imagen está en condiciones
18
de ser procesada, se tienen que hallar los objetos dentro de la imagen de forma
independiente, y esto se hace a través de la segmentación, que es un proceso que divide
la escena en objetos. Cada uno de los objetos puede ser clasificado, por lo que la siguiente
tarea es la clasificación o extracción de características para el reconocimiento. El
reconocimiento es la identificación de cada objeto en la escena mediante una etiqueta.
3.1.2 Entornos de programación
Linux
La plataforma linux es uno de los términos empleados para referirse a la combinación
del núcleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Su desarrollo
es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser
utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL
(Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias
libres.
Figura 1. Logo de Ubuntu Fuente: Elaboración propia, 2015.
Python
Lenguaje de programación multiparadigma, ya que soporta orientación a objetos,
programación imperativa y, en menor medida, programación funcional. Es un lenguaje
interpretado, usa tipiado dinámico y es multiplataforma. Es administrado por la Python Software
Foundation. Posee una licencia de código abierto, denominada Python Software Foundation
License.
19
Figura 2. Logo de Python Fuente: Elaboración propia, 2015
NumPy
NumPy es una extensión de Python, que le agrega mayor soporte para vectores y matrices,
constituyendo una biblioteca de funciones matemáticas de alto nivel para operar con esos
vectores o matrices. El ancestro de NumPy, Numeric, fue creado originalmente por Jim
Hugunin con algunas contribuciones de otros desarrolladores. En 2005, Travis Oliphant creó
NumPy incorporando características de Numarray en NumPy con algunas modificaciones.
NumPy es open source(código abierto).
Matplotlib
Una vez incorporado NumPy se debe utilizar matplotlib que es una biblioteca para la
generación de gráficos a partir de datos contenidos en listas o arrays en el lenguaje de
programación Python y su extensión matemática NumPy. Proporciona una API, pylab,
diseñada para recordar a la de MATLAB.
PySerial
Es una librería de python que permite comunicarse a través de comunicaciones por serial (RS-
232). Esto puede ser muy útil para mandar o recibir datos de periféricos que sean comunes o
que tú mismo hayas hecho de una manera increíblemente sencilla y sin tener que complicarse
para nada con este tipo de programación.
20
Libfreenect
Es la librería para poder manipular el sensor Kinect en Python tal que su aplicación es
indispensable en este proyecto.
En visión artificial, los procesos de segmentación son de vital importancia cuando se trata de
detectar objetos en entornos no estructurados. En concreto, la segmentación haciendo uso de
información de color adquiere cierta importancia en ámbitos muy diversos, desde el tratamiento
de secuencias de videos para la detección de objetos o individuos en escenas móviles hasta
la detección para el seguimiento, también conocido como tracking.
El "reconocimiento de color" es la capacidad de un sensor o algoritmo de distinguir colores a
partir de la extracción de información de la luz
La manera básica de detectar el color consiste en captar la luz incidente en un sensor. Este,
mediante un conjunto de celdas de fotones que forman una matriz de puntos, uno por cada
pixel, es capaz de medir la cantidad de luz llegada a cada uno de estos, produciendo una
corriente eléctrica que varía en función de la intensidad de luz recibida. Una vez se ha medido
la cantidad de luz se procede a la detección de colores.
La extracción de ondas espectrales, da como resultado la captación de lo que conocemos
como colores. Por lo general la identificación de los diferentes colores se utiliza un código
conocido como RGB (Red, Green, Blue).
El reconocimiento de colores está basado en un lenguaje de programación sencillo el cual
utiliza una librería especial para el control de cámaras. Estamos hablando del lenguaje de
programación Python y de la librería especial Opencv.
Modelo HSV
El modelo HSV (hue, saturación, value; tinte, saturación, valor) está orientado al usuario y se
basa en el atractivo intuitivo del modelo de los artistas. HSV es un sistema de color que varía
el grado de propiedades del color para crear nuevos colores. (utiliza la mezcla de colores
21
). Hue (matiz) especifica el "color", rojo, naranja, azul, etc. La saturación (conocida también
como cromo o pureza), se refiere a la cantidad de blanco en un hue. Un color completamente
saturado no contiene blanco y aparece puro, un rojo 50% saturado resulta un rosa.
El valor (conocido también como brillo) es el grado de luminosidad de un color (que tanta luz
emite). Un matiz con alta intensidad es brilloso, uno con poca intensidad es oscuro.
Figura 3 Cono de colores del espacio HSV.
Cámara Microsoft Kinect
Especificaciones técnicas
El sistema de percepción de profundidad consta de tres partes básicas: el proyector láser de
infrarrojos, el sensor CMOS y el microchip que procesa la información. Fue creado y
desarrollado por PrimeSense, una compañía Israelí experta en innovación. Contrariamente a
lo que podríamos suponer en un principio, no se trata de un sensor basado en tiempo de vuelo,
sino que su funcionamiento se basa en la proyección de un patrón de puntos pseudo-aleatorio
y su lectura y triangulación mediante el sensor CMOS. A continuación se describe más a detalle
en cuanto al funcionamiento del sistema.
Proyector láser.
Posee las siguientes propiedades
Se trata de un láser no modulado, no produce pulsos en su salida sino que se mantiene
a nivel constante.
La longitud de onda es de 830nm.
22
Consta de un sistema de difracción que subdivide el rayo en múltiples instancias,
proyectando un patrón de puntos pseudo-aleatorio.
La potencia medida a la salida de la Kinect es de 60mW. No es dañina para los ojos, si
bien es probable que la difracción inducida haya introducido pérdidas.
Posee un estabilizador de temperatura que se encarga de mantener el láser a
temperatura constante para no alterar la longitud de onda de salida
El campo de visión en horizontal de la cámara es de 57 grados y el rango máximo de
distancia desde la cámara para la captación de profundidad es de 0,8 metros a 4 metros,
considerándose un rango óptimo de 1,2 metros a 3,5 metros.
Figura 4 Campo de visión horizontal y rango de proximidad de la Kinect
Además, la Kinect está equipada con un ventilador que se activa cuando la temperatura
alcanzada es mayor de 70oC (recordar que el valor máximo del rango de operación de los
sensores ronda esa temperatura) y que se alimenta por la toma USB.
23
3.2. DISEÑO DE LA INVESTIGACIÓN
Alcance
La visión artificial ha alcanzado una gran importancia en el campo científico-técnico debido a
sus enormes posibilidades de aplicación. Existen sistemas de visión artificial en todos los
ámbitos navegación autónoma de vehículos, análisis de imágenes médicas, monitorización del
tráfico, etc. En esta sección nos centraremos en los sistemas de visión destinados a la
inspección en líneas de fabricación, ya que los sistemas de visión artificial se destinan a
realizar inspecciones visuales que requieren alta velocidad, gran aumento, funcionamiento las
24 horas del día o la repetibilidad de las medidas. Este uno de los campos dentro de la visión
artificial que más han crecido y que presenta mayores aplicaciones a nivel industrial.
Metodología
Una vez comprendido algunos términos esenciales en el desarrollo del proyecto a
continuación se explicara cómo se llevara paso a paso la realización de éste..
Nombre de la empresa: LEDT
(Laboratorio de Electrónica y
Dispositivos Tecnológicos)
Cronograma de actividades
Inicio: 7/09/16
Termino: 5/12/16
Aprobó: No.
trabajador
Proyecto: Desarrollar un sistema de reconocimiento de objetos, mediante la
aplicación de un software, para clasificarlos por su color y su género.
No. Actividad Tiempo estimado de la ejecución del proyecto
Meses/semanas
Septiembre
Octubre Noviembre Diciembre
3 4 1 2 3 4 1 2 3 4 1 2 3 4
1. Instalar sistema operativo Ubuntu 12.04.
2. Instalar Python con sus librerías y dependencias como OpenCV.
3. Instalar driver y software en Ubuntu.
4. Realizar un análisis de las imágenes capturadas
5. Desarrollar un algoritmo de entrenamiento de la red
6. Programar el algoritmo en Python.
24
Tabla 6.Diagrama de actividades Fuente: Elaboración propia, 2015
3.2.1. Instalación de Linux
Primero que nada se tuvo como requisito el contar con un computador, comúnmente la
mayoría de las personas tienen instalado en su computadora Windows existen muchas
versiones de este sistema operativo, la versión más reciente que está siendo
descargada por muchos usuarios es la actualización a Windows10 pero la mayoría se
estancó en Windows 8.1.
Existen otros sistemas operativos muy conocidos que son de código abierto, es decir,
que los programas que se usan en este sistema operativo, no requiere de algún serial
para poder ser instalado o utilizado eso conlleva a que muchos usuarios se interesen
en estos tipos de sistemas operativos, uno de ellos es el caso de Ubuntu, que pertenece
a la plataforma Linux
Se utilizó este sistema operativo ya que la mayoría de los desarrolladores en la robótica
se basan en programas que son más amigables de procesar en él, la ventaja de la
instalación de Ubuntu, es que permite compartir la computadora con otro sistema
operativo sin dañar los archivos, el computador al finalizar su instalación, contaba con
dos sistemas operativos.
Lo que primero que se hizo fue descargar la imagen ISO de Ubuntu. La versión que se
descargo fue la 12.04 no es la versión más reciente, pero es una versión que se tiene
más estudiada también se puedo trabajar sobre Ubuntu 14.04 pero existen ciertos
problemas con la compatibilidad en los repositos utilizados allí.
Una vez que se descargó la imagen ISO se grabó en un usb (pendrive) aunque también
se pudo haber grabado en un CD/DVD. Luego se configuro la computadora, se creó
una partición de 50000MB, de memoria en el disco duro libres para la instalación de
Ubuntu.
7. Realizar pruebas después de los entrenamientos de la Red Neuronal
8. Prever resultados
25
Para generar la partición, se buscó “Mi PC”, en el escritorio luego seguidamente en
administrar y luego se abrió la ventana de administración de discos. Básicamente nos
apareció la ventana que es respetada por la figura 8.
Figura 5. Ventana de administración de equipo Fuente: Elaboración propia, 2015.
Luego se redujo la memoria 50000MB para instalar Ubuntu, seguidamente se prosiguió
a su instalación pero antes de eso se configuro el computador desde la BIOS para el
arranque fuera desde el usb, tal que una vez configurada la computadora se reinició
con el pendrive puesto. Luego de unos instantes, apareció GRUB 2, el gestor de
arranque de Ubuntu. Se hizo clic en el ícono Install Ubuntu 12.10.
26
Figura 6. Instalación de ubuntu Fuente: Elaboración propia, 2015.
Después de proceder con la instalación apareció una ventana de seleccionar idioma,
allí se eligió idioma, luego se dio clic en el botón Instalar Ubuntu.
Figura 7 . Ventana de preparación de la instalación de ubuntu Fuente: Elaboración propia, 2015.
Luego se confirmó que contara con los requisitos mínimos de instalación haciendo clic
en Continuar. Cabe destacar que el único requisito indispensable era contar con el
espacio en disco necesario. Tener una conexión a Internet era una recomendación pero
no un requisito excluyente ya que mientras su instalación se descargó paquetes del
27
sistema operativo. También se conectó a una toma de corriente. Se seleccionó la
tercera opción, ya que se dividió la partición que se había hecho en el disco duro.
Figura 8 .ventana de asignación de espacio en el disco Fuente: Elaboración propia, 2015.
En el espacio libre se le añadieron 3 particiones básicas en donde la primera se le
asignó 15000MB de memoria. Se seleccionó la ubicación de la nueva partición:
principio, utilizar como: ext4 es el sistema que usa Ubuntu 12.04 por defecto Y el punto
de montaje: / (la raíz); se le dio aceptar. La segunda partición se creó con espacio libre
en donde se asignó 4GB de memoria, en tipo de nueva partición seleccionamos
primaria; en ubicación de la nueva partición utilizamos final y en utilizar como, buscamos
área de intercambio luego se seleccionó aceptar.
En la tercera partición se asignó lo que queda en la memoria libre, en ubicación de la
nueva partición seleccionamos principio; en utilizar como buscamos, sistema de ficheros
ext4; en el puerto de montaje se eligió, /home se seleccionó aceptar.
28
Figura 9 . Ventana de asignación de memoria Fuente: Elaboración propia, 2015.
Seguidamente de la distribución de la memoria apareció la ventana de selección de
zona horaria (Figura 13) se eligió la zona de central de américa, pulsamos instalar ahora,
luego se eligió la zona horaria
Figura 10. Selección de la zona horaria Fuente: Elaboración propia, 2015.
29
Después apareció la ventana de la distribución del teclado (figura 14) se teclearon
algunas palabras, para comprobar que todas las teclas estén en buena condición y se
localizó el Español (latinoamericano).
Figura 11. Ventana de selección del tipo de teclado Fuente: Elaboración propia, 2015.
Después de configurar el teclado, se creó el perfil del usuario en donde se introdujo el nombre
del usuario, una contraseña y el nombre del computador también se eligio que al iniciar el
computador solicitará la contraseña.
Figura 12. Ventana de creación de perfil Fuente: Elaboración propia, 2015.
Luego al finalizar la instalación se extrajo el usb y se reinició el computador en donde
ya tenía instalado dos sistemas operativos. Después se observaron tutoriales de cómo
30
utilizar Ubuntu bajo algunos comandos, funciones y como se trabaja bajo este nuevo
sistema operativo.
Una vez familiarizado con este sistema operativo se procedió a instalar la plataforma
Python, es un software de código abierto que se utiliza comúnmente para proyectos de
visión artificial, para la representación gráficas en 2D o 3D, programación de vídeo
juegos, entre otras cosas.
Este software se vuelve más atractivo cuando se aprende a programar en él y allí mismo
se da cuenta uno lo fácil que es trabajar sobre esta plataforma, para poder instalarlo en
Ubuntu se necesita ciertas condiciones y otro software extra para poder ejecutar los
programas. Python es recomendable trabajarlo en Ubuntu porque es más fácil adaptarlo
a tus necesidades de programación ya que las librerías de Python, que se instalan son
fáciles de importar, a diferencia del sistema operativo Windows, las librerías de Python
son más difíciles de importar y te pueden surgir muchos errores al programar.
3.2.2. Instalación de Python
Figura 13. Ventana buscador ubuntu Fuente: Elaboración propia, 2015.
Se escribió en el buscador de Ubuntu la palabra software center y este nos llevó a una
ventana donde se descargan las aplicaciones en el buscador de esta ventana
escribimos Python 3 trabajamos sobre esta versión, porque ya tiene instalado ciertas
librerías que se utilizaron para el desarrollo del algoritmo para identificar objetos.
31
Figura 14. Instalación de Python Fuente: Elaboración propia, 2015.
También se descargó otro software editor para ejecutar y modificar cualquier programa
de Python, el nombre es “SPE(stani’s Python editor, figura 18 )”.este software es
utilizado para la edición del programa de reconocimiento de objetos.
Figura 15. Instalación de SPE Fuente: Elaboración propia, 2015.
Luego se instalaron las librerías NumPy, Matplotlib, PySerial, esto desde la termina; una
vez que tuvo instalados todos los programas y las librerías se procedió a realizar el
análisis de los diferentes modelos matemáticos implementados en filtro de Kalman.
3.3. DESARROLLO DEL PROYECTO (15-20 cuartillas)
32
Las aplicaciones de redes neuronales en la actualidad para resolver problemas reales en las
industrias han sido de gran utilidad ya que las empresas le están apostando a este sistema de
inteligencia artificial a continuación se presentara la explicación de una aplicación de este
método para detectar y clasificar diferentes objetos
3.3.1 Aplicación de la metodología
Hay dos aplicaciones en OpenCV para entrenar el clasificador en cascada:.
Opencv_haartraining y opencv_traincascade opencv_traincascade es una versión más
reciente, escrito en C ++ de conformidad con OpenCV API 2.x. Sin embargo, la principal
diferencia entre estas dos aplicaciones es que soporta tanto opencv_traincascade Haar
[Viola2001] y LBP [Liao2007] (patrones binarios locales) características. Las características de
LBP son enteras en contraste con las características de Haar, así que la formación y la
detección con LBP son varias veces más rápidas que las características de Haar. En cuanto a
la calidad de la detección LBP y Haar, depende de la formación: la calidad del conjunto de
datos de formación en primer lugar y los parámetros de formación también. Es posible entrenar
a un clasificador basado en LBP que proporcionará casi la misma calidad que el basado en
Haar.
opencv_traincascade y almacenar opencv_haartraining el clasificador entrenado en diferentes
formatos de archivo. Nota, la interfaz de detección en cascada más reciente (véase la clase
CascadeClassifier en el módulo objdetect) soporta ambos formatos. Opencv_traincascade
puede guardar (exportar) una cascada entrenado en el formato anterior. Pero
opencv_traincascade y opencv_haartraining no pueden cargar (importar) un clasificador en
otro formato para la formación continua después de la interrupción.
Tenga en cuenta que la aplicación opencv_traincascade puede utilizar TBB para multi-
threading. Para usarlo en modo multicore OpenCV debe ser construido con TBB.
También hay algunas utilidades auxiliares relacionadas con el entrenamiento.
• opencv_createsamples se utiliza para preparar un conjunto de datos de entrenamiento
de muestras positivas y de prueba. opencv_createsamples produce conjunto de datos de
muestras positivas en un formato que es compatible con las aplicaciones y
opencv_haartraining opencv_traincascade. La salida es un archivo con extensión * .vec, es un
33
formato binario que contiene imágenes.
• opencv_performance se puede utilizar para evaluar la calidad de los clasificadores, pero
para entrenados por opencv_haartraining solamente. Requiere una colección de imágenes
marcadas, ejecuta el clasificador e informa del rendimiento, es decir, el número de objetos
encontrados, el número de objetos perdidos, el número de falsas alarmas y otra información.
Desde opencv_haartraining es una aplicación obsoleta, sólo se opencv_traincascade se
describirá más se necesita. Opencv_createsamples utilidad para preparar un conjunto de datos
de entrenamiento para opencv_traincascade, por lo que se describirá también.
34
opencv_createsamples utilidad
Una utilidad opencv_createsamples proporciona funcionalidad para generar el conjunto de
datos, la escritura y la visualización. El término conjunto de datos se usa aquí tanto para
conjunto de entrenamiento y de prueba.
Formación de preparación de datos
Para el entrenamiento necesitamos un conjunto de muestras. Hay dos tipos de muestras:
negativa y positiva. Las muestras negativas corresponden a imágenes sin objeto. Las muestras
positivas corresponden a imágenes con objetos detectados. Conjunto de muestras negativas
se debe preparar de forma manual, mientras que un conjunto de muestras positivas se crea
usando la utilidad opencv_createsamples.
35
Las muestras negativas
Las muestras negativas se toman de imágenes arbitrarias. Estas imágenes no deben contener
objetos detectados. Las muestras negativas se enumeran en un archivo especial. Es un
archivo de texto en el que cada línea contiene un nombre de archivo de imagen (relativo al
directorio del archivo de descripción) de imagen de muestra negativa. Este archivo debe
crearse manualmente. Tenga en cuenta que las muestras negativas y las imágenes de muestra
también se denominan muestras de fondo o imágenes de muestras de fondo y se utilizan
indistintamente en este documento. Las imágenes descritas pueden ser de diferentes tamaños.
Pero cada imagen debe ser (pero no necesariamente) más grande que un tamaño de ventana
de entrenamiento, ya que estas imágenes se utilizan para submuestra la imagen negativa al
tamaño del entrenamiento.
Un ejemplo de archivo de descripción:
Estructura del directorio:
img1.jpg
img2.jpg
Archivo bg.txt:
Img / img1.jpg
Img / img2.jpg
figura 16 imágenes obtenidas
36
En la figura 16 se observa como las imágenes adquiridas representan las fotos positivas donde
se encuentran los objetos
Las muestras positivas
A partir de una sola imagen con objeto o de una colección de imágenes previamente marcadas.
Tenga en cuenta que necesita un gran conjunto de datos de muestras positivas antes de
entregarlo a la utilidad mencionada, ya que sólo aplica la transformación de perspectiva. Por
ejemplo, puede necesitar sólo una muestra positiva para un objeto absolutamente rígido como
un logotipo de OpenCV, pero definitivamente necesita cientos e incluso miles de muestras
positivas para caras. En el caso de las caras que usted debe considerar toda la raza y grupos
de edad, las emociones y estilos de la barba tal vez.
Por lo tanto, una sola imagen de objeto puede contener un logotipo de la empresa. A
continuación, se crea un gran conjunto de muestras positivas a partir de la imagen de objeto
dada girando al azar, cambiando la intensidad del objeto, así como colocando el objeto en un
fondo arbitrario. La cantidad y variedad de aleatoriedad pueden ser controlados por los
argumentos de línea de comandos de utilidad opencv_createsamples.
La creación de conjunto de entrenamiento a partir de una sola imagen y una colección
de fondos con un solo archivo vec como una salida
El siguiente procedimiento se utiliza para crear una instancia de ejemplo de objeto: La imagen
de origen se gira de forma aleatoria alrededor de los tres ejes. El ángulo elegido se limita mi -
max? Ángulo. Entonces píxeles que tienen la intensidad de [bg_color-bg_color_threshold;
bg_color + bg_color_threshold] gama se interpretan como transparente. El ruido blanco se
añade a las intensidades del primer plano. Si no se especifica la clave -inv entonces
intensidades de los píxeles de primer plano están invertidas. Si se especifica -randinv clave
entonces algoritmo selecciona al azar si la inversión se debe aplicar a esta muestra. Por último,
la imagen obtenida se coloca sobre un fondo arbitraria desde el archivo de descripción del
fondo, cambiar de tamaño al tamaño deseado especificado por -wy -H y almacenado a la vec-
archivo, especificado por la opción de línea de comandos -vec.
La creación de conjunto de entrenamiento como una colección de imágenes PNG
37
Para obtener este tipo de comportamiento del -img, -bg, -info y las teclas -pngoutput deben ser
especificados. El nombre de archivo especificado con -info clave debe incluir al menos un nivel
de jerarquía de directorios, ese directorio se usará como el directorio de nivel superior para el
conjunto de entrenamiento. Por ejemplo, con los llamados opencv_createsamples como
siguiente:
Opencv_createsamples -img /home/user/logo.png -bg /home/user/bg.txt -info
/home/user/annotations.lst -pngoutput -maxxangle 0.1 -maxyangle 0.1 -maxzangle 0.1
La salida tendrá la siguiente estructura:
/ Inicio / usuario /
anotaciones /
0001_0107_0099_0195_0139.txt
0002_0107_0115_0195_0139.txt
...
neg
<Archivos de fondo aquí>
pos /
0001_0107_0099_0195_0139.png
0002_0107_0115_0195_0139.png
...
Con los archivos .txt en el directorio que contiene información sobre las anotaciones del cuadro
delimitador objeto en la muestra en el siguiente formato:
Nombre de archivo de imagen: "/home/user/pos/0002_0107_0115_0195_0139.png"
38
Cuadro de encuadernación para el objeto 1 "PASperson" (Xmin, Ymin) - (Xmax, Ymax): (107,
115) - (302, 254)
Y annotations.lst archivo que contiene la lista de todas las anotaciones del archivo:
/home/user/annotations/0001_0109_0209_0195_0139.txt
/home/user/annotations/0002_0241_0245_0139_0100.txt
Creación de prueba establecida como una colección de imágenes JPG
Esta variante de uso opencv_createsamples es muy similar a la anterior, pero genera la salida
en un formato diferente; Para obtener este tipo de comportamiento del -img, -bg y las teclas -
INFO deben ser especificados. Por ejemplo, con los llamados opencv_createsamples como
siguiente:
Opencv_createsamples -img /home/user/logo.png -bg /home/user/bg.txt -info annotations.lst
-maxxangle 0.1 -maxyangle 0.1 -maxzangle 0.1
Estructura del directorio:
info.dat
img1.jpg
img2.jpg
Archivo info.dat:
Img1.jpg 1 140 100 45 45
Img2.jpg 2 100 200 50 50 50 30 25 25
1
La conversión de la colección marcada en marcha de las muestras en un formato
vec
También se pueden obtener muestras positivas de una colección de imágenes
previamente marcadas. Esta colección se describe mediante un archivo de texto
similar al archivo de descripción de fondo. Cada línea de este archivo corresponde a
una imagen. El primer elemento de la línea es el nombre de archivo. Es seguido por el
número de instancias de objeto. Los números siguientes son las coordenadas de los
objetos que delimitan rectángulos (x, y, anchura, altura).
Un ejemplo de archivo de descripción:
Estructura del directorio:
img
img1.jpg
img2.jpg
info.dat
Archivo info.dat:
Img / img1.jpg 1 140 100 45 45
Img / img2.jpg 2 100 200 50 50 50 30 25 25
Image img1.jpg contiene instancia de objeto único con las siguientes coordenadas del
rectángulo delimitador: (140, 100, 45, 45). Image img2.jpg contiene dos instancias de
objeto.
Con el fin de crear las muestras positivas de dicha recolección, -info argumento debe
especificarse en lugar de -img:
2
• -info <collection_file_name>
Archivo descriptivo de la colección de imágenes marcadas.
El esquema de creación de muestras en este caso es el siguiente. Las instancias de
objeto se toman de imágenes. A continuación, se cambian el tamaño de las muestras
de destino y se almacenan en la salida vec-archivo. No se aplica ninguna distorsión,
por lo que los argumentos que sólo afectan son -w, -h, -show y -num.
Después de adquirir las imágenes viene la etapa de entrenamiento donde se expone
a la red neuronal eliminado la mayor cantidad de errores y reduciendo el tiempo de
detección del objeto al terminar el entrenamiento se adquiere un archivo cascade.xml
este es el que nos interesa procesar porque contiene el resultado de las ganancias de
la red Neuronal.
figura 17 programa de detección
3
3.3.2 Resultados
figura 18 detectando un celular
los resultados fueron factibles para ambientes controlados e incontrolados tal que se
observa los resultados en la (figura 18), debemos tener en cuenta los otros puntos
como el tiempo de entrenamiento.
3.3.3. Análisis
figura 19 datos de entrenamiento
4
Se observa en la figura 19 los datos obtenidos en la red neuronal y después de varios
entrenamientos se describen en la siguiente tabla la cantidad de error obtenido
después de cada entrenamiento.
Img
positivas
Img
negativas
Tiempo
entrenado
Error
750 1500 2 horas
50 min
5.63663e-3
1500 3000 4 horas
17 min
1.6453453e-
6
1000 1500 50 min 1.74663e-3
4. CONCLUSIONES Y RECOMENDACIONES
Se desarrolló un sistema de reconocimiento de objetos, mediante la aplicación de un
software, para clasificarlos por su color y su género, bajo la plataforma Linux,
trabajamos con el software python para la realización del reconocimiento de objetos
con ayuda de la paquetería OpenCV, que nos permite utilizar su entrenamiento de
imágenes por medio de redes neuronales, creando así un archivo para el
reconocimiento del objeto especifico, se usaron para el entrenamiento
aproximadamente 3000 imágenes negativas y 1500 imágenes positivas, las negativas
son fotografías de lo que no queremos reconocer, en este caso otros objetos, los
ambientes, e inclusive de personas y las positivas es del objeto que quiero reconocer,
captándolo de todos los ángulos posibles, de esta manera evitamos un problema muy
común en el reconocimiento de imágenes, la luz que nos varia los colores de nuestros
objetos de manera drástica, por ello este entrenamiento también debe llevar fotografías
con los diferentes cambios de luz que se puedan presentar, esto causa que el
entrenamiento al tener más fotografías se pueda volver muy lento y tardar incluso días,
por ello se diseñó una caja con un ambiente controlado y una luminosidad constante
con luz LED, regulándolo con PWM y un driver L293d. de esta manera mantenemos
un ambiente controlado con una luz exacta en cada hora del día, permitiendo no tener
5
tantas fotografías y que el sistema sea rápido con la misma calidad de reconocimiento.
En la presentación se utilizó un cubo de 2 centímetros, a una distancia aproximada de
50 cm, esto fue un reto porque es una pieza muy pequeña pero bajo el entrenamiento
utilizado, se logró captar el objeto de manera eficaz, presentando así un sistema
completo de reconocimiento de imagen con un ambiente controlado.
5. FUENTES DE INFORMACIÓN
Bradski, G. (2015). Learning OpenCV: Computer Vision with the OpenCV Library. O
Reilly.
Bressert, E. (2013). SciPy and NumPy: An Overview for Developers. O Reilly.
Howse, J. (2014). OpenCV Computer Vision with Python. O Reilly.
Kurt Demaagd, A. O. (2014). Practical Computer Vision with SimpleCV : The Simple
Way to Make Technology. O Reilly.
Laganière, R. (2012). OpenCV 2 Computer Vision Application Programming Cookbook.
O Reilly.
Lélis, D. (2014). Mastering OpenCV with Practical Computer Vision Projects. O Reilly.
Ponce, D. A. (2013). Computer Vision: A Modern Approach (2nd Edition).
Solem, J. E. (2013). Programming Computer Vision with Python: Tools and algorithms
for analyzing. O Reilly.
Stockman, L. G. (2011). Computer Vision.
Szeliski, R. (2014). Computer Vision: Algorithms and Applications. O Reilly.
6
6. ANEXOS