0
$\begingroup$

I am already aware of the convolution function, CNN and all. I have already implemented a few. But this question strucks my mind every time. Most of the networks I have seen, use a stack of convolution layers. That is, the current convolution layer works on the output of previous convolution layer and so on.

So, is there a specific reason for doing this? Alternatively, we can also apply each convolution layer of different kernel size individually on the input image and then use their outputs in some way to get what we want. Why not do this?

Like is there a reason behind this? Or is it like just following people blindly?

$\endgroup$
  • $\begingroup$ Actually I believe they do. See residual networks ? $\endgroup$ – seanv507 Sep 1 '19 at 6:36
0
$\begingroup$

The reason for stacking convolutional layers is that usually complex features consist of less complex features: e.g. a cat has a face, the face has ears, the ears have edges. Loosely speaking, convolutional layers close to the input layer detect less complex features and convolutional layers closer to the output layer detect more complex features, by combining the simpler features from the previous layers.

You are right in thinking that applying different kernel sizes "in parallel" is a good idea but you are wrong in assuming that researches are "following people blindly". 2014 the GoogleLenet/Inception architecture was introduced and won the ImageNet competition. It uses parallel convolutions with different kernel sizes. The idea behind that is that the network gains flexibility in processing "sparse" or "dense" information. (Imagine you want to classify dog breeds, and some images are zoomed in on the dog, while in other images the dog occupies only a small fraction of the image. This would be a use case for parallel convolutions)

$\endgroup$
  • $\begingroup$ Yeah.. I know that layers close to input layer learns simple features like edges and all, and the layers near to the output learn complex features like the dog itself. But that's just because of the kernel size (region of focus). Layers near to input focus on small parts in image while those near to output have a large region to focus on. So, if you made a parallel CNN with different kernel sizes, you would be able to achieve the same. Okay.. so now I got the part that someone tried implementing parallel CNNs. But I still don't know the reason why most of the people are using stacked CNNs. $\endgroup$ – Kadam Parikh Sep 1 '19 at 6:05
  • $\begingroup$ "But that's just because of the kernel size (region of focus)" No. As I explained, it is not only about the receptive field, but also about the recursive nature of image information: features consist of features. You will not be able to detect a cat with a one layer. GoogleLenet also uses stacked layers, but they additionally add parallel convolutions. Take a look at their architecture... $\endgroup$ – PascalIv Sep 1 '19 at 14:48

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.