page_type: sample
languages:
- csharp
products:
-
azure
description: "How to take a model exported from the Custom Vision Service in the ONNX format and add it to an application for real-time image classification."
urlFragment: cognitive-services-onnx-customvision-sample
ONNX models exported from Custom Vision Service
Warning
This repository is no longer maintained. Please visit Azure-Samples/customvision-export-samples
This sample application demonstrates how to take a model exported from the Custom Vision Service in the ONNX format and add it to an application for real-time image classification.
Getting Started
Prerequisites
Quickstart
- Clone the repository and open the project in Visual Studio
- Build and run the sample Application
- Application comes with two models already included along with sample images to test
Adding your own sample model of your own classifier.
The models provided with the sample recognizes some foods (Cheesecake, Donuts, Fries) and the other recognizes some plankton images. To add your own model exported from the Custom Vision Service do the following, and then build and launch the application:
- Create and train a classifer with the Custom Vision Service. You must choose a "compact" domain such as General (compact) to be able to export your classifier. If you have an existing classifier you want to export instead, convert the domain in "settings" by clicking on the gear icon at the top right. In setting, choose a "compact" model, Save, and Train your project.
- Export your model by going to the Performance tab. Select an iteration trained with a compact domain, an "Export" button will appear. Click on Export then ONNX then Export. Click the Download button when it appears. A *.onnx file will download.
- Drop your *model.onnx file into your project's Assets folder.
- Under Solutions Explorer/ Assets Folder add model file to project by selecting Add Existing Item.
- Change properties of model just added: "Build Action" -> "Content" and "Copy to Output Directory" -> "Copy if newer".
- In the MainPage.xaml.cs file set the "_ourOnnxFileName" constant to the name of the model just added.
- Build and run.
- Click button to select image to evaluate.
Things to note.
- Image preprocessing is performed by binding method call. Look at method "EvaluateAsync" of class "OnnxModel". Note that it binds a VideoFrame instance to "data"; this binding call will perform cropping and scaling such that the image fits the define size of model (224 x 224 with included models). It will also reformat the image data into a tensor that the model expects(Channel(BGR), Rows, Cols).
- mlgen.exe - This tool generates API code in c# or c++ for a specified ONNX model. See Windows ML overview for description of the utility. If you are working with an ONNX model and are unsure what variable types to utilize, this utility will generate the correct types.
Resources