In the blog post Building powerful image classification models using very little data, bottleneck features are mentioned. What are the bottleneck features? Do they change with the architecture that is used? Are they the final output of convolutional layers before the fully-connected layer? Why are they called so?
In the blog post Building powerful image classification models using very little data, bottleneck features are mentioned. What are the bottleneck features?
It's clearly written in the link you gave the "bottleneck features" from the VGG16 model: the last activation maps before the fully-connected layers.
Do they change with the architecture that is used?
Sure. The author most likely used a pre-trained model (trained on a large data and now used only as a feature extractor)
Are they the final output of convolutional layers before the fully-connected layer?
Why are they called so?
Given the input size to VGG, the feature maps of HxW dimensions are getting twice smaller after every max-pool operation. HxW is the smallest on the last convolutional layer.
First, we need to talk about transfer learning. Imagine you trained a neuronal network over a dataset of images to detect cats, you can use part of the training you have done to work over another detecting something else. That's known as transfer learning.
To do transfer learning, you will remove the last fully connected layer from the model and plug in your layers there. The "truncated" model output is going to be the features that will fill your "model". Those are the bottleneck features.
VGG16 is a pretrain-model over ImageNet catalog that has very good accuracy. In the post you shared, is using that model as a base to detect cat and dogs with a higher accuracy.
Bottleneck features depends on the model. In this case, we are using VGG16. There are others pre-trained models like VGG19, ResNet-50
It's like you are cutting a model and adding your own layers. Mainly, the output layer to decide what you want to detect, the final output.