Rosella       Machine Intelligence & Data Mining

  Home | Data Mining/Machine Learning | MyDataSay/Android | BI Server | Products & Downloads | Site Map | Contact/Sales |

Convolutional Neural Network for Image Classification

Convolutional Neural Network (CNN) is a very powerful image classification modeling techniques. It can classify objects in images. As in the following figure, a CMSR CNN model consists of a number of streams and final fully connected layers. The number of streams is normally one. Advanced models can have multiple streams. A stream is a sequence of convolutional layers and pooling layers, normally pairs of convolutional and pooling layers. Final fully connected layers are made up with three layers: a merge layer, a fully connected ANN (Artificial Neural Network) layer and an output layer which is another ANN layer. Input is an image data. Give an image data, CNN network classify into class labels.

Convolutional Neural Netwrk - CNN

Accuracy of models are mainly determined by the following factors;

  • Initial kernel/weight assignment: CMSR uses zero sum randomization. Some randomizations can lead to dead or poor accuracy networks. Dead networks are dead when their accuracy is low and and cannot improve accuracy. When happened, start training with refresh option or recreate a new model.
  • Network configuration: Good network configuration that fits for training data is vital. Start with good guess and improve upon it. It's quite common to see many networks go dead. Bad configuration often leads to dead networks.
  • Training data: Good training data is essential for good training results.
  • Training techniques: Good training technique is essential for good results.

The first step of CNN modeling is configuring network and creation of a network based on configuration. Next step is training of the created network. Network training is an iterative process that involves verification using test datasets. You can train network using various compatible datasets and verify.

Network Creation and Configuration

The first step of CNN is to configure network and create a network based on configuration. Once created configuration cannot be changed. Only training will be possible. Configuration will differ based on layer types such as convolution, pooling, merge, fully connected and output layers.

Network Training

Network training is an iterative process. You can train a network model using various datasets and verify. After training, you can save models. And later reopen it and start training again, using the same or different compatible datasets. Compatible datasets are having same width, height, color system and classification labels. All training dataset classification label names must exist in model's configuration datasets, thus, models classification label names.

Applying Model to Datasets

Models can be applied to a dataset to classify images in the dataset. This classification can be viewed from image dataset browser. Select image size of 128 or bigger, then you will be able to see original label as well as predicted label. In addition, place the cursor to an image, then hover will appear showing classification information.

To apply a model to a dataset, open both of them. Make the model as the front. Then press the "Apply model to Dataset" button. Select the dataset and model version. Once applied, resulting classification can be viewed from image dataset browser. Note that maximum one classification is applicable to each dataset. When a model is applied again, previous classification will be replaced new classification.

Exporting Network for Embedded Applications

Once fully trained, you can generate program source codes in Java and C/C++. It's fully independent program codes that do not require additional libraries. It only uses standard math libraries which is always included in target systems. This feature is designed for embedded application developers. Just copy it and paste into your applications.

Note that Java codes may include a bunch of class definitions. This is because Java limits the number of literal values for each class. So CMSR generates a bunch of classes. From your main program, just call "modelname.execute(, , , )".