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?