#AI – Mis posts sobre CustomVision.ai, exportando y utilizando ONNX, Docker, en PC, RaspberryPi, MacOS y más !

Buenas !

Ahora que tengo una pausa entre eventos en Canada y USA, y ya he escrito varios posts al respecto, es el tiempo ideal para compilar y compartir los posts que he escrito sobre CustomVision.ai. Sobre como crear un proyecto de reconocimiento de objectos, como utilizar el mismo en modo web, invocando un HTTP Endpoint desde una app de consola. Y también desde aplicaciones en Windows 10 exportando el proyecto a formato ONNX y utilizando Windows ML. Finalmente, un par de post donde explico como utilizar CV.ai con docker en PC, Mac y Raspberry Pi.

  1. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  2. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  3. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, drawing frames
  4. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, calculate FPS
  5. Can’t install Docker on Windows 10 Home, need Pro or Enterprise
  6. Running a Custom Vision project in a local Docker Container
  7. Analyzing images in a Console App using a Custom Vision project in a Docker Container
  8. Analyzing images using PostMan from a Custom Vision project hosted in a Docker Container
  9. Building the CustomVision.ai project in Docker in a RaspberryPi
  10. Container dies immediately upon successful start in a RaspberryPi. Of course, it’s all about TensorFlow dependencies
  11. About ports, IPs and more to access a container hosted in a Raspberry Pi
  12. Average response times using a CustomVision.ai docker container in a RaspberryPi and a PC

Windows 10 and YOLOV2 for Object Detection Series

Greetings @ Burlington

El Bruno

Advertisements

#CustomVision – Es el momento de mover los proyectos de Custom Vision a #Azure!

Buenas !

Durante las ultimas semanas he escrito mucho sobre Custom Vision, ejemplos sobre como exportar modelos a formato ONNX o a imágenes para Docker; y luego utilizar estos modelos en apps de Consola, o en UWP Apps, inclusive con Docker en una Raspberry Pi. A este post lo tengo en borrador desde hace un tiempo, por lo que lo mejor sera que lo publique lo antes posible.

Si eres usuario de CustomVision.ai, seguramente has visto el siguiente mensaje cuando accedes al portal. El mismo nos avisa que el servicio dejara de estar disponible en modo preview / test el día 2019-03-19. Esto implica que si quieres seguir utilizando CV, debes mover tus proyectos a Azure.

Custom Vision moved to Azure

Una opción puede ser crear nuevamente los proyectos de CV, cargar las imágenes y hacer todo el proceso de etiquetado y entrenamiento desde cero. Esa opción es valida. Sin embargo, los nuevos proyectos tendrán nuevos IDs y también nuevas URLs para acceder a los HTTP EndPoints de los mismos. La otra opción es [mover a Azure] los proyectos de CV.

Lo primero que debemos hacer es crear un Custom Vision resource en una suscripción de Azure. Si conoces Azure estos son 2 clics, y muy fáciles.

azure custom vision resource

Podemos seguir utilizando un plan Free, con los siguientes parámetros:

  • Up to 2 projects
  • Limit of 5000 training images
  • 2 transactions per seconds
  • Limit of 10000 predictions per month

Custom Vision Azure Prices

Una vez creado el resource en Azure, debemos volver al portal de CustomVision.ai, seleccionar el proyecto que queremos migrar y en la sección Settings veremos una opcion [Move to Azure] en la esquina izquierda inferior.

Custom Vision move to Azure button

Teniendo en cuenta que solo podemos usar Proyectos de CV en una única región, por ahora, tendremos que completar los datos para mover el proyecto. Y listo! El proyecto de CV esta migrado a Azure 😀

Custom Vision move to Azure only in South Central

Happy Coding!

Greetings @ Toronto

El Bruno

Resources

  1. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  2. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  3. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, drawing frames
  4. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, calculate FPS
  5. Can’t install Docker on Windows 10 Home, need Pro or Enterprise
  6. Running a Custom Vision project in a local Docker Container
  7. Analyzing images in a Console App using a Custom Vision project in a Docker Container
  8. Analyzing images using PostMan from a Custom Vision project hosted in a Docker Container
  9. Building the CustomVision.ai project in Docker in a RaspberryPi
  10. Container dies immediately upon successful start in a RaspberryPi. Of course, it’s all about TensorFlow dependencies
  11. About ports, IPs and more to access a container hosted in a Raspberry Pi
  12. Average response times using a CustomVision.ai docker container in a RaspberryPi and a PC

