Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In computer vision, the goal of image segmentation is to cluster pixels into salient image regions, i.e., regions corresponding to individual surfaces, objects or natural parts of objects. The goal of segmentation is simplify and/or change the representation of an image into something that is more meaningful and easier to analyze. More precisely, image segmentation is the process of assigning a label to every pixel in an image such that pixels with the same label share certain characteristics. The result of image segmentation is a set of segments that collectively cover the entire image, or a set of contours extracted from the image. Image segmentation could be used for object recognition, occlusion boundary estimation with motion or stereo systems, image compression, image editing, or image database look-up.
There is a publicly available image segmentation data from UCI, and they were drawn randomly from a database of 7 outdoor images. Each instance of the data is a 3x3 region (9 pixels) from a image and 19 attributes used to describe the characteristics of each region (instance) in the data. In this article, we try to use this data to train a model by using Microsoft R Server and MicrosoftML package, and then the model can be used to assign the label to every pixel in an image. We choose Neural Networks algorithm in MicrosoftML package to train the model, and use another separate image segmentation data from UCI to test the model and show the performance tuning by adjust the parameters in Neural Networks algorithm.
MicrosoftML provides rxNeuralNet to train a Neural Network for regression modeling and for binary and multi-class classification. Once the training/testing data is ready, you can train a Neural Networks model by using Microsoft R Server and MicrosoftML package. According to the training data, it's a multi-class classification problem, so we should specify the argument "type" in rxNeuralNet to be "multiclass", the default value of argument "type" is "binary".
According to the results of the model trained in the previous section on testing set, we can tell that the performance of the model is not good. However, we cannot tell if we should use other algorithms or we should keep working on the training data, features, and tuning parameters. Actually, rxNeuralNet provides several parameters to tune the performance of the model, here are the parameters supported in MicrosoftML. In section, we use the validation set to tune and select the best model, and then evaluate the model on the same test data used in the previous section.
After tuning the parameters optimizer, initWtDiameter, and numHiddenNodes, the accuracy improved significantly from 51% to 91% on the same testing set. We also noticed accuracy of classes brickface, cement and window was 0 before tuning the model, after tuning, the accuracy of classes brickface, cement and window increased to 98.6%, 86.3% and 70.6%. Here is the overall accuracy of the model after tuning different parameters, and the accuracy of each class before and after tuning.
From this article, we can see that tuning is very important step for improving the performance of machine learning model once the training data and features are fixed.
Please sign in to use this experience.
Sign in