Extract layers from pretrained VGG-Net


(Andreas Leurs) #1

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?