Windows 10 and YOLOV2 for Object Detection Series

 

#OpenSource – Microsoft anuncia que ofrece la calculadora de Windows en modo Open Sources, y el source code es lo menos importante del anuncio

Buenas !

Hace un par de días, Microsoft anunció que ofrecería el código fuente de la calculadora de Windows en modo Open Source.

Official Blog Post, Announcing the Open Sourcing of Windows Calculator

Como era de esperar, hubo muchas opiniones diferentes. Hay que incluir a los [haters tiempo completo] que empezaron a soltar argumentos como: “esto es una vergüenza, no es suficiente“,  o “esto es una broma, liberar el código fuente de una app tan simple como la calculadora“.

calculator W10

Dejando de lado, esas opiniones haters sin fundamento, hay que leer entre lineas para darse cuenta que hay varios puntos muy importantes detrás de este anuncio.

Comencemos por el código fuente, disponible en Github bajo la licencia MIT, esto de por si es genial. Sin embargo, si has estudiado o aprendido a programar, es muy probable que en algún momento de tu carrera, hayas creado una calculadora. Es casi el 2do paso obligatorio después del Hello World, en mi caso la programé en Pascal, hace muchos pero muchos años.

Lo que seguramente no has hecho, cuando programaste tu calculadora, fue agregar telemetría de uso a la misma. Y, aunque no lo parezca, detrás de la calculadora de Windows, hay mucha información de telemetría. Este es un excelente ejemplo para comenzar a comprender como agregar telemetría a una aplicación. Inclusive si tomamos como referencia a una aplicación simple como la calculadora de Windows (sin ofender). Si además te aburres, puedes invertir un par de minutos en leer Microsoft Privacy Statement, un documento muy divertido para comprender como Microsoft maneja tu información personal.

Otro punto a importante a tener en cuenta en este anuncio, es la posibilidad de comenzar a comprender como se maneja un producto. Una vez más, inclusive uno tan “simple” como la calculadora de Windows. Tener acceso a los pasos necesarios para gestionar las Features por cada Release (Feature Process steps), o inclusive ver como el tablero Kanban de features es publico para los colaboradores del grupo, es un excelente recurso de aprendizaje.

calculator github feature tracking

Y sin olvidar, que la Calculadora es una Universal Windows Platform App, así que también esta la oportunidad de aprender un poco de desarrollo de Apps para Windows 10, Xaml, y conceptos de Fluent App Design !

Happy coding!

Saludos @ Burlington

El Bruno

References

#MacOs – Where is my Total Commander? fman es una gran alternativa a TC en Mac

Buenas !

En mis posts anteriores escribi sobre las alternativas que he encontrado en MacOS para aplicaciones como Paint y Putty. Si bien, ambas herramientas son muy importantes, no las uso tan a menudo como la del post de hoy: Total Commander.

Total Commander es una herramienta genial. Yo he utilizado TC desde que soy usuario de Windows, y eso son muchos años. La idea de tener 2 paneles con los archivos en una carpeta, y que desde los mismos se pueda copiar, mover, eliminar y mas con un solo clic, es genial. Además, he dejado de utilizar FileZilla como cliente FTP, ya que con TC tengo las mismas opciones directamente en la herramienta.

Nota: Soy consciente que la idea de 2 paneles de vista de archivos es anterior a Windows. Algunos compañeros del metal me mostraron demos de Norton Commander, que parece que era una herramienta imprescindible en esos días.

Norton Commander 5.51

Pues bien, llega el momento de buscar alternativas y para eso lo mejor es https://alternativeto.net/, La búsqueda de alternativas para Total Commander se puede ver en este link (incluyendo las de MacOS) https://alternativeto.net/software/total-commander/

He utilizado algunas durante las últimas semanas y la que más me ha gustado ha sido fman. He aquí algunas razones

  • La app es simple. No tiene nada que no deba estar allí, con una UI simple y minimalista.

01 fman simple view

  • Utiliza las mismas teclas que Total Commander para copiar, mover, eliminar, etc. Esto es un plus importante ya que la memoria en los dedos ayuda y mucho. (siend que no hay tecla Fn en MacOS)

03 fman keyboard

  • Lo mismo con las teclas de dirección y la tecla BackSpace (Delete) para navegar al folder anterior.
  • Cmd & P abre una ventana de búsqueda muy útil.

02 fman quick search

  • Soporta plugins. Hay una lista interesante de plugins aquí: https://fman.io/docs/plugins y esto también me da la oportunidad de mejorar mis conocimientos de python.

