SlideShare una empresa de Scribd logo
1 de 18
Destapando superhéroes
Xamarin + OpenCV + Cognitive Services
Sponsors
Sin ellos no sería posible el evento!
@josueyeray / jyeray@devsdna.com
Microsoft MVP, antes Xamarin MVP y Nokia Developer
Champion.
CTO en devsdna, desarrollador móvil desde que puse
mis dedos sobre una Sharp Zaurus SL5500
Living la vida @ Tenerife!
Librería de visión por ordenador en tiempo real open source, lanzada en 1999
Licencia BSD
Reconocimiento facial
Segmentación y reconocimiento de formas
Tratamiento de imágenes, identificación de objetos
Amplio soporte: Windows, Linux, Mac, iOS, Android, C++, Python, Java…
Llevando OpenCV a Xamarin
OpenCV implementación nativa: iOS y Android
Necesitamos comunicarnos con el componente… ¿Cómo?
Recordemos como funciona Xamarin, C# solo en tiempo de desarrollo, tras compilar se comunica
con componentes nativos 100%
Podemos crear un binding que nos permitirá interactuar con la implementación nativa desde C#.
Es como un puente, mapeamos toda la superficie pública del componente a C# de forma
automática. Al compilar será sustituido por el componente real.
Llevando OpenCV a Xamarin
En iOS, la herramienta objective sharpie nos permite leer e interpretar un .h y crear clases de C#
Crearemos un proyecto de binding de iOS con estas clases C# y el archivo binario .a de OpenCV.
La complejidad es directamente proporcional a la superficie del componente a mapear.
OpenCV es un framework muy complejo, con miles de miembros públicos.
Crearemos una librería estática universal en Objective C que use OpenCV y será esta la que
mapearemos a C#, solo con los métodos que necesitemos.
Llevando OpenCV a Xamarin
En Android, añadiendo el .jar o .aar a un proyecto de Android binding, se genera el código necesario.
Tenemos archivos XML que nos permiten controlar aspectos del binding como:
Mapeo de namespaces de Java a C#, para cambiar el formato de dominio inverso a .NET
Mapeo de métodos, para cambiar los nombres o los tipos de parámetros de Java a C#
Definición de estructuras
Al compilar, se copia el .jar o .aar y nuestra app accederá a las librerías nativas.
Llevando OpenCV a Xamarin
Talk is cheap, show me the code
Azure nos ofrece todo el rango posible de trabajo con Inteligencia Artificial
Cognitive Services
Reconocimiento de caras con Cognitive Services
Machine Learning, Deep Learning son la base, pero requieren de mucha
especialización y muchos conocimientos.
Cognitive Services es Inteligencia Artificial como servicio (AIaaS), nos ofrece
muchos servicios diferentes:
○ Lenguaje: L.U.I.S., OCR, traducción, moderación, análisis…
○ Vision: Clasificación de imágenes, reconocimiento, OCR, Custom Vision…
○ Search: Búsquedas contextuales, por imágenes o videos…
○ Voz: Verificación de voz, reconocimiento, conversión…
○ Conocimiento: Extracción de información desde texto des estructurado…
Cognitive Services
Reconocimiento de caras con Cognitive Services
Cognitive Services tiene un objetivo:
Cognitive Services
Reconocimiento de caras con Cognitive Services
“Democratizar Machine Learning y la IA en
general para los desarrolladores”
Vamos a usar el reconocimiento de caras de Cognitive Services.
Todas las APIs de Cognitive Services tienen endpoints REST
https://[location].api.cognitive.microsoft.com/face/v1.0
Necesitamos indicarle nuestra subscripción y qué información queremos
obtener:
○ Edad, Genero
○ Sonrisa, emociones
○ Pose, pelo, gafas, maquillaje…
Cognitive Services
Reconocimiento de caras con Cognitive Services
Talk is cheap, show me the code
Un componente más de Cognitive Services.
CustomVision nos permite crear un clasificador de imágenes, alimentado con nuestro propio
entrenamiento.
Internamente, es una red neural, a la que se ha añadido un frontal web que nos permite agregar el
set de imágenes que queremos usar como base de entrenamiento.
CustomVision
Clasificación de imágenes con CustomVision
Dispone de dominios pre entrenados, que podemos extender con nuestra propia biblioteca:
○ Adultos
○ Comida
○ Retail
○ Edificios
○ General
Algunos dominios son de tipo compacto, pueden descargarse y usarse con CoreML o TensorFlow lite.
Al incluir imágenes, podemos indicarle una o más etiquetas.
Para crear una etiqueta necesitaremos al menos 5 imágenes, antes de poder entrenarlo.
Según lo vayamos usando, podremos ir incorporando las imágenes procesadas a su entrenamiento para mejorar el
reconocimiento.
CustomVision
Clasificación de imágenes con CustomVision
Tras entrenar un set de imágenes obtenemos dos indicadores: precisión y recuerdo.
○Precisión indica el % de acierto al reconocer un tag.
○Recuerdo indica el % de probabilidad de reconocer el tag correcto en nuevas imágenes.
○Por regla general, subir el recuerdo disminuye la precisión. Lo mejor es alto recuerdo con una precisión algo
más baja. Un 10% de diferencia entre ambos, es óptimo.
CustomVision
Clasificación de imágenes con CustomVision
Talk is cheap, show me the code
¿Quieres saber más sobre Xamarin? Mira nuestro canal de YouTube: http://bit.ly/DevsDNA
¡GRACIAS!

