Crear una Windows 10 UWP App y utilizar YoloV2 para reconocer objetos
- Introduccion a YoloV2 como modelo de reconocimiento de objetos
- Como crear una UWP App y analizar los frames de la webcam utilizando YoloV2
- Convirtiendo el resultado de YoloV2 a clases C# y mostrarlas en modo Frames
- Redimensionar el output para trabajar con diferentes resoluciones y mostrar los Frames procesados por segundo con YoloV2
- Tutorial para convertir Tiny-YoloV3 de CoreML a Onnx para utilizarlo en la App de reconocimiento de 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
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
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
Y ya podemos lanzar nuevamente la operación de conversión
Y pocos segundos después ya tenemos nuestro Tiny-YoloV3 en formato Onnx
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.
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
- YOLOCoreML-MPSNNGraph
- VS Tools for AI Converting Models to ONNX
- YOLO: Real-time object detection
- YOLO9000: Better, Faster, Stronger by Joseph Redmon and Ali Farhadi (2016)
- ONNX Tools
- Azure AI Gallery, Tiny YOLO V2
- El Bruno, Windows Community Toolkit V 3.0 makes life incredibly easy if you need working with the camera in a UWP App
- Visual Studio Marketplace, Visual Studio Tools for AI
- Real-time object detection with YOLO
- Rene Schulte GitHub
- Sevans4067 WinML-TinyYolo