# Deep learning performance on classifying simple geometric figures

I'm trying to find papers or just performance data on classifying simple geometric shapes, e.g. the first six convex regular polygons. The input data is computer graphics generated, producing high contrast, clean images of convex regular polygons in various scales and orientations. One polygon per image. There is no limit, other than reasonable CPU time, on number of training images used. Testing is also done on randomly generated CG images.

Regular polygons are just an example. You can add circles, ellipses, non-regular polygons, etc. Basically any simple geometric shape, which a competent elementary school student can easily classify with 100% accuracy.

A CNN network should easily achieve close to 100% accuracy on this task. Few aspects make this task easier :

1. Clean High-contrast images generated from program
2. Only 1 shape per image
3. Given few images of a shape, libraries can generate thousands of training samples automatically with various transformations like rotations / scaling / flip
4. Within few layers network should identify edge-detection patterns for vertices and learn the 3 vertices = triangle and so on

For example, this code can generate training examples based on few input images :

https://keras.io/preprocessing/image/

datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)


Few articles :

https://www.researchgate.net/publication/312328148_Binary_shape_classification_using_Convolutional_Neural_Networks

https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491

For this task, first you need extract some feautures from your graphical objects, and then run a learning algorithm on that feature. There are a lot pf works on this task. You can find some general view of these works here (and some papers at end of the page).

Also, this article (Machine Learning for High-Speed Corner Detection) could be useful for your specific task (as you have a concern in performance).