I found several threads on this topic but the most let me think: “There has to be an easier way to achieve it”.
So what do I want to do?
I load a pretrained VGG-16-Model and send my imagedata through the model.
Now I want to build hypercolums from different layers of the model. Like in this paper:
But how can I achieve it?
My Net looks like this:
class Net(nn.Module):
def __init__(self, vgg):
super(Net, self).__init__()
self.vgg = vgg
self.classifier = nn.Sequential(
nn.Linear(153600, 4096), # I know this classifiers are not correct. But first I want to get the hypercolums.
nn.ReLU(True),
nn.Linear(4096, 4096),
nn.ReLU(True),
nn.Linear(4096, 3),
)
def forward(self, x):
x = self.features(x)
# Here I have to get the pixel information of several layers like
for layers in self.layers:
if self.layer in [5,8,15,22]:
#make a tensor to save all pixel information in and resize to input image size
# add tensor to tensor of previous layers.
# and then the resulting tensor should be send to the classifiers
x = self.classifier(x)
Is there an easy way to get the hypercolums?