Temas:
- Introducción al Análisis de Imágenes
- Aplicación de aprendizaje automático para el desarrollo de modelos de predicción con el lenguaje de programación R
- Programando algoritmos genéticos y otras metaheurísticas en Python
- Python para Aprendizaje Máquina Introducción a la Visión por Computadora.
- Modelos subrogados: la minería de datos en auxilio del cómputo evolutivo
- Diseño automático de metaheurísticas dejando a un lado las metáforas
- Introducción a los Algoritmos Genéticos y su implementación con frameworks y bibliotecas de código abierto
- Localización Visual utilizando Aprendizaje Profundo para Drones y Robots Móviles
- Implementando soluciones software usando herramientas de desarrollo en la nube: un ejemplo basado en patrones de diseño
- Ciberseguridad en IoT: Implementando algoritmos criptográficos desde cero
- Introducción a la visión por computadora
Introducción al Análisis de Imágenes
Juan Humberto Sossa Azuela
Objetivo
Proporcionar al participante los conceptos básicos sobre el análisis de imágenes para su aplicación en problemas relacionados con la visión por computadora.
Motivación
El análisis de imágenes es una de las áreas más relevantes de la Inteligencia Artificial. Se aplica actualmente en muchos problemas de la vida real.
Temario
Introducción y motivación, Pre-procesamiento o adecuación de una imagen, Segmentación de una imagen, Obtención de rasgos descriptivos, Detección y clasificación de objetos, Ejemplos ilustrativos.
Audiencia
Estudiantes de licenciatura principalmente.
Aplicación de aprendizaje automático para el desarrollo de modelos de predicción con el lenguaje de programación R
Dr. José Luis Sánchez Cervantes, Dr. Giner Alor Hernández Dr. Luis Rolando Guarneros Nolasco
Objetivo
Aplicar algoritmos de aprendizaje automático para el desarrollo de un modelo de predicción a través de un conjunto de datos público haciendo uso del lenguaje de programación R
Motivación
El uso del aprendizaje automático en el desarrollo de modelos predictivos ofrece una gran oferta para su uso en diferentes campos de aplicación, ya que juegan un papel importante para la identificación de las principales características del modelo a predecir. Un ejemplo de aplicación importante es el ámbito de la salud, ya que son un apoyo importante a los profesionales de la salud en la predicción e identificación de los principales atributos que influyen en el desarrollo de alguna enfermedad. R es un entorno y lenguaje de programación con un enfoque al análisis estadístico. R nació como una reimplementación de software libre del lenguaje S, adicionado con soporte para ámbito estático. Se trata de uno de los lenguajes de programación más utilizados en investigación científica, siendo además muy popular en los campos de aprendizaje automático (machine learning), minería de datos, investigación biomédica, bioinformática y matemáticas financieras. A esto contribuye la posibilidad de cargar diferentes bibliotecas o paquetes con funcionalidades de cálculo y graficación. R es parte del sistema GNU y se distribuye bajo la licencia GNU GPL. Está disponible para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux.
Temario
1. Fundamentos de aprendizaje automático.
2. Algoritmos para clasificación en aprendizaje automático.
3. El lenguaje de programación R: Conceptos básicos.
4. Caso práctico: Modelo de predicción aplicando machine learning con el lenguaje R.
Audiencia
El tutorial está dirigido para estudiantes de nivel licenciatura, maestría y profesionistas dedicados al desarrollo de software que se interesen en adquirir conocimientos básicos de aprendizaje automático utilizando lenguaje de programación R
Programando algoritmos genéticos y otras metaheurísticas en Python
Jesús Guillermo Falcón Cardona
Objetivo
Enseñar a los asistentes cómo programar diferentes metaheurísticas bio-inspiradas para fortalecer el uso de estas en la comunidad científica mexicana, teniendo como meta la aplicación de estas técnicas en problemas del mundo real.
Motivación
Dada la gran cantidad de problemas de optimización en el mundo, es necesario contar con técnicas para su solución. Sin embargo, obtener el conocimiento de estas técnicas en ocasiones solo se hace a través de cursos muy especializados y de difícil acceso. En consecuencia, este curso busca ofrecer un enfoque práctico a los asistentes para que conozcan el mundo de las metaheurísticas bio-inspiradas y cómo programarlas en un lenguaje de programación popular como Python. De esta forma, el conocimiento de esta área de la computación se pone rápidamente al servicio de los asistentes.
Temario
1. Introducción gentil a la optimización.
2. Introducción a la computación evolutiva.
3. Recordando Python y programación orientada a objetos
4. Programando un algoritmo genético.
5. Programando un algoritmo de optimización por cúmulo de partículas.
6. Programando un algoritmo de optimización por colonia de hormigas.
7. Programando la evolución diferencial.
8. Aplicando lo aprendido.
Audiencia
Este curso tutorial va enfocado a estudiantes de licenciatura o posgrado que estén interesados en conocer cómo implementar metaheurísticas bio-inspiradas y cómo emplearlas. Se requiere conocimiento básico en el lenguaje de programación Python (versión 3) y en los paquetes Numpy, Pandas y Matplotlib. Es recomendable contar con conocimientos básicos sobre programación orientada a objetos. Conocimientos básicos sobre matemáticas.
Python para Aprendizaje de Máquina
Alejandro Rosales Pérez, Dr. Víctor Hugo Muñiz Sánchez
Objetivo
Presentar a los conceptos básicos de aprendizaje supervisado y no supervisado y las herramientas en Python para abordar este tipo de problemas.
Motivación
Dada la creciente disponibilidad de datos y el interés en el uso de técnicas que permitan analizar y aprender un modelo
Temario
1. Definición de aprendizaje supervisado,
2. Algoritmos de aprendizaje supervisado,
3. Introducción a las librerías scikit-learn y numpy de Python,
4. Diseñando un modelo de aprendizaje usando Python.
Audiencia
Conocimientos básico de Python.
Procesamiento de imágenes con programación genética
Héctor Gabriel Acosta Mesa, MIA. Rocío Erandi Barrientos Martínez, MIA. José Luis Llaguno Roque.
Objetivo
El objetivo del tutorial es mostrar a los asistentes los fundamentos de la representación de imágenes digitales, así como los algoritmos básicos de procesamiento para extraer características de estas para posteriormente poder ser utilizadas por algoritmos de aprendizaje automático con fines de segmentación o clasificación.
Motivación
Actualmente la visión por computadora es una área muy activa de investigación, que a su vez tiene muchas aplicaciones potenciales. El procesamiento digital de imágenes es la base de los algoritmos de visión por computadora, por lo que este tutorial busca sentar las bases teóricas y prácticas para incursionar en esta área.
Temario
Introducción a la visión por computadora, representación de imágenes digitales, preprocesamiento, filtros convolucionales para extracción de características, segmentación de imágenes, clasificación de imágenes. Cada tema estará acompañado por ejercicios en Python ejecutados sobre la plataforma de GoogleColab.
Audiencia
Estudiantes de licenciatura o posgrado en el área técnica o computación con conocimientos básicos de programación en Python.
Modelos subrogados: la minería de datos en auxilio del cómputo evolutivo
Aldo Márquez grajales, Efrén Mezura Montes, DC; Héctor Gabriel Acosta Mesa, DC
Objetivo
Este curso pretende introducir conceptos que permitan a la audiencia conocer los mecanismos necesarios para implementar modelos aproximados y resolver problemas donde el costo computacional para obtener la solución sea alto
Motivación
En la actualidad, los problemas de optimización surgidos en la industria requieren de un alto costo
computacional para evaluar si una solución es candidata factible para ser usada como solución final por el usuario. La evaluación de una solución puede tardar varios minutos, horas o incluso días.
Una alternativa para resolver problemas de optimización complejos es el uso de algoritmos evolutivos (AEs). Sin embargo, estos métodos necesitan un número considerable de evaluaciones para encontrar una solución. Considerando que una sola evaluación es costosa debido al modelo requerido, el esfuerzo computacional total para hallar la solución al problema se eleva exponencialmente.
Por ello, es necesario desarrollar métodos capaces de optimizar costosos procesos con el menor esfuerzo de cómputo. A estos métodos se les conoce como modelos subrogados. Dichos modelos aproximan la evaluación de las soluciones mediante modelos menos costosos que el original. Por lo regular, se emplean modelos de minería de datos para la creación de los modelos aproximados.
La ventaja de utilizar los modelos subrogados es el ahorro del esfuerzo computacional necesario para la ejecución del proceso de optimización de los AEs. Dicho ahorro se presenta al realizarse menos evaluaciones en el modelo original, y por consiguiente, menos operaciones, que derivan en un menor costo computacional.
Como resultado, es importante que los profesionales en el área de ciencias de la computación conozcan estas herramientas que permiten obtener soluciones con el procesamiento de cómputo al alcance, eliminando la necesidad de adquirir mayor potencia o nuevas tecnologías para obtener resultados en los problemas complejos que requieren resolver.
Temario
Tema 1. Cómputo evolutivo monoobjetivo.
1.1. Importancia del cómputo evolutivo.
1.2. Elementos de un algoritmo evolutivo y genético.
1.3. Algoritmos de inteligencia colectiva.
1.4. Manejo de restricciones.
Tema 2. Cómputo evolutivo multiobjetivo.
2.1. Optimalidad de Pareto.
2.2. Elementos de un algoritmo evolutivo multiobjetivo.
2.3. Medidas de desempeño de los algoritmos evolutivos multiobjetivo.
Tema 3. Minería de datos.
3.1. El proceso de Descubrimiento de Conocimiento en Bases de Datos
3.2. Aprendizaje supervisado.
3.3. Aprendizaje no supervisado.
Tema 4. Algoritmos Evolutivos asistidos por subrogados
4.1. Diseño de experimentos.
4.2. Modelos subrogados.
4.3. Métodos de evaluación de modelos subrogados
4.4. Construcción de modelos subrogados para optimización monoobjetivo.
4.5. Construcción de modelos subrogados para optimización multiobjetivo.
Audiencia
El curso tutorial va dirigido a profesionales en el área de computación y estadística con conocimientos previos en computación básica, programación en python, matemáticas y modelos estadísticos.
Diseño automático de metaheurísticas dejando a un lado las metáforas
Dr. Jorge Mario Cruz Duarte
Objetivo
Concienciar y establecer un pensamiento crítico al momento de estudiar y utilizar algoritmos basados en heurísticas en problemas prácticos particulares, priorizando su estructura matemática y funcionamiento sobre cualquier otro aspecto relacionado.
Motivación
Las metaheurísticas han sido ampliamente utilizadas en una gran diversidad de problemas prácticos y su popularidad es fácil de verificar en cualquier acervo bibliográfico. Sin embargo, aún en nuestros tiempos, muchas metaheurísticas continúan apareciendo como algoritmos novedosos en su descripción, pero en realidad son recombinaciones de operadores matemáticos de otros métodos. En este tutorial haremos una revisión crítica a los métodos clásicos, y a algunos nuevos, para así identificar las partes en común y establecer un modelo estándar que nos permita proponer y/o modificar estrategias de solución para problemas particulares.
Temario
1. Breve historia de las metaheurísticas
2. Clasificación y taxonomía
3. Conceptos básicos en términos matemáticos
4. Modelo estándar de una metaheurística
5. Implementación y pruebas: parte práctica
Audiencia
Personas con conocimientos básicos en matemáticas
Introducción a los Algoritmos Genéticos y su implementación con frameworks y bibliotecas de código abierto
MC. José Alejandro Cornejo Acosta, MC. Cosijopii García García
Objetivo
El objetivo es que los asistentes aprendan los conceptos básicos de los Algoritmos Genéticos e identifiquen los principales componentes que los conforman. Después del tutorial, los asistentes podrán identificar cuando es factible y recomendable utilizar los algoritmos genéticos y los frameworks y bibliotecas de código abierto disponibles para implementar dichos algoritmos.
Motivación
La computación evolutiva es un área de investigación dentro de las ciencias de la computación que estudia un conjunto de técnicas de resolución de problemas inspiradas en el proceso de evolución de las especies. Los Algoritmos Genéticos son quizá la más conocida de estas técnicas. A grandes rasgos, en los algoritmos genéticos existe una población de individuos que interactúan entre ellos, algunos de estos individuos serán seleccionados y pasarán por un proceso de reproducción (cruza) para generar descendencia, después dicha descendencia pasará por un proceso de mutación. Por último, solo algunos individuos de la población sobrevivirán para pasar a la siguiente generación. Los algoritmos genéticos tienen muchas aplicaciones, por ejemplo, se han utilizado para tratar de resolver problemas de búsqueda y optimización en diferentes ámbitos en donde el espacio de búsqueda es muy grande.
El software de código abierto es un concepto que nació en las décadas de los 80s-90s, y se refiere a que el software sea accesible al público en general, con el objetivo de que todos lo puedan utilizar, modificar y distribuir de la forma en que se considere pertinente. Actualmente el software de código abierto es utilizado en muchos ámbitos y por muchas empresas. El software de código abierto ha crecido en los últimos años y se han desarrollado frameworks y bibliotecas para todo tipo de proyectos, incluyendo software para proyectos de ciencia de datos e inteligencia artificial.
Temario
1. Introducción a los Algoritmos Genéticos 1.1 Historia
1.2 Componentes
1.3 Más allá de los Algoritmos Genéticos
2. Software de código abierto
2.1 ¿Qué es?
2.2 ¿Por qué utilizarlo?
3. Software de código abierto para algoritmos genéticos
3.1 Software para C/C++, Java
3.2 Software para Python
4. Ejercicios prácticos con Algoritmos Genéticos
4.1 Problema de la mochila, TSP, 8-reinas, adicionales.
Audiencia
Estudiantes de ingeniería que estén interesados en incursionarse en temas de computación evolutiva y en optimización. Deseable que los asistentes tengan conocimientos básicos de programación en Python o en algún otro lenguaje de programación (variables, funciones, arreglos, listas). Deseable que los asistentes tengan nociones sobre conjuntos y álgebra (notación matemática, sumatorias, desigualdades, etc).
Localización Visual utilizando Aprendizaje Profundo para Drones y Robots Móviles
José Martínez Carranza, DC. José Arturo Cocoma Ortega, cDC. Leticia Oyuki Rojas Pérez, cDC. Aldrich Alfredo Cabrera Ponce, cDC.
Objetivo
Presentar un panorama general sobre metodologías para estimación de posición basadas en aprendizaje profundo y su uso en tareas de navegación autónoma para drones y robots móviles.
Motivación
La posibilidad de conocer la posición actual de un objeto o algún ente (tal como lo puede ser un robot, o incluso una persona) puede ser explotada en diversas áreas tales como el cómputo vestible (wearable computing), realidad aumentada o la navegación autónoma. Particularizando la tarea de navegación autónoma, resulta de vital importancia conocer la posición y trayectoria que ha recorrido el vehículo, esto con el fin de conocer las zonas por las que ha transitado, así como para tomar decisiones sobre su siguiente movimiento. Para ello, pese a existir diversas formas de obtener la posición, esta no siempre está disponible en todos los casos, esto es, algunos sensores usados en vehículos con ruedas no pueden ser empleados en vehículos aéreos; por otra parte, sensores especiales como GPS pueden no ser accesibles en determinados entornos como en los interiores, en donde la calidad de la señal puede verse mermada, o bien la precisión de la medición queda fuera del rango del ambiente. Motivado por lo anterior, el uso de una cámara para la recolección de imágenes como sensor principal para realizar estimación de pose de manera visual resulta de las opciones más convenientes que pueden ser aplicables a la mayoría de los casos.
Por ello, se propone el siguiente tutorial en el cual se muestran diversas técnicas de estimación de posición usando cámaras monoculares como sensor principal, con métodos basados en deep learning.
Temario
Introducción [15 min] Marco teórico [1:30 hrs]
Que es una red neuronal [5 min]
Red CNN [15 min]
Ejemplos de CNN [10 min por ejemplo]
VGG, caso de estudio 1
AlexNet, caso de estudio 2
SDD, caso de estudio 3
SDD, caso de estudio 4
SDD, caso de estudio 5
Profundidad, caso de estudio 6
Preguntas [10 min]
Break [20 min]
Trabajo relacionado [1:30 hrs]
Break [20 min]
Ejemplo demostrativo [1:40 hrs]
Caso 1: Análisis PoseNet [30 min]
Caso 2: GreySeqNet [30 min]
Caso 3: DeepPilot [30 min]
Preguntas [10 min]
Break [20 min]
Ejemplo práctico [1:20 hr]
Dataset de Microsoft
Red PoseNet / DeepPilot
Entrenamiento en Collab
Preguntas [20 min]
Conclusiones [15 min]
Trabajo a futuro [5 min]
Audiencia
Estudiantes de Posgrados Estudiantes de Universidad Conocimientos previos Programación básica Algebra lineal Manejo de sistemas operativos basados en linux Deseables Lenguaje Python ROS Entornos virtuales
Implementando soluciones software usando herramientas de desarrollo en la nube: un ejemplo basado en patrones de diseño
Ricardo Rafael Quintero Meza
Objetivo
Dar a conocer a los participantes el desarrollo de soluciones software usando herramientas de desarrollo gratuitas y basadas en tecnología de la nube: desde el espacio del problema hasta el espacio de la solución.
Motivación
La necesidad cada vez mayor de herramientas que permitan a los desarrolladores ofrecer soluciones eficaces a las necesidades de programación y que sean independientes a plataformas y tecnologías subyacentes lleva a buscar opciones en la nube. La mayor parte de las herramientas actuales para desarrollar (Editores, compiladores, intérpretes, IDEs) suelen requerir instalaciones locales que suelen crear dependencia tecnológica que no es conveniente cuando se realiza trabajo de desarrollo en equipo y se desea contar con una capacidad eficiente, rápida y eficaz de montaje de los ambientes de programación en los equipos de desarrollo. La opción que se está ofreciendo para este escenario es buscar escenarios de programación y herramientas que habiliten a los programadores a desarrollar su trabajo con independencia de los equipos tecnológicos que use, así como habilitar el montaje de infraestructura de manera práctica con independencia del tiempo y lugar. La nube ofrece solución a este problema.
Temario
1.-Motivación 2.-Soporte en la nube para el modelado, desarrollo, gestión de configuración, pruebas y montaje de una aplicación.
3.-Ejercicio práctico de programación.
4.-Conclusiones
Audiencia
Participantes con conocimiento de programación orientada a objetos (Java, C++). Deseable conocimiento de control de versiones y pruebas.
Ciberseguridad en IoT: Implementando algoritmos criptográficos desde cero
Claudia Feregrino Uribe, M. en C. Carlos Alejandro Peñuelas Angulo M. en C. Raziel César Campos Sánchez
Objetivo
El asistente a este taller aprenderá qué es la ciberseguridad, el IoT y la importancia que la criptografía tiene dentro de ambas áreas. Explorará los conceptos y algoritmos criptográficos más relevantes, afianzará su aprendizaje implementando a nivel software algoritmos criptográficos basados en teoría de números y aprenderá a llevar a cabo implementaciones seguras en elementos de hardware.
Motivación
Los ciberataques son una realidad y están a la orden del día. Los ataques a infraestructuras clave son cada vez más frecuentes y se calcula que las pérdidas económicas derivadas por estos alcanzan los miles de millones de dólares. Por ello, existe una demanda creciente por profesionales con conocimientos en ciberseguridad que sean conscientes de esta situación y considere las implicaciones de seguridad en cualquier desarrollo tanto en software como en hardware. La criptografía tiene un papel clave en la ciberseguridad y, si bien la seguridad de un sistema no depende únicamente del uso de algoritmos criptográficos, es importante que los futuros especialistas en ciberseguridad tengan pleno entendimiento de cómo funcionan estos y cómo se implementan a diversos niveles en un contexto IoT.
Temario
1. La ciberseguridad como parte fundamental del IoT 2. Redes de comunicaciones y seguridad informática
3. Herramientas y algoritmos criptográficos
4. Ataques cibernéticos
5. De las matemáticas al software: Implementación de algoritmos
5a. Configuración del entorno Charm
5b. RSA
5c. Diffie-Hellman
5d. AES
6. Herramientas para brindar seguridad en HW a dispositivos IoT
6a. PUFs
6b. Módulos de seguridad en hardware
7. Implementación de esquema híbrido de seguridad en IoT
8. Pruebas de ataques cibernéticos en IoT
Audiencia
Para estudiantes de licenciatura, ingenieros o estudiantes de maestría con entendimiento de conceptos matemáticos como teoría de grupos, con conocimiento básico de programación en Python y con facilidad para utilizar aplicaciones de consola.
Introducción a la visión por computadora
Ing. Ana Gabriela Reyna Flores
Objetivo
Lograr un entendimiento introductorio y abarcativo de las principales técnicas de visión por computadora: clasificación, detección de objetos y segmentación de imágenes. Se pretende que los asistentes obtengan una base teórica acompañada de ejercicios prácticos en código utilizando el lenguaje de programación Python.
Motivación
La visión por computadora es una rama de la Inteligencia Artificial (IA) que se especializa en el aprendizaje e interpretación de entradas visuales como imágenes y videos, permitiendo a las computadoras y sistemas de software recabar datos valiosos en un contexto visual. La visión por computadora es un campo que está revolucionando la industria y cuyas aplicaciones van desde el reconocimiento facial, vehículos autónomos, manufactura, salud y deportes. Al ser una especialización de la IA y un campo nicho del Machine Learning, la visión por computadora no es una asignatura comúnmente impartida a nivel licenciatura pero que es sumamente relevante en las ciencias computacionales.
Temario
Visión por computadora: definición y aplicaciones Redes Neuronales Convolucionales (CNNs): Base teórica
Ejercicios prácticos con CNNs:
- Clasificación de imágenes
- Detección de objetos
- Segmentación de imágenes
Audiencia
Cualquier persona interesada con conocimientos en programación orientada a objetos en algún lenguaje como java, C# o Python. Al ser un tutorial introductorio no es necesario tener experiencia previa en visión por computadora. El material será impartido en Python, por lo que cualquier conocimiento previo sobre dicho lenguaje sería de utilidad mas no obligatorio.