Then why don’t you just save net.features?
I’m not sure if you have to wrap it in an own module, but you could do something like this:
class VGGFeatures(nn.Module):
    def __init__(self, vgg_net: VGG):
        super().__init__()
        self.vgg_features = vgg_net.features
        # maybe add your segmentation part

    @classmethod
    def from_state_dict(cls, state_dict_path, vgg_type='VGG11'):
        _net = VGG(vgg_type)
        _current_instance = cls(_net)
        _current_instance.load_state_dict(torch.load(state_dict_path))
        return _current_instance
        

    def forward(x):
        features = self.vgg_features(x)
        # maybe forward through your segmentation part
        return features

net = VGG('VGG11')
vgg_features = VGGFeatures(net)

# save model
torch.save(vgg_features.state_dict(), SAVE_PATH)

# recover model
recovered = VGGFeatures.from_state_dict(SAVE_PATH, 'VGG11')