I am reading an object detection paper called YOLO (You only look once) and I have some questions about the architecture.

In the CNN network, the author described that 1x1 convolution reduce feature space from preceding layers. When I see the diagram below, I am confused that he stacked 3x3x256 convolution layer follow by 1x1x256.

Isn't the number of features (256 to 256) the same before and after? How is this supposed to reduce the feature space?

enter image description here

  • 1
    $\begingroup$ Possible cross-duplicate: What does 1x1 convolution mean in a neural network? $\endgroup$ – E_GAT4 Aug 30 '17 at 16:09
  • $\begingroup$ Yes, I have read that link before, but they don't really answer my question, in that why is the convolution done in the same number of filters as that of the input? $\endgroup$ – goh Aug 31 '17 at 0:04

As referenced in @E_net4 's comment, 1x1 convolutions are equivalent to fully connected layers that allow for feature expansion or contraction based on the number of filters used.

Looking at the architecture diagram in the picture it looks like the 1x1 convolutions are in fact reducing the feature space by cutting the number of filters in half. I.e. looking at the the 3rd block in the image, the input is 56x56x256 but the first convolution is a 1x1x128 so assuming stride 1 the output would then be 56x56x128.

  • $\begingroup$ what about connecting the 3x3x256 with 1x1x256? $\endgroup$ – goh Sep 1 '17 at 3:44
  • $\begingroup$ That connection never happens. Do you mean going from 1x1x128 to 3x3x256? Regardless, increasing, decreasing, or keeping the channels the same between convolutions is all done the same way. Increasing the number of channels is just done by adding more convolved weights, etc. $\endgroup$ – bnorm Sep 1 '17 at 5:57
  • $\begingroup$ I mean, the 3rd block in the image, it says, 1x1x128, 3x3x256, 1x1x256. I assume it says connect the result of the 3x3x256 layer to a 1x1x256 layer. I mean why? 256==256, so It doesn't do any reduction right? $\endgroup$ – goh Sep 1 '17 at 6:00
  • $\begingroup$ Ah, I missed that. You're correct, it does not do any reduction (again assuming the stride is 1). The point is simply just to add more information to be learned. Consider the simple fully connected multi layer perceptron with two hidden layers. The point of having the 2nd hidden layer, even though its dimensionality may be identical to the 1st, is to have more weights to learn more complicated patterns. $\endgroup$ – bnorm Sep 1 '17 at 6:04

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.