Crear una Windows 10 UWP App y utilizar YoloV2 para reconocer objetos
Buenas!
Ahora que ya tenemos el archivo Yolo.ONNX es momento de crear una app en la que utilicemos el mismo. He aquí el paso a paso y algunos comentarios
1. Creamos una nueva Windows 10 UWP App. Como siempre el nombre es super original

2. Como vamos a utilizar la cámara como feed de imágenes para procesarlas con YoloV2. Hay muchos ejemplos sobre como realizar esto. En este caso utilizaremos un control de Windows Community Toolkit V 3.0 (como ya escribí en un post anterior). Agregamos los siguientes packages vía NuGet
- Microsoft.Toolkit.Uwp.UI
- Microsoft.Toolkit.Uwp.UI.Controls

3. Agregamos un control CameraPreview en nuestro Xaml y ya estamos a 2 lineas de tener la cámara funcionando.

4. Habilitamos los permisos necesarios para utilizar la camera en el manifiesto con con las siguientes líneas nuestra app ya tiene una camera funcional.

5. Llega el momento de comenzar a utilizar YoloV2. Las últimas versiones de Visual Studio 2017 nos permiten importar un modelo ONNX en un proyecto y se crearan las clases necesarias para trabajar con el mismo. Agregamos como un archivo existente al archivo [Tiny-YOLOv2.onnx].
Nuestra solución debería quedar similar a la siguiente

6. La clase que se genera en VS para trabajar con el modelo es bastante “fea”.

7. Mi sugerencia, reemplazar [8d4d0fa662b14686b1865e0e6d3c598e] por [TinyYoloV2]

8. Ahora si ya podemos ver la clase generada y dentro de la misma podremos encontrar 3 clases
- Una clase de Input para el model
- Una clase de Output para el model
- Una clase para trabajar con el model
Es momento de cargar el modelo en nuestra app. Esto lo hacemos antes de inicializar la camera como muestra el siguiente codigo
9. Como utilizaremos el modelo como parte de nuestra app, tenemos que definir que el mismo sea tratado como un Content en el proceso de Build

10. El siguiente paso es evaluar un frame de la cámara con el modelo YoloV2. Aquí el código nos muestra como utilizamos las clases que creamos cuando importamos el modelo.
11. Finalmente un BreakPoint nos puestra como el output del modelo tiene [información], que deberemos procesar luego.

Importante: En algún momento debería escribir sobre las capacidades de conversión de modelos que nos trae Visual Studio Tools for AI. Si estas interesado puedes ver las referencias.
Pues bien, en este punto ya estamos utilizando el modelo YoloV2 para analizar los frames de la cámara. En los siguientes posts comentare como trabajar con el output del modelo para interpretar el mismo.
Happy Coding!
Saludos @ Toronto
El Bruno
References
Like this:
Like Loading...