def __init__(self, m_feat, layer_ids, layer_wgts):
     super().__init__()
     self.m_feat = m_feat
     self.loss_features = [self.m_feat[i] for i in layer_ids]
     self.hooks = callbacks.hook_outputs(self.loss_features, detach=False)
     self.wgts = layer_wgts
     self.metric_names = [
         'pixel',
     ] + [f'feat_{i}' for i in range(len(layer_ids))
          ] + [f'gram_{i}' for i in range(len(layer_ids))]
 def __init__(self, m_feat, layer_ids, layer_wgts, base_loss=F.l1_loss):
     super().__init__()
     self.m_feat = m_feat
     self.base_loss = base_loss
     self.loss_features = [self.m_feat[i] for i in layer_ids]
     self.hooks = hook_outputs(self.loss_features, detach=False)
     self.wgts = layer_wgts
     self.metric_names = [
         'pixel',
     ]
Beispiel #3
0
    def __init__(self, layer_wgts=[20,70,10]):
        super().__init__()

        self.m_feat = models.vgg16_bn(True).features.cuda().eval()
        requires_grad(self.m_feat, False)
        blocks = [i-1 for i,o in enumerate(children(self.m_feat)) if isinstance(o,nn.MaxPool2d)]
        layer_ids = blocks[2:5]
        self.loss_features = [self.m_feat[i] for i in layer_ids]
        self.hooks = hook_outputs(self.loss_features, detach=False)
        self.wgts = layer_wgts
        self.metric_names = ['pixel',] + [f'feat_{i}' for i in range(len(layer_ids))] 
        self.base_loss = F.l1_loss
 def __init__(self, model, layer_ids, layer_wgts, base_loss=F.l1_loss):
     super().__init__()
     self.model = nn.Sequential(*list(model.children())[:layer_ids[-1] + 1])
     self.loss_features = [self.model[i] for i in layer_ids]
     self.hooks = hook_outputs(self.loss_features, detach=False)
     self.wgts = layer_wgts
     self.metric_names = [
         'pixel',
     ] + [f'feat_{i}' for i in range(len(layer_ids))
          ] + [f'gram_{i}'
               for i in range(len(layer_ids))] + ['PSNR', 'SSIM', 'pEPs']
     self.base_loss = base_loss
     self.mse = nn.MSELoss()
     self.ssim = SSIM(window_size=11)
Beispiel #5
0
from fastai.callbacks import hook_outputs
from fastai.basic_data import DatasetType
from fastai.torch_core import *


# In[92]:


[children(children(learner.model[1])[0])[-2]]


# In[93]:


# register a hook to grab features
hook = hook_outputs([children(children(learner.model[1])[0])[-2]])


# In[94]:


xb, yb = data.one_batch(ds_type=DatasetType.Valid)


# In[95]:


model = learner.model.eval()
outb = model(xb.cuda())

Beispiel #6
0
 def __init__(self, model, layer_ids, weights):
     super().__init__()
     self.model = model
     self.important_layers = [self.model[i] for i in layer_ids]
     self.hooks = hook_outputs(self.important_layers, detach=False)
     self.weights = weights