Spaces:
Running
Running
import gradio as gr | |
import torch | |
import kornia as K | |
from kornia.geometry.transform import resize | |
import cv2 | |
import numpy as np | |
from torchvision import transforms | |
from torchvision.utils import make_grid | |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
def read_image(f_name): | |
image_to_tensor = transforms.ToTensor() | |
img = image_to_tensor(cv2.imread(f_name, cv2.IMREAD_COLOR)) | |
resized_image = resize(img,(50, 50)) | |
return resized_image | |
def predict(images, eps): | |
eps = float(eps) | |
f_names = [img.name for img in images] | |
images = [read_image(f) for f in f_names] | |
images = torch.stack(images, dim = 0).to(device) | |
zca = K.enhance.ZCAWhitening(eps=eps, compute_inv=True) | |
zca.fit(images) | |
zca_images = zca(images) | |
grid_zca = make_grid(zca_images, nrow=3, normalize=True).cpu().numpy() | |
return np.transpose(grid_zca,[1,2,0]) | |
title = 'ZCA Whitening with Kornia!' | |
description = '''[ZCA Whitening](https://paperswithcode.com/method/zca-whitening) is an image preprocessing method that leads to a transformation of data such that the covariance matrix is the identity matrix, leading to decorrelated features: | |
*Note that you can upload only image files, e.g. jpg, png etc and there sjould be atleast 2 images!* | |
Learn more about [ZCA Whitening and Kornia](https://kornia.readthedocs.io/en/latest/_modules/kornia/enhance/zca.html)''' | |
iface = gr.Interface(fn=predict, | |
inputs=['files', gr.Slider(0.01, 1)], | |
outputs=gr.Image(), | |
allow_flagging="never", | |
title=title, | |
description=description, | |
examples=[[ | |
[ | |
'irises.jpg', | |
'roses.jpg', | |
'sunflower.jpg', | |
'violets.jpg', | |
'chamomile.jpg', | |
'tulips.jpg', | |
'Alstroemeria.jpg', | |
'Carnation.jpg', | |
'Orchid.jpg', | |
'Peony.jpg' | |
], 0.01]] | |
) | |
if __name__ == "__main__": | |
iface.launch(show_error=True) |