#WinML – Alternatives to #Yolo for object detection in #ONNX format

Hi!

A few days ago I commented with some colleagues the example of using TinyYolo In a UWP Application. Now it is a very task, because we can use a ONNX model in an Windows 10 application.

Note: The App can be an UWP app or a standard Win32 app, like, for example, the classic Windows forms.

Well, in the middle of the conversation, someone ask the following question, which is also a classic in ML events and talks:

Is there an AI model Marketplace for Windows?

The answer is yes. And although it’s not a Marketplace Models only, at Azure AI Gallery (Https://gallery.azure.ai/models) We can find many ONNX models, already ready to be used in Windows 10.

01 azure ai gallery home

On the main page we can see the different models organized by categories and by relevance. If we go into the detail of one of the models, we will see the details of the same, Like this As the option of downloading the file ONNX

02 azure ai gallery Alex Net details

Finally, according to the documentation of the model, we will be able to access your GitHub repository, Paper Where it explains the same, and other options.

03 AlexNet paper

So, you know, if you want to add some AI capabilities in your Apps, the Azure AI Gallery is a #MustReview Place to look!

Happy Coding!

Greetings @ Toronto

El Bruno

References

Windows 10 and YOLOV2 for Object Detection Series

Advertisements

#WinML – Alternativas a #TinyYolo para reconocimiento de objetos en formato #ONNX

Buenas!

Hace unos días comentaba con unos colegas el ejemplo de utilización de TinyYolo en una UWP. Ahora es muy simple poder utilizar un modelo de ML en formato ONNX y utilizarlo en una aplicación en Windows 10.

Nota: la app puede ser UWP o una app Win32 estándar, como, por ejemplo, los clásicos Windows Forms.

Pues bien, en el medio de la conversación, surgió la pregunta que mas respondo en eventos y charlas:

¿Hay un Marketplace de modelos de AI para Windows?

La respuesta es SI. Y aunque no es un marketplace solo de modelos, en Azure AI Gallery (https://gallery.azure.ai/models) podemos encontrar muchos modelos ONNX, ya preparados para ser utilizados en Windows 10.

01 azure ai gallery home

En la página principal podemos ver los diferentes modelos organizados por categorías y por relevancia. Si entramos al detalle de uno de los modelos, veremos los detalles del mismo, asi como la opción del descargar el archivo ONNX

02 azure ai gallery Alex Net details

Finalmente, de acuerdo con la documentación del modelo, podremos acceder a su repositorio de GitHub, al paper donde se explica el mismo, y otras opciones.

03 AlexNet paper

Así que, ya sabes, si quieres agregar algunas capacidades de AI en tus apps, la Azure AI Gallery es un #MustReview place donde buscar!

Happy Coding!

Saludos @ Toronto

El Bruno

References

Windows 10 and YOLOV2 for Object Detection Series

#WinML – Updated demo using Tiny YOLO V2 1.2, Windows 10 and YOLOV2 for Object Detection Series

Windows 10 and YOLOV2 for Object Detection Series


Hi!

There is a new Tiny YOLO V2 version in Azure AI Gallery

Tiny YOLOv2 1.2

I’ve updated my sample in GitHub to use this new version

https://github.com/elbruno/Blog/tree/master/20180806%20UwpMLNet%20TinyYoloV2%201.2

And it seems that Windows Insiders, are still having issues loading ONNXs models. My current build is 17730.1000

I1.png

Happy Coding!

Greetings @ Toronto

El Bruno

References

#WinML – Demo actualizada para utilizar Tiny YOLOv2 1.2, Windows 10 and YOLOV2 for Object Detection Series

Windows 10 and YOLOV2 for Object Detection Series


Buenas!

Ya tenemos disponible una nueva version de Tiny YOLO V2 en Azure AI Gallery

Tiny YOLOv2 1.2

Así que he actualizado el sample en GitHub para que utilice esta nueva version

https://github.com/elbruno/Blog/tree/master/20180806%20UwpMLNet%20TinyYoloV2%201.2

Y solo recordar que la carga de modelos ONNX parece que sigue sin funcionar en las versiones de Windows Insiders, en mi caso la build 17730.1000

I1.png

 

Happy Coding!

Saludos @ Toronto

El Bruno

References

#WinML – How to create a #Windows10 App and use #TinyYOLOV2 for object detection (the complete series)

Hi !

Windows 10 and TinyYOLOV2 for Object Detection Series

The complete example in GitHub

https://github.com/elbruno/Blog/tree/master/20180709%20UwpMLNet%20TinyYoloV3

Happy Coding!

Greetings @ Toronto

El Bruno

References

#WinML – Tutorial para convertir YoloV3 de CoreML a Onnx para utilizarlo en una #Windows10 App

Crear una Windows 10 UWP App y utilizar YoloV2 para reconocer objetos


Buenas !

En el post de hoy comentare como descargar la última versión de Tiny-YoloV3 y utilizarla en la UWP App que cree en post anteriores. Solo como reminder, la versión que utilice era Tiny-YoloV2 que es la que esta disponible en formato Onnx para descargar desde Azure AI Gallery.

Podemos descargar Tiny-YoloV3 desde su página oficial, sin embargo yo trabajare con una versión que ya está compilada en formato CoreML, que el formato de ML que se suele utilizar en apps iOS (ver referencias).

Pues bien, para convertir el modelo de CoreML a Onnx, utilizaremos Visual Studio Tools for AI, y el siguiente conjunto de software

Una vez instalado todo el software, podemos seguir el paso a paso de [AI Converting models to ONNX] para convertir nuestro modelo. Sin embargo, el camino no es tan simple como parece. Lo 1ro que nos podemos encontrar son errores como el siguiente

01 thanks Python

Problemas con Python, en mi caso tenia varias versiones de Python instaladas, pero el IDE no tenia ninguna marcada como [Default]. Desde el panel [Pythin Environments] se puede solucionar esto

01 1 Python environments

El siguiente problema que necesito un poco de configuración de mi parte, estaba relacionado con prerequisitos para la conversión. Todo comienza con [Missing package WinMLTools]

—————————

Error

—————————

Missing package WinMLTools, please check details in output window.

—————————

OK  

—————————

 

Traceback (most recent call last):

  File “C:\Users\<Bruno>\AppData\Local\Microsoft\VisualStudio\15.0_e5344afb\Extensions\kzqekf1z.44v\RuntimeSDK\model\model_converter_cli.py”, line 76, in check_winmltools_installed

    import winmltools

ModuleNotFoundError: No module named ‘winmltools’

Sin embargo, despues de investigar un rato, estas son los 2 packages que necesito instalar

Microsoft ML Tool (winmltools)

pip3 install winmltools==0.1.0.5072

CoreML Tools

pip3 install “git+https://github.com/apple/coremltools@v0.8”

Claro, antes hay que actualizar Python

03 upgrade pip.png

Y ya podemos lanzar nuevamente la operación de conversión

07 01 convert.png

Y pocos segundos después ya tenemos nuestro Tiny-YoloV3 en formato Onnx

07 convert running

Como el modelo respeta el Input / Output de la versión anterior, solo debemos reemplazar el archivo en nuestra solución. Yo he agregado el nuevo Onnx solo para tener un poco mas de control sobre el ejemplo.

08 Sol Onnx.png

Como siempre he actualizado el ejemplo completo en GitHub

https://github.com/elbruno/Blog/tree/master/20180709%20UwpMLNet%20TinyYoloV3

 

Happy Coding!

Saludos @ Burlington

El Bruno

References

#WinML – Problems With ONNX and Machine Learning.Net in the latest versions of #Windows10 Insiders

Hi!

After writing a step by step on how to use YoloV2 in a Windows App 10, I find that in the latest versions of Windows Insider, WinML It’s not working properly.

Windows 10 and YOLOV2 for Object Detection Series

 

I’ve reported the problem here Https://aka.ms/AA1sy9u And in my particular case in my Device With the version [17711.1000] as something fails in the UWPs App that use ONNX.

01

On another machine with version [17134.1] and it works properly

Happy Coding!

Greetings @ Toronto

El Bruno

References

#WinML – Problemas con ONNX y Machine Learning.Net en las versions de #Windows10 Insiders

Buenas!

Después de escribir un paso a paso sobre como utilizar YoloV2 en una App Windows 10, me encuentro con que en las ultimas versiones de Windows Insider, WinML no funciona correctamente.

Crear una Windows 10 UWP App y utilizar YoloV2 para reconocer objetos

He reportado el problema aquí https://aka.ms/AA1sy9u y en mi caso particular en mi device con la versión [17711.1000] pues algo falla en las UWPs app que utilizan ONNX.

01.png

En otra máquina con versión [17134.1] funciona correctamente

Happy Coding!

Saludos @ Toronto

El Bruno

References

#WinML – How to create a #Windows10 App using #YOLO for object detection (4 of 4)

Windows 10 and YOLOV2 for Object Detection Series


Hi!

Let me start from my previous post where I already coded a a real-time video camera feed process using with Tiny-YoloV2. The model returns results in a 416×416 size image, and that’s why the detected frame with the person looks kind of weird.

01

It’s not complicated to work with the output so it can be adapted to the size of the Webcam control, only a couple of lines of code.

And in this way, we can draw the frames with the right format. In the following image it is possible to see how a person is detected, with a low precision score and as well as one of the pictures on the wall it is detected as a monitor.

02

From here, it’s all about optimization, for example, take the value of the webcam control only when the app is resized.

In the final example, I have also added a visual indicator as a status bar, which shows the number of frames processed per second and the real size of the elements in the App.

03

The full code for the example can be downloaded from

https://github.com/elbruno/Blog/tree/master/20180704%20UwpMLNet%20TinyYoloV2

Happy Coding!

Greetings @ Toronto

El Bruno

References

#WinML – Creando una #Windows10 App con #YOLO para reconocer objetos (4 de 4)

Crear una Windows 10 UWP App y utilizar YoloV2 para reconocer objetos


Buenas!

Si retomamos el post anterior veremos que ya tenemos un proceso en tiempo real del video de la webcam analizado con Tiny-YoloV2. El modelo retorna resultados en una imagen de tamaño 416×416, y es por eso por lo que la imagen anterior el Frame de la persona se ve con un aspecto extraño.

01

El tratamiento para que el output se adapte al tamaño del control del WebCam puede solucionarse con 2 líneas de código.

 

 

Y de esta forma, ya podemos dibujar los Frames con el aspecto correcto. En la siguiente imagen es posible ver como se detecta una persona, con un bajo score de precisión y como además uno de los cuadros de la pared se lo detecta como un monitor.

02

A partir de aquí se pueden optimizar muchas cosas, por ejemplo, solo tomar el valor del tamaño

del canvas en el Resize de la App.

 

 

En el ejemplo final, he agregado además un indicador visual que muestra la cantidad de frames procesados por segundo y el tamanio real con el que se esta trabajando.

03

El código completo del ejemplo se puede descargar desde

https://github.com/elbruno/Blog/tree/master/20180704%20UwpMLNet%20TinyYoloV2

Happy Coding!

Saludos @ Mississauga

 

El Bruno

References