Más contenido relacionado

Similar a Destapando superhéroes

The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...
The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...
The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...Luciano Moreira da Cruz
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelImanol Iza Martin
 
Azure cognitive services using containers
Azure cognitive services using containersAzure cognitive services using containers
Azure cognitive services using containersLuis Beltran
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
Spsmad2016:Un SharePoint enla mochila
Spsmad2016:Un SharePoint enla mochilaSpsmad2016:Un SharePoint enla mochila
Spsmad2016:Un SharePoint enla mochilaRobert Bermejo Blasco
 
Inteligencia Artificial con Azure.pptx
Inteligencia Artificial con Azure.pptxInteligencia Artificial con Azure.pptx
Inteligencia Artificial con Azure.pptxLuis Beltran
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesJosué Yeray Julián Ferreiro
 
Construir una App con AI nunca fue tan fácil
Construir una App con AI nunca fue tan fácilConstruir una App con AI nunca fue tan fácil
Construir una App con AI nunca fue tan fácilRuben Chavarri
 
Angular 2 & nativescript… chau híbrido
Angular 2 & nativescript… chau híbridoAngular 2 & nativescript… chau híbrido
Angular 2 & nativescript… chau híbridomelidevelopers
 
Webinar Servicios Cognitivos
Webinar Servicios CognitivosWebinar Servicios Cognitivos
Webinar Servicios CognitivosLuis Beltran
 
Lizbeth Anahi zambrano Santos 402
Lizbeth Anahi zambrano Santos 402Lizbeth Anahi zambrano Santos 402
Lizbeth Anahi zambrano Santos 402lizbethanahi15
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
Dev dotstar read_principios
Dev dotstar read_principiosDev dotstar read_principios
Dev dotstar read_principiosJordan Diaz
 
Informatica 4º Eso Javier
Informatica 4º Eso  JavierInformatica 4º Eso  Javier
Informatica 4º Eso Javierjavieria6
 
Exelearning - Códigos QR
Exelearning - Códigos QRExelearning - Códigos QR
Exelearning - Códigos QRDORIS ROJAS
 
Utilizando IA en Software: Azure IA Vision
Utilizando IA en Software: Azure IA VisionUtilizando IA en Software: Azure IA Vision
Utilizando IA en Software: Azure IA VisionJose A. Fernandez
 

Similar a Destapando superhéroes (20)

The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...
The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...
The Lord of Cloud Native – Part 1: The Concentric Rings of the Cloud-Native E...
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Azure cognitive services using containers
Azure cognitive services using containersAzure cognitive services using containers
Azure cognitive services using containers
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
Spsmad2016:Un SharePoint enla mochila
Spsmad2016:Un SharePoint enla mochilaSpsmad2016:Un SharePoint enla mochila
Spsmad2016:Un SharePoint enla mochila
 
Inteligencia Artificial con Azure.pptx
Inteligencia Artificial con Azure.pptxInteligencia Artificial con Azure.pptx
Inteligencia Artificial con Azure.pptx
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móviles
 
Construir una App con AI nunca fue tan fácil
Construir una App con AI nunca fue tan fácilConstruir una App con AI nunca fue tan fácil
Construir una App con AI nunca fue tan fácil
 
definicion de java
definicion de javadefinicion de java
definicion de java
 
Angular 2 & nativescript… chau híbrido
Angular 2 & nativescript… chau híbridoAngular 2 & nativescript… chau híbrido
Angular 2 & nativescript… chau híbrido
 
C#
C#C#
C#
 
Webinar Servicios Cognitivos
Webinar Servicios CognitivosWebinar Servicios Cognitivos
Webinar Servicios Cognitivos
 