Y por último, es barata! Le voy a dar un mes de prueba (todo Marzo) y luego adquiriré una licencia.

Kudos para Michael Hermann (@m_herrmann) el creador de la App, que parece que como yo, al venir de Windows con TC se encontró con la necesidad de algo similar en MacOS y lo creo!

Happy coding!

Saludos @ Toronto

El Bruno

Resources

My posts on experiences in Mac from a Windows user

#Office – Uno de los mejores ejemplos de uso de #AI con #Powerpoint (luego llegará el de Excel en mobile)

Buenas  !

Cuando hablamos de Inteligencia Artificial, hay muchos ejemplos que podemos utilizar para demostrar las capacidades de AI (Artificial Intelligence). En lo personal, siempre prefiero utilizar ejemplos que sean fácilmente trasladados a nuestro día a día. Es por eso que la opción [Design Ideas] en PowerPoint es uno de los mejores ejemplos que suelo utilizar.

En la siguiente animación podemos ver como partiendo de una simple Slide con 3 elementos de texto, [Design Ideas] nos presenta una serie de estilos aplicados sobre la slide original que realmente mejoran nuestra presentación. Es interesante mencionar que además de agregar un estilo visual a la Slide, también agrega iconos para cada uno de los 3 bullets, que están relacionados con el contenido de los mismos.

Powerpoint design ideas

Para que quede más claro, esta es la slide original

powerpoint slide original

Y este es el diseño propuesto.

powerpoint slide updated

El siguiente artículo sobre [Design Ideas] explica todos los escenarios en los que podemos utilizar el Designer en PowerPoint

Create professional slide layouts with PowerPoint Designer

Happy coding!

Saludos @ Toronto

El Bruno

#Event – Global Azure Bootcamp, Mississauga, abierto el Call for Speakers!

Avanade Canada mug on snow with goku

Buenas !

Wow, parece que fue ayer cuando estuve compartiendo algunas experiencias sobre Cognitive Services experiencias en el Global Azure Bootcamp 2018. Hoy me toca anunciar que ya estamos planificando la versión de 2019 el 27 de Abril en las oficinas de Microsoft Offices en Mississauga. Más información en el  official website.

Hace un par de días hemos abierto el Call for Speakers:

C4S https://sessionize.com/global-azure-bootcamp-2019-mississauga/

Saludos @ Toronto

El Bruno

#Event – Materiales utilizados en la sesión [Getting Started with Machine Learning.Net & Windows Machine Learning] con el grupo de usuarios GLUG

Buenas!

Es momento de otro post para compartir los materiales utilizados durante la sesión con el grupo de usuarios GLUGnet User Group for .NET, Web, Mobile, Database. Especial agradecimiento para Joe Kunk (@JoeKunk) y a los asistentes al webcast vía Google Hangouts. Por cierto, la sesión fue con los materiales actualizados a la version 0.10 de ML.NetÑ Windows ML and Machine Learning.Net.

Como siempre, aquí están las slides.

Source Code GitHub https://github.com/elbruno/events/tree/master/2019%2002%2021%20GLUG%20NetUG%20MLNet

Y algunos links que comenté durante la sesión:

Resources

Happy Coding!

Saludos @ Toronto

El Bruno

#MacOs – Where is my Paint? [Primeros días en MacOs después de décadas en #Windows]

Buenas !

Antes de comenzar, creo que es mejor compartir un poco de contexto. He sido un usuario de Windows por mas de 2 décadas. He probado y utilizado otros SOs, como Linux, cuando trabajo con mi Raspberry Pi; o hace mucho tiempo con Xamarin y Mac OS. Sin embargo, mi SO principal siempre ha sido Windows.

Hace un par de semanas cambie mi fabulosa SurfacePro por un MacBook Pro. Y comencé a conocer el grandioso mundo de MacOS. Es por eso, que después de un par de tweets divertidos he decidido compartir un par de posts al respecto. El primero es bastante auto-descriptivo

Where is Paint in Mac?

OK, mas contexto. En mis presentaciones cuando hablo de Custom Vision (uno de los mejores servicios de la familia de Cognitive Services), usualmente utilizo las demos que usamos durante el InsiderDev tour . Estas son muy descriptivas porque se basan en un par de dibujos a mano alzada.

Usar estas imágenes me permite de una forma simple, mostrar como Custom Vision permite crear un modelo de reconocimiento de imagenes. Algo similar a esto:.

