CNN use convolutions to perform many tasks. In some architecture, the first layer(s) are basic filters such as Gabor's. Many CNN work by stacking a number of convolution layers to build detectors which are more and more complex.

Now, it's clear that filters are typically learned and that, at a given depth, usually fully connected layers are used to "match" patterns that are coming out of convolutions with classes/probabilities/logits that are required as network output.

But I am wondering, and I don't know anything on this topic so I am sorry if I don't provide any resource, is it possible (and how) to manually craft convolution layers so that one can detect some specific patterns without needing to train a neural network?

For example, given the task to identify triangles (or even lines) in an image, can we manually assemble a non-machine-learning algorithm that uses stacked convolutions to detect and describe the triangles in the image (e.g. by finding it's corners)?

For example, by synthesizing filters that are known to have a certain property holding for a certain family of patterns and therefore we can infer that the result will be of some kind.


Your Answer

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

Browse other questions tagged or ask your own question.