Lizbeth Anahi zambrano Santos 402
Lizbeth Anahi zambrano Santos 402Lizbeth Anahi zambrano Santos 402
Lizbeth Anahi zambrano Santos 402
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
Dev dotstar read_principios
Dev dotstar read_principiosDev dotstar read_principios
Dev dotstar read_principios
 
Informatica 4º Eso Javier
Informatica 4º Eso  JavierInformatica 4º Eso  Javier
Informatica 4º Eso Javier
 
ANDROID
ANDROIDANDROID
ANDROID
 
Exelearning - Códigos QR
Exelearning - Códigos QRExelearning - Códigos QR
Exelearning - Códigos QR
 
Utilizando IA en Software: Azure IA Vision
Utilizando IA en Software: Azure IA VisionUtilizando IA en Software: Azure IA Vision
Utilizando IA en Software: Azure IA Vision
 

Más de Josué Yeray Julián Ferreiro

Intro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersIntro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersJosué Yeray Julián Ferreiro
 
Introducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universalesIntroducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universalesJosué Yeray Julián Ferreiro
 

Más de Josué Yeray Julián Ferreiro (20)

Xamarin Introduction for Xamarin DevDays Seville
Xamarin Introduction for Xamarin DevDays SevilleXamarin Introduction for Xamarin DevDays Seville
Xamarin Introduction for Xamarin DevDays Seville
 
Azure Notification Hub y Xamarin
Azure Notification Hub y XamarinAzure Notification Hub y Xamarin
Azure Notification Hub y Xamarin
 
Introducción al desarrollo para Hololens
Introducción al desarrollo para HololensIntroducción al desarrollo para Hololens
Introducción al desarrollo para Hololens
 
Novedades Xamarin.Forms 2
Novedades Xamarin.Forms 2Novedades Xamarin.Forms 2
Novedades Xamarin.Forms 2
 
Bailando con monos - Introducción a Xamarin
Bailando con monos - Introducción a XamarinBailando con monos - Introducción a Xamarin
Bailando con monos - Introducción a Xamarin
 
Xamarin forms en el mundo real
Xamarin forms en el mundo realXamarin forms en el mundo real
Xamarin forms en el mundo real
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Taller Xamarin.Forms TLP Innova
Taller Xamarin.Forms TLP InnovaTaller Xamarin.Forms TLP Innova
Taller Xamarin.Forms TLP Innova
 
New controls in Windows 10
New controls in Windows 10New controls in Windows 10
New controls in Windows 10
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Intro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggersIntro to xamarin forms: converters, animations, behaviors and triggers
Intro to xamarin forms: converters, animations, behaviors and triggers
 
Xamarin y Microsoft Azure
Xamarin y Microsoft AzureXamarin y Microsoft Azure
Xamarin y Microsoft Azure
 
Introducción a xamarin
Introducción a xamarinIntroducción a xamarin
Introducción a xamarin
 
Apps monetization for Windows and Windows Phone
Apps monetization for Windows and Windows PhoneApps monetization for Windows and Windows Phone
Apps monetization for Windows and Windows Phone
 
Introducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universalesIntroducción al desarrollo de aplicaciones universales
Introducción al desarrollo de aplicaciones universales
 
Mvvm in universal apps
Mvvm in universal appsMvvm in universal apps
Mvvm in universal apps
 
Nokia mixradio api integration
Nokia mixradio api integrationNokia mixradio api integration
Nokia mixradio api integration
 
Cimbalino Toolkit and Multilingual App Toolkit
Cimbalino Toolkit and Multilingual App ToolkitCimbalino Toolkit and Multilingual App Toolkit
Cimbalino Toolkit and Multilingual App Toolkit
 
Nokia Imaging SDK 1.0
Nokia Imaging SDK 1.0Nokia Imaging SDK 1.0
Nokia Imaging SDK 1.0
 

