I am currently trying to implement a convolutional neural network in C++, but since I have no formal education in signal processing, image classification, or anything of the sort, I am a bit confused as to the filter part of it. So I understand the general structure, but I don't understand where you get the convolution filters from. Do you just use a general set of filters that are supposed to identify things like edges. Or do you train the filters?
So say I have 64x64 images of either a face or not a face. If I understand it correctly, you pass this image into a set of convolutional filters, and pass that output into something that downsizes the new images. Then you keep doing this until the images are suitable for direct classification. Am I getting something wrong here? And how do I know which convolutional filters to use? Is there some sort of standard set of filters that detect features?
I cant say anything in depth because I don't know much about how to condition neural networks, but for edge detection, look into the Laplacian filter and the Gaussian filter.
The Gaussian filter can get rid of high freq noise to prevent too many edges from being detected, and the laplacian basically highlights where intensity changes the most (which would be edges).