【发布时间】:2021-11-30 23:16:45
【问题描述】:
在计算VGG Perceptual loss的时候,虽然没见过,但是感觉可以把GT图像的VGG特征的计算封装在torch.no_grad()里面。
所以基本上我觉得以下就可以了,
with torch.no_grad():
gt_vgg_features = self.vgg_features(gt)
nw_op_vgg_features = self.vgg_features(nw_op)
# Now compute L1 loss
或者应该使用,
gt_vgg_features = self.vgg_features(gt)
nw_op_vgg_features = self.vgg_features(nw_op)
在这两种方法中,VGG 参数的requires_grad 设置为False,VGG 进入eval() 模式。
第一种方法将节省大量 GPU 资源,并且感觉应该在数值上等于第二种方法,因为不需要通过 GT 图像进行反向传播。但在大多数实现中,我发现第二种方法用于计算 VGG 感知损失。
那么,在 PyTorch 中实现 VGG 感知损失我们应该采用哪个选项?
【问题讨论】:
标签: python deep-learning pytorch conv-neural-network vgg-net