Destapando superhéroes

  • 1. Destapando superhéroes Xamarin + OpenCV + Cognitive Services
  • 2. Sponsors Sin ellos no sería posible el evento!
  • 3. @josueyeray / jyeray@devsdna.com Microsoft MVP, antes Xamarin MVP y Nokia Developer Champion. CTO en devsdna, desarrollador móvil desde que puse mis dedos sobre una Sharp Zaurus SL5500 Living la vida @ Tenerife!
  • 4. Librería de visión por ordenador en tiempo real open source, lanzada en 1999 Licencia BSD Reconocimiento facial Segmentación y reconocimiento de formas Tratamiento de imágenes, identificación de objetos Amplio soporte: Windows, Linux, Mac, iOS, Android, C++, Python, Java… Llevando OpenCV a Xamarin
  • 5. OpenCV implementación nativa: iOS y Android Necesitamos comunicarnos con el componente… ¿Cómo? Recordemos como funciona Xamarin, C# solo en tiempo de desarrollo, tras compilar se comunica con componentes nativos 100% Podemos crear un binding que nos permitirá interactuar con la implementación nativa desde C#. Es como un puente, mapeamos toda la superficie pública del componente a C# de forma automática. Al compilar será sustituido por el componente real. Llevando OpenCV a Xamarin
  • 6. En iOS, la herramienta objective sharpie nos permite leer e interpretar un .h y crear clases de C# Crearemos un proyecto de binding de iOS con estas clases C# y el archivo binario .a de OpenCV. La complejidad es directamente proporcional a la superficie del componente a mapear. OpenCV es un framework muy complejo, con miles de miembros públicos. Crearemos una librería estática universal en Objective C que use OpenCV y será esta la que mapearemos a C#, solo con los métodos que necesitemos. Llevando OpenCV a Xamarin
  • 7. En Android, añadiendo el .jar o .aar a un proyecto de Android binding, se genera el código necesario. Tenemos archivos XML que nos permiten controlar aspectos del binding como: Mapeo de namespaces de Java a C#, para cambiar el formato de dominio inverso a .NET Mapeo de métodos, para cambiar los nombres o los tipos de parámetros de Java a C# Definición de estructuras Al compilar, se copia el .jar o .aar y nuestra app accederá a las librerías nativas. Llevando OpenCV a Xamarin
  • 8. Talk is cheap, show me the code
  • 9. Azure nos ofrece todo el rango posible de trabajo con Inteligencia Artificial Cognitive Services Reconocimiento de caras con Cognitive Services
  • 10. Machine Learning, Deep Learning son la base, pero requieren de mucha especialización y muchos conocimientos. Cognitive Services es Inteligencia Artificial como servicio (AIaaS), nos ofrece muchos servicios diferentes: ○ Lenguaje: L.U.I.S., OCR, traducción, moderación, análisis… ○ Vision: Clasificación de imágenes, reconocimiento, OCR, Custom Vision… ○ Search: Búsquedas contextuales, por imágenes o videos… ○ Voz: Verificación de voz, reconocimiento, conversión… ○ Conocimiento: Extracción de información desde texto des estructurado… Cognitive Services Reconocimiento de caras con Cognitive Services
  • 11. Cognitive Services tiene un objetivo: Cognitive Services Reconocimiento de caras con Cognitive Services “Democratizar Machine Learning y la IA en general para los desarrolladores”
  • 12. Vamos a usar el reconocimiento de caras de Cognitive Services. Todas las APIs de Cognitive Services tienen endpoints REST https://[location].api.cognitive.microsoft.com/face/v1.0 Necesitamos indicarle nuestra subscripción y qué información queremos obtener: ○ Edad, Genero ○ Sonrisa, emociones ○ Pose, pelo, gafas, maquillaje… Cognitive Services Reconocimiento de caras con Cognitive Services
  • 13. Talk is cheap, show me the code
  • 14. Un componente más de Cognitive Services. CustomVision nos permite crear un clasificador de imágenes, alimentado con nuestro propio entrenamiento. Internamente, es una red neural, a la que se ha añadido un frontal web que nos permite agregar el set de imágenes que queremos usar como base de entrenamiento. CustomVision Clasificación de imágenes con CustomVision
  • 15. Dispone de dominios pre entrenados, que podemos extender con nuestra propia biblioteca: ○ Adultos ○ Comida ○ Retail ○ Edificios ○ General Algunos dominios son de tipo compacto, pueden descargarse y usarse con CoreML o TensorFlow lite. Al incluir imágenes, podemos indicarle una o más etiquetas. Para crear una etiqueta necesitaremos al menos 5 imágenes, antes de poder entrenarlo. Según lo vayamos usando, podremos ir incorporando las imágenes procesadas a su entrenamiento para mejorar el reconocimiento. CustomVision Clasificación de imágenes con CustomVision
  • 16. Tras entrenar un set de imágenes obtenemos dos indicadores: precisión y recuerdo. ○Precisión indica el % de acierto al reconocer un tag. ○Recuerdo indica el % de probabilidad de reconocer el tag correcto en nuevas imágenes. ○Por regla general, subir el recuerdo disminuye la precisión. Lo mejor es alto recuerdo con una precisión algo más baja. Un 10% de diferencia entre ambos, es óptimo. CustomVision Clasificación de imágenes con CustomVision
  • 17. Talk is cheap, show me the code
  • 18. ¿Quieres saber más sobre Xamarin? Mira nuestro canal de YouTube: http://bit.ly/DevsDNA ¡GRACIAS!