#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

#MLNET – Export Machine Learning.Net models to #ONNX format

Hi!

Machine Learning.Net has a new release. In this version 0.3, there are several very interesting features. Cesar De la Torre explains in a very detailed way all these new features (see references). I’ve had some extra time these days and I’ve been trying something that I find very interesting

Export Machine Learning.Net models to #ONNX format

As always the best thing describe this it with a couple of lines of code

  • Up to Line 28, the Console APP creates a pipeline, and trains it to have a ML.Net model.
  • In the following lines, using a OnnxConverter, I export the model to ONNX.

The documentation of OnnxConverter and examples of ML.Net detail more complex scenarios where for example you define which columns are included or excluded. If we open the file Onnx, it’s interesting to see how a simple pipeline is represented as this example

01

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – Exportando modelos de Machine Learning.Net a formato #ONNX

Buenas!

Machine Learning.Net tiene un nuevo release y en esta versión 0.3, hay varias features interesantes. En el post de Cesar De la Torre se comentan estas nuevas features (ver referencias). Yo he tenido un hueco en estos días y me he dedicado a probar algo que me parece muy interesante

La capacidad de exportar modelos Machine Learning.Net a formato ONNX.

Como siempre lo mejor es explicarlo con un par de líneas de código

  • Hasta la línea 28, la Console App crea un Pipeline, y lo entrena para tener un Modelo ML.Net.
  • En las siguientes líneas, utilizando un OnnxConverter, exporto el modelo a ONNX.

La documentación de OnnxConverter y los ejemplos de ML.Net detallan escenarios más complejos donde por ejemplo se definen que columnas se incluyen o excluyen. Si abrimos el archivo Onnx, es interesante ver como se representa un pipeline simple como el de este ejemplo

01

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#WinML – How to convert Tiny-YoloV3 model in CoreML format to Onnx and use it in a #Windows10 App

Windows 10 and YOLOV2 for Object Detection Series


Hi!

In today’s post I’ll share some experience on how to download the latest version of Tiny-YoloV3 and use it in the UWP App that I created in previous posts. Important, the Tiny-YoloV2  model I’ve used in previous posts was in Onnx format, and it was downloaded from Azure AI Gallery.

We can download Tiny-YoloV3 from the official site, however I will work with a version that is already compiled in CoreML format, CoreML format is usually used in iOS apps (see References).

Well, to convert the model of CoreML To Onnx, we will use Visual Studio Tools For Ai. And the next set of software

Once all the software is installed, we can follow the step by step of [Ai Converting Models To ONNX] to convert our model. However, the road is not as simple as it seems. The 1st thing we can find are errors like the following

01 thanks Python

Problems with Python, in my case had several versions of Python installed, but the IDE had no marked as [Default]. From the panel [Pythin Environments] You can fix this

01 1 Python environments

Next Problem I need some configuration on my part, it was related to Prerequisites for conversion. It all starts with [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’

However After Of Investigate for a while, these are the 2 Packages I need to install

Microsoft ML Tool (winmltools)

pip3 install winmltools==0.1.0.5072

CoreML Tools

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

As always, 1st thing to do is update Python

03 upgrade pip.png

And now we can launch the conversion operation again

07 01 convert.png

And a few seconds later we already have our Tiny-YoloV3 in format Onnx

07 convert running

Because the model respects the Input/Output of the previous version, we only have to replace the file in our solution. I have added the new Onnx Just to have a little more control over the example.

08 Sol Onnx.png

As I have always updated 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