What's the purpose of using a max pooling layer with stride 1 on object detection

Viewed 1888

I am working with Single Shot Detector (SSD) and more specifically this implementation in keras.

As I was examining SSD300 (this also applies to SSD512 as I noticed though) I noticed that after each convolutional group a max pooling that reduces the feature map dimension follows. So far so good, but after conv group 5 (after conv5_3 layer to be precise) the max pooling applied uses stride 1. I wasn't able to verify this on the original work of SSD as it's written in caffe and I am not familiar with that one. This means that (with the added padding) there is no feature map size decrease. Also, the number of filters in the max pooling layer is the same as before and the kernel size is increased to (3,3) (from (2,2).

As far as I get it this means that this max pooling layer is not used neither to drop the dimensions, nor to reduce (or change anyway) the number of filters. So, it's uses just for applying a max pooling filter in the feature map. Does anyone knows why is this necessary? Or to make it more correct what's is the purpose of such a layer? My guess is that is could be removed altogether and I wouldn't expect much difference in performance but I haven't check it to be honest.

Any ideas of what I might be missing here?

1 Answers

Such a filter highlights the strongest features and throws away the weak ones, but does not reduce its dimensionality. Meaningfulness depends on what happens in the following layers. Theoretically, redundancies arise ...

Depending on how large the input is, a dimensional reduction can be undesirable, as you can lose any features.

Related