Screen Shot 2019-02-19 at 1.41.58 PM

Una de las ventajas de este modelo es que puedo crear nuevas imágenes, por ejemplo una flor o un pez, utilizando solo el mouse.

Una vez que he entrenado un modelo, la siguiente demo que realizo en vivo, es dibujar un pez o una flor con una App como Paint. La herramienta no tiene que ser muy poderosa ni tener muchas funcionalidades, solo un canvas en blanco y un lápiz para poder dibujar algo simple.

Cuando comencé a practicar mi sesión en mi MacBook Pro, me di cuenta que no tenia Paint, ni algo similar en MacOS. La app Preview, para abrir imágenes, permite realizar modificaciones menores en imágenes.

Nota: Practicar, practicar y practicar, esa es la clave de buenas sesiones.

Screen Shot 2019-02-19 at 1.50.44 PM

Este es un buen punto de partida, sin embargo la app no permite crear un archivo en blanco. En este momento, publique un tweet preguntando al respecto y gracias a las respuestas, comencé a probar algunas app. La que mejor se adapto a lo que yo necesitaba era : Paintbrush

Screen Shot 2019-02-18 at 1.19.16 PM

Esta app es simple y con funcionalidades similares a Paint de Windows. En uno de los tweets, me recomendaron una pagina con muchas alternativas para Microsoft Paint: Microsoft Paint Alternatives for Mac

Bonus: Krita (link) es una app free para editar imagenes, sin embargo es demasiado para lo que yo necesitaba. 😀

 

Saludos @ Toronto

El Bruno

References

#VS2019 – Lanzamiento de Visual Studio 2019 el 2 de Abril 9:00am PT

 

visual studio 2019 launch event

Buenas !

Es tiempo de preparar el 2do monitor para el próximo 2 de Abril, cuando se presenta la nueva versión de Visual Studio 2019 !

Grandes speakers como Scott Hanselman y otros, estaran en una sesion de 7 horas presentando la ultima version de Visual Studio. El evento oficial y los detalles se pueden encontrar en https://visualstudio.microsoft.com/vs2019-launch/ , es tiempo de agregar el reminder y disfrutar el nuevo IDE !

Saludos @ Burlington

El Bruno

#Docker – Sobre puertos, IPs y mas para acceder a un container alojado en #RaspberryPi

Buenas !

Mi proyecto de CustomVision.ai esta compilado y ejecutándose en Docker en Raspberry Pi 3. Ahora llega el momento de utilizar el mismo desde aplicaciones en otros dispositivos, y para este caso, todos en la misma red.

Cuando ejecute mi imagen, utilice parámetros para definir la IP y los mapeos de los puertos de la misma. El siguiente comando es muy útil para ver esta información en un container.

sudo docker port <CONTAINER ID>

01 docker port

Mi container esta registrado en la dirección IP 127.0.0.1 y utiliza el puerto 80. Esto es genial para procesos locales, sin embargo no permite que este container sea accedido desde otros devices.

Lo ideal es no registrar la direccion IP local 127.0.0.1 y solo definir el mapeo de puertos 80:80. En este caso ejecuto mi imagen con el siguiente comando

sudo docker run -p 80:80 -d <IMAGE ID>

02 docker port 80 and success run

El container utilizar el puerto 80, y Docker toma control de este puerto en la RaspberryPI. La dirección IP de la raspberry pi es [192.168.1.58], así que ya puedo realizar pruebas con Postman para analizar imágenes en la RPI.

03 docker image analysis from postman

Super cool. Un potente y barato server de análisis de imágenes basado en un proyecto de CustomVision por menos de $30 !

Happy coding!

Greetings @ Burlington

El Bruno

References

My Posts

  1. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  2. Object recognition with Custom Vision and ONNX in Windows applications using WinML
  3. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, drawing frames
  4. Object recognition with Custom Vision and ONNX in Windows applications using Windows ML, calculate FPS
  5. Can’t install Docker on Windows 10 Home, need Pro or Enterprise
  6. Running a Custom Vision project in a local Docker Container
  7. Analyzing images in a Console App using a Custom Vision project in a Docker Container
  8. Analyzing images using PostMan from a Custom Vision project hosted in a Docker Container
  9. Building the CustomVision.ai project in Docker in a RaspberryPi
  10. Container dies immediately upon successful start in a RaspberryPi. Of course, it’s all about TensorFlow dependencies

Windows 10 and YOLOV2 for Object Detection Series