| from torchvision.transforms.functional import normalize | |
| import torch.nn as nn | |
| import numpy as np | |
| import os | |
| def denormalize(tensor, mean, std): | |
| mean = np.array(mean) | |
| std = np.array(std) | |
| _mean = -mean/std | |
| _std = 1/std | |
| return normalize(tensor, _mean, _std) | |
| class Denormalize(object): | |
| def __init__(self, mean, std): | |
| mean = np.array(mean) | |
| std = np.array(std) | |
| self._mean = -mean/std | |
| self._std = 1/std | |
| def __call__(self, tensor): | |
| if isinstance(tensor, np.ndarray): | |
| return (tensor - self._mean.reshape(-1,1,1)) / self._std.reshape(-1,1,1) | |
| return normalize(tensor, self._mean, self._std) | |
| def set_bn_momentum(model, momentum=0.1): | |
| for m in model.modules(): | |
| if isinstance(m, nn.BatchNorm2d): | |
| m.momentum = momentum | |
| def fix_bn(model): | |
| for m in model.modules(): | |
| if isinstance(m, nn.BatchNorm2d): | |
| m.eval() | |
| def mkdir(path): | |
| if not os.path.exists(path): | |
| os.mkdir(path) | |