#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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s