miércoles, 12 de febrero de 2020

Vision Artificial con OpenCV, C++ y Arduino

Introduction

In this project the camera sends video frames for the Visual Studio C ++ that contains Open CV library working on our computer. Visual Studio C ++ program detects the image of the object from the webcam and then calculates the coordinates of co of X, Y axis and the radius of the object. The coordinates are therefore sent to the arduino UNO / Mega via Serial communication between the arduino and visual studio c ++, allowing to use artificial vision.

Artificial Vision or Computer Vision is the ability to analyze images captured by a camera and obtain relevant information for a given purpose. Being Artificial Vision is a branch of AI (artificial intelligence) since in itself artificial vision are the eyes of robots. The number of applications in this field is almost infinite and new ideas with new ones appear day after day. OpenCV is the Artificial Vision library par excellence, it is developed by Intel.

Development 

What is Artificial vision?

It is a scientific discipline that includes methods to acquire, process, analyze and understand the images of the real world in order to produce numerical or symbolic information so that they can be treated by a computer. Just as humans use our eyes and brains to understand the world around us, artificial vision tries to produce the same effect so that computers can perceive and understand an image or sequence of images and act as appropriate in a given situation.

What is Opencv?

OpenCV is a free library originally developed by Intel. It was released in 1999. Originally written in C / C ++, its best virtue is that it is cross-platform, it can be run on different operating systems (Linux, Windows, Mac OS X, Android and iOS). We can also use it in different programming languages such as Java, Objective C, Python and C #.


Project Development
Theme
In the project you have to capture with a video camera and recognize the figure and then determine the location, which in turn this position data will allow you to move the head of a robot.

NECESSARY MATERIAL:

HARDWARE:

1. x 2 servomotors
2. Webcam (any webcam) x 1
3. Arduino Mega / One x 1
4. board
5. single base cable connection

SOFTWARE:

1. Arduino IDE
2. OpenCV 2.3.1
3. Visual Studio C ++ or Xcode

For the development of the project we use OpenCVn and c ++ to perform the logical part that will take all the data with our camera, that is, all the artificial vision part to then be processed and arduino that will allow us to capture the data of our program, and move the head in the direction of our image.

C ++ code with OpenCV


We start all the libraries that we are going to use in our program taking into account that we have to make a header with the name SerialPort.h that will contain all the part of the connection to the arduino. We start the variables to perform the segmentation of our figure and the Invariant Moments of HU.

In this part we start the camera of our computer and starting our Mat that would become our matrices that will contain the data obtained by the camera. To then be scaled and segmented our images captured with the camera of our computer, calculating the invariant moments of hu to get the center of our segmented image and get the data from the x and y section.




In this section we obtain the position of x and y and then send this data to our arduino that for the operation of our robot and finally we visualize our MAT that are the windows of our images both the original and the segmented.

Arduino Code





In this part of the arduino initialize the variables of our servosmotors that will be in section 9 and 10 and we have it initialized in 90 degrees and we receive the data sent from c ++ for the movement of the servos according to the angles.

Conclusion

Artificial vision is experiencing an exciting moment with its successful integration into industrial environments. There are increasing bets for solutions based on computer vision in the industry, both in industrial and non-industrial applications. The skills of this branch are acquired progressively, either from professional immersion to the creation of specialized seminars and workshops and taught by professionals in the sector.
The application of artificial vision is very interesting since it helps in many areas especially referred to in human vision, since we can create mechanisms that do work not simply by receiving orders but if they are able to visualize their objective, take decisions and execute them.
Upon completion of this project, the different OpenCV functions focused on image processing, such as segmentation for object recognition, motion detection, video analysis and camera utilization, could be better understood.

Integrantes: Oscar Tenesaca, Angel Paqui





jueves, 6 de febrero de 2020

Proyecto RPA con WinAutomation

Herramienta WinAutoamtion

Es la plataforma más poderosa e intuitiva diseñada para la automatización de Windows que permite a los usuarios automatizar cualquier tarea de escritorio y basada en web sin esfuerzo. Los robots inteligentes de software de WinAutomation pueden aprender a realizar cualquier tarea sin esfuerzo, lo que permite a las organizaciones lograr mayor eficiencia mediante la automatización

  • Requerimientos de HW y SW 

El software es compatible solo con windows no y no para MacOs, u otro sistema.
La versión gratuita es del sistema es de 30 días una vez que haya pasado los 30 días se necesitará la licencia para el uso de la herramienta que cada mes tiene el costo de $89. 
Antes de empezar WinAutomation descarga gratuita, asegúrese de que su PC cumple con los requisitos mínimos del sistema. 
    •  Sistema operativo: Windows XP / Vista / 7/8 / 8.1 / 10 
    • Memoria (RAM): 512 MB de RAM 
    • necesarios. espacio en disco duro: 50 MB de espacio libre necesario. 
    • Procesador: Intel Pentium 4 o después.
  • Proceso de configuración.
El proceso de configuración   para hacer uso de la herramienta creamos una carpeta donde será almacenados nuestros proyecto.
Una vez creado nuestra carpeta tenemos que crear el proceso que vamos a realizar, y le  damos en new process que se encuentra en la parte superior izquierda, para tener todos nuestros componentes en disponibles.
Por último tenemos todos los componentes disponibles para realizar nuestro proyecto
  • Planteamiento del problema. 
Se realizará 3 planteamientos y con sus posibles soluciones la cuales son:
    • El manejo de excel
    • El envío de un correo electrónico
    • Envío de datos con por medio de un formulario
  • Paso a paso el uso de la herramienta RPA
El primer paso para hacer uso de este software es crear un proyecto nuevo como esta en el punto de proceso de configuración una vez que tenemos ya creado nuestro proyecto hacemos uso de los componentes que tiene nuestra herramienta.
    • Paso 1. Crear nuestra carpeta donde se ubicara nuestro proyecto.
    • Paso 2. Crear un proceso con su nombre respectivo
    • Paso 3. utilizar los componentes para realizar las acciones que necesitamos que realice el robot.
  • Conclusiones y recomendaciones.
 Winautomation es una plataforma potente y fácil de usar basada en Windows para la automatización de las tareas de gran volumen y repetitivas y la creación de una automatización de proceso. Siendo que el RPA (automatización de procesos robóticos) sean fáciles de realizar optimizando de esta manera ciertas actividades dentro de una organización u personal. personalmente recomiendo esta herramienta por que es completa que muchso de las organizaciones hacen uso de este software.

martes, 10 de diciembre de 2019

Clasificador base de perceptrón multicapa

Clasificador base de perceptrón multicapa

Abtract 

In the current project we want to demonstrate the operation of the multilayer perceptron as a classifier model of the types of images by creating a network model with the system having 2 different options that is for a corpus with 1120 data or a file with 1120 images to perform the training you can use any of the two options to make the classification using python.

Introducción 

Reconocimiento de formas, toma de deciciones, que no pueden ser descritos facilmente mediante in enfoque algorítmico tradicioneal para lograr se ha establecido un nuevo campo de la computacion qie tiene su origen en la emulacion de sistemas.

La metodologia que nos ayuda en este desarrollo son las  redes neuronales, que buscan la resolucion de problemas complejos atravez de sistemas de computacion insipardo en el cerebro humano. Por ello los intentos de crear un ordenador que sea capaz de emular estas capacidades ha dado como resultado la aparición de las llamadas Redes Neuronales Artificiales o Computación Neuronal.

Desarrollo 

Antes de comenzar el desarrollo de nuestro proyecto procedemos a socializarnos con algunos terminos como son:

Neuronas.- Llamados también elementos de proceso. Las neuronas se agrupan en capas, las que reciben la información a procesar y forman la capa de entrada, esta información se transmite a ciertos elementos internos (neuronas) que se ocupan de su procesamiento, estas neuronas forman las capas ocultas. Una vez que ha finalizado el procesamiento, la información llega a las unidades (neuronas) de salida formando estas la capa de salida.

La mayor parte de las neuronas poseen una estructura de árbol, llamada dendritas, que reciben las señales de entrada procedentes de otras neuronas a través de las sinapsis. Una neurona consta de tres partes:

  • El cuerpo de la neurona
  • Las dendritas, que reciben las entradas
  • El axón, que lleva la salida de la neurona a las dendritas de otras neuronas.




Redes Neuronales Artificiales


Las redes neuronales aplicadas están, inspiradas en las redes neuronales biológicas, aunque poseen otras funcionalidades y estructuras de conexión distintas a las vistas desde la perspectiva biológica. Las características principales de las NN son las siguientes: 

  1. Auto-Organización y Adaptabilidad: utilizan algoritmos de aprendizaje adaptativo y auto-organización, por lo que ofrecen mejores posibilidades de procesado robusto y adaptativo. 
  2. Procesado no Lineal: aumenta la capacidad de la red para aproximar funciones, clasificar patrones y aumenta su inmunidad frente al ruido. 
  3. Procesado Paralelo: normalmente se usa un gran número de nodos de procesado, con alto nivel de interconectividad. 


Hay dos fases en la modelización con redes neuronales:  


Fase de entrenamiento: se usa un conjunto de datos o patrones de entrenamiento para determinar los pesos (parámetros) que definen el modelo de red neuronal. Se calculan de manera iterativa, de acuerdo con los valores de los valores de entre- namiento, con el objeto de minimizar el error cometido entre la salida obtenida por la red neuronal y la salida deseada. 

Fase de Prueba: en la fase anterior, el modelo puede que se ajuste demasiado a las particularidades presentes en los patrones de entrenamiento, perdiendo su habilidad de generalizar su aprendizaje a casos nuevos (sobreajuste).

Tipos de problemas que se resuelven con las Redes Neuronales.

Las redes neuronales se pueden usar como métodos estadísticos para problemas de clasificación, regresión, análisis por conglomerados (aprendizaje no supervisado), componentes principales, predicción y otros. 

Solución del Proyecto 

Software qué se utilizo para realizar el proyecto es python con el uso de Jupyter Notebook.

Primero procedemos a leer nuestros datos que se encuentran en el archivo HuMoments.csv  para ello hacemos uso de la librería pandas, pero como se puede observar tenemos una columna alfanumérica para ello eliminamos las etiquetas para quedarnos solo con el nombre.





Trasformar nuestros datos.



En esta parte tenemos que eliminar las etiquetas que se repiten y quedarnos solo una de cada uno y para ello hacemos uso del siguiente script y como se puede observar solo no quedamos con los 70 etiquetas que tiene el archivo.


Ahora tenemos que eliminar los las etiquetas cuyo valor es el mismo por numero ya que nuestro sistema no acepta valores alfanuméricos para realizar el entrenamiento de la red neuronal 



Luego de tener nuestros datos limpios esta listo para realizar el entrenamiento con sus respectivos ajustes para ello hacemos de las diferentes librerías.




En la parte final se puede observar los datos de nuestro train y test para luego sacar nuestra matriz de confusión y la precisión de nuestra red neuronal.


Conclusión

Se logro satisfacer algunas dudas que se tenia acerca del perceptron multicapa que se había visto en clases. También se puede decir que las redes neuronales artificiales no superan la funcionalidad de  del cerebro humano por su complejidad, ya que la red perceptron multicapa es el mas efectivo en esste caso ya que no son linealmente separables.


jueves, 5 de diciembre de 2019

Instalación y Requerimientos del FlexSim

Realizado por: Oscar Tenesaca

Proceso de instalación de FlexSim 

Para descargar el programa FlexSim se lo tiene que realizar de sed la pagina oficial que no brinda:
https://www.flexsim.com/es/flexsim-express/ donde tenemos  registrarnos para descargar he hacer uso del software.

Cabe recalcar que este software de prueba solo nos permite obtener 30 objetos para realizar la instalación una vez que se exceda el numero de objetos con se guardara el proyecto.

Una vez que se termine la descarga ya tendremos el instalador listo para realizar nuestros proyectos de simulación.

  • Para la instalación del software solo le damos doble click al instalador donde nos aparecerá una ventana emergente para la instalación donde preguntaran, si estamos de acuerdo con la licencia le damos en aceptar y siguiente.


  • Luego nos pedira la localización de donde queremos que son nos instale el software, si desean lo cambia o pueden simplemente siguiente y esperar que termine la instalación.
Requerimientos de Hardware y Software

  • Procesador : Intel Core 2 Duo o AMD Athlon 64 X2 
  • Memoria del sistema: 1 GB de RAM 
  • Tarjeta gráfica : NVIDIA GeForce Serie 6 o superior
  • Los requisitos mínimos de hardware son:Procesador: Intel Pentium 4 o AMD Athlon XP
  • Memoria del sistema: 256 MB de RAM Tarjeta gráfica: 64 MB tarjeta gráfica compatible con OpenGL 
  • Sistema operativo: Microsoft Windows XP, Vista, ,7 ,8 o superior.
Procesos de configuración

El proceso de configuración son varios, en si para comenzar se tiene que saber cuales son las librerías que usaremos para objetos discretos son todo los que se encuentran al lado izquierdo del programa se clasifica de la siguiente manera:


Fixed Resourses: Son objetos estacionarios en el modelo que pueden presentar paso o estaciones en su proceso o area de almacenamiento.

TaskExecuters: Son usados como recursos móviles en el modelo estos pueden ser operarios que son requeridos para llevar un flowitem a la siguiente etapa.

Otros: Son objetos especiales que contienen librerías.

En esta parte es la parte fundamental para iniciar nuestro proceso de simulación.

Paso a paso para simular eventos discretos.

La principal característica de un sistema de eventos discretos es que el sistema está determinado por una secuencia de eventos que ocurren en momentos aleatorios de tiempo t1, t2 y el cambio de estado del sistema tiene lugar en esos instantes. Para ellos estos son los pasos que se tiene que seguir para simular un evento discreto.
  1. Formulación de la problemática y determinación de los objetivos
  2. Modelado del sistema: se trata de crear el diseño del sistema que permita su simulación por ordenador.
  3. Implementación del modelo en el ordenador.
  4. Verificación del programa
  5. Validación del modelo
  6. Diseño de la simulación y pruebas piloto.
  7. Ejecución de la simulación. Se procede a llevar a cabo la simulación establecida en el paso anterior. 
  8. Análisis de resultados. Los resultados procedentes de un experimento de simulación suelen requerir un análisis estadístico no trivial que permita obtener información útil sobre el comportamiento analizado. 
  9. Documentación del experimento. Una vez finalizado el experimento, éste debe ser convenientemente documentado, de modo que se fomente su credibilidad y la validez de las conclusiones obtenidas.
A continuación un diagrama de los pasos a seguir para simular un evento discreto.