Just a self reminder post of a couple of events in my calendar.
Introduction to Machine Learning.Net
31 July 2020
Machine Learning.Net 1.5.1 is already here, so that’s the perfect excuse to chat with my colleagues from the MUG Argentina about this. This session is designed for developers who wants to start in the Machine Learning world. Machine Learning.Net is an amazing framework for this!
XR Session – Lessons Learned creating a multiplatform AI project for Azure Kinect and Hololens 2
6 August 2020
It all started with a 10000 kms conversation between 2 friends about how easy is to port Mixed Reality projects between platforms. So, we choose Azure Kinect and Hololens 2 as the platforms to test this out. To make this more challenging, we also decided to place custom holograms in those different platforms based on some cool Image Recognition scenarios (custom Artificial Intelligence rocks!) During this session we will review how to use MRTK, Azure Kinect SDK, Computer Vision, and other cool technologies to make this happen. And, of course, be aware that this session is full of code, hardware and demos, do not expect a lot of slides. Let’s code / build this. Speakers: Ivana Tilca & Bruno Capuano, Both Microsoft MVP
Seguimos en modo StayAtHome, y una forma excelente de conectar con las comunidades, es participando en eventos ya sea como Speaker o como Attendee.
Esta vez tengo la oportunidad de hablar en NetCoreConf:
Lo último en tecnologías Microsoft y mucho más con los mejores expertos. Donde podrás aprender, compartir y hacer networking. Asistiendo a diversas Conferencias y Workshops. Hablaremos sobre NetCore, Azure, Xamarin, IA, Big Data. ¿A que estas esperando?
NetCoreConf 2020 realizará el primer evento virtual a nivel global dedicado exclusivamente al sector del desarrollo y consultoría que busca descubrir y dar a conocer las nuevas tecnologías de vanguardia y crear vínculos estratégicos que generen sinergias conjuntas entre los profesionales del sector, empresas e instituciones.
La agenda es impresionante, y yo hablaré de uno de los productos más interesantes que Microsoft ha presentado en los últimos años: Machine Learning.Net. En mi sesión comentaré un poco la historia y algunos ejemplos del producto, y además un poco de una herramienta muy interesante para los no programadores: AutoML.
Finalmente, agradecer al gran equipo que esta detrás de este evento:
It was a placer to share some amazing time with the Mississauga .Net User Group last night in my last session of the decade. It was a full night focused on Artificial Intelligence and Machine Learning, and as usual is time to share the resources used in the session.
I’m getting ready for my last event of the year, and I just realize that in the latest update of Model Builder, we have the chance to build our own Image Classifier scenario. Let’s start with the official Model Builder definition (see references):
ML.NET Model Builder provides an easy to understand visual interface to build, train, and deploy custom machine learning models. Prior machine learning expertise is not required. Model Builder supports AutoML, which automatically explores different machine learning algorithms and settings to help you find the one that best suits your scenario.
Working with images was supported for a while in Machine Learning.Net. In the Machine Learning .Net Samples, we have sample scenarios like
Image Classification Model Training – Preferred API (Based on native TensorFlow transfer learning)
In this sample app you create your own custom image classifier model by natively training a TensorFlow model from ML.NET API with your own images.
We even have an amazing tutorial, to create our own image classification model from zero
Tutorial: Generate an ML.NET image classification model from a pre-trained TensorFlow model
Learn how to transfer the knowledge from an existing TensorFlow model into a new ML.NET image classification model. The TensorFlow model was trained to classify images into a thousand categories. The ML.NET model makes use of part of the TensorFlow model in its pipeline to train a model to classify images into 3 categories.
Training an Image Classification model from scratch requires setting millions of parameters, a ton of labeled training data and a vast amount of compute resources (hundreds of GPU hours). While not as effective as training a custom model from scratch, transfer learning allows you to shortcut this process by working with thousands of images vs. millions of labeled images and build a customized model fairly quickly (within an hour on a machine without a GPU). This tutorial scales that process down even further, using only a dozen training images.
And now, I found that Model Builder, also supports an Image Classification Scenario.
It follows the Model Builder standard workflow, starting with the selection of the scenario:
And then selecting a folder with the Images.
Important: Model Builder expects image data to be JPG or PNG files organized in folders that correspond to the categories of the classification.
To load images into Model Builder, provide the path to a single top-level directory:
This top-level directory contains one subfolder for each of the categories to predict.
Each subfolder contains the image files belonging to its category.
Once the folder is selected, we can see a preview of the images and labels loaded from the folder.
For more information about how to organize images for this scenario, refer to Load training data into Model Builder.
And now we start the training process. This may take a while, depending on your hardware. I’m using the sample set of drawings that we used on the InsiderDev Tour, for Custom Vision. These are 24 drawings images, with 3 labels, and in a PC with a I7, 32GB of Ram and an SSD, the training process took a little longer than 2 minutes.
Once the training is complete, we have a decent accuracy in our model, so it’s time to test. Before Model Builder last step, we have the chance to test the model with some test images.
Using one of the images that I created at Ignite in Orlando, the trained model get’s a human with a 99% of accuracy.
And, the final step is to add the generated model and code to our project. I’ll write about how to use this generated code on the near future.