I have a dataset (300,000 samples) of grey scale images of dimensions 32x32. There are two classes and the samples are almost equally balanced. I am trying to achieve binary classification based on the variations in the image, especially on the boundary pixels, i.e., images which have mostly uniform intensity will be labeled as 0, while images with more variations will be labeled as 1.

I started with a small network but got an accuracy of 54% only. Thereafter, I started experimenting by adding more convolution layers, increasing filter size, reducing learning rate, changing optimizers etc. I used the modified AlexNet for CIFAR10 dataset as the CIFAR10 dataset also has 32x32 images only. The difference being in the number of image channels and the number of classes only. But, I could reached upto 64% accuracy only.

I understand that with two classes the minimum accuracy will be 50%. This implies that my network is not learning well enough. Now I need to know whether the problem is with my approach, because this may not be a simple classification problem. It may have some semantic information as well. I need to understand what training method or network is suitable for this kind of a problem. I'm using Tensorflow Tflearn.


Your convolution and pooling layers may be throwing away the information you want. It sounds like your images don't have the kinds of features, like edges/shapes, which would normally be easy for a conv net. You may need to do some feature engineering / data manipulation. If most of your features lay on the border you could simply take all of those values, for a 32x32 border you'd have 124 border pixels, and make them standarized/normalized and just feed that into a dense layer. The network may easily classify given something similar.

  • $\begingroup$ How about a histogram of the images? It will reduce the vector size from 1024 to 256 and make more sense. Thereafter, I can use an ML-based classifier like SVM or maybe Random Forest. $\endgroup$ – Harsh Wardhan Feb 9 '17 at 16:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.