swiftlenss / utils.py
Lawliet18's picture
Add application file
6342ac4
import imageio
import numpy as np
import cv2
from PIL import Image
import matplotlib.pyplot as plt
import os
import argparse
import random
import torch
def seed_everything(SEED=42):
random.seed(SEED)
np.random.seed(SEED)
torch.manual_seed(SEED)
torch.cuda.manual_seed(SEED)
torch.cuda.manual_seed_all(SEED)
torch.backends.cudnn.benchmark = True
def saveImage(filename, image):
imageTMP = np.clip(image * 255.0, 0, 255).astype('uint8')
imageio.imwrite(filename, imageTMP)
def save_rgb (img, filename):
img = np.clip(img, 0., 1.)
if np.max(img) <= 1:
img = img * 255
img = img.astype(np.float32)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite(filename, img)
def load_img (filename, norm=True,):
img = np.array(Image.open(filename).convert("RGB"))
if norm:
img = img / 255.
img = img.astype(np.float32)
return img
def plot_all (images, figsize=(20,10), axis='off', names=None):
nplots = len(images)
fig, axs = plt.subplots(1,nplots, figsize=figsize, dpi=80,constrained_layout=True)
for i in range(nplots):
axs[i].imshow(images[i])
if names: axs[i].set_title(names[i])
axs[i].axis(axis)
plt.show()
def modcrop(img_in, scale=2):
# img_in: Numpy, HWC or HW
img = np.copy(img_in)
if img.ndim == 2:
H, W = img.shape
H_r, W_r = H % scale, W % scale
img = img[:H - H_r, :W - W_r]
elif img.ndim == 3:
H, W, C = img.shape
H_r, W_r = H % scale, W % scale
img = img[:H - H_r, :W - W_r, :]
else:
raise ValueError('Wrong img ndim: [{:d}].'.format(img.ndim))
return img
def dict2namespace(config):
namespace = argparse.Namespace()
for key, value in config.items():
if isinstance(value, dict):
new_value = dict2namespace(value)
else:
new_value = value
setattr(namespace, key, new_value)
return namespace
########## MODEL
def count_params(model):
trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
return trainable_params