import gradio as gr from model.nets import my_model import torch import cv2 import torch.utils.data as data import torchvision.transforms as transforms import PIL from PIL import Image from PIL import ImageFile import math import os import torch.nn.functional as F from rich.panel import Panel from rich.columns import Columns from rich.console import Console os.environ["CUDA_VISIBLE_DEVICES"] = "1" device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model1 = my_model(en_feature_num=48, en_inter_num=32, de_feature_num=64, de_inter_num=32, sam_number=1, ).to(device) load_path1 = "./mix.pth" model_state_dict1 = torch.load(load_path1, map_location=device) model1.load_state_dict(model_state_dict1) def default_toTensor(img): t_list = [transforms.ToTensor()] composed_transform = transforms.Compose(t_list) return composed_transform(img) def predict1(img): in_img = transforms.ToTensor()(img).to(device).unsqueeze(0) b, c, h, w = in_img.size() # pad image such that the resolution is a multiple of 32 w_pad = (math.ceil(w / 32) * 32 - w) // 2 w_odd_pad = w_pad h_pad = (math.ceil(h / 32) * 32 - h) // 2 h_odd_pad = h_pad if w % 2 == 1: w_odd_pad += 1 if h % 2 == 1: h_odd_pad += 1 in_img = img_pad(in_img, w_pad=w_pad, h_pad=h_pad, w_odd_pad=w_odd_pad, h_odd_pad=h_odd_pad) with torch.no_grad(): out_1, out_2, out_3 = model1(in_img) if h_pad != 0: out_1 = out_1[:, :, h_pad:-h_odd_pad, :] if w_pad != 0: out_1 = out_1[:, :, :, w_pad:-w_odd_pad] out_1 = out_1.squeeze(0) out_1 = PIL.Image.fromarray(torch.clamp(out_1 * 255, min=0, max=255 ).byte().permute(1, 2, 0).cpu().numpy()) return out_1 def img_pad(x, w_pad, h_pad, w_odd_pad, h_odd_pad): ''' Here the padding values are determined by the average r,g,b values across the training set in FHDMi dataset. For the evaluation on the UHDM, you can also try the commented lines where the mean values are calculated from UHDM training set, yielding similar performance. ''' x1 = F.pad(x[:, 0:1, ...], (w_pad, w_odd_pad, h_pad, h_odd_pad), value=0.3827) x2 = F.pad(x[:, 1:2, ...], (w_pad, w_odd_pad, h_pad, h_odd_pad), value=0.4141) x3 = F.pad(x[:, 2:3, ...], (w_pad, w_odd_pad, h_pad, h_odd_pad), value=0.3912) y = torch.cat([x1, x2, x3], dim=1) return y title = "image restore" description = " The model was trained to remove the moire patterns from your captured screen images! Specially, this model is capable of tackling \ images up to 4K resolution, which adapts to most of the modern mobile phones. \
\ It takes time to perform inference \
\ ", article = "Reference:\n Towards Efficient and Scale-Robust Ultra-High-Definition Image Demoiréing. CVMI Lab, Nov. 21, 2022. Accessed: Nov. 21, 2022. [Online]. Available: https://github.com/CVMI-Lab/UHDM" files = [ '0001_01.jpg', '0002_01.jpg', '0003_01.jpg', '0004_01.jpg', '0005_01.jpg', '0006_01.jpg', '0007_01.jpg', '0008_01.jpg', '0009_01.jpg', '0010_01.jpg', '0011_01.jpg', '0012_01.jpg', '0013_04.jpg', '0014_01.jpg', '0015_01.jpg', '0016_01.jpg', '0017_01.jpg', '0018_01.jpg', '0019_01.jpg', '0020_01.jpg', '0021_01.jpg', '0022_01.jpg', '0023_01.jpg', '0024_01.jpg', '0025_01.jpg', '0026_01.jpg', '0027_01.jpg', '0028_01.jpg', '0029_01.jpg', '0030_01.jpg', '0031_01.jpg', '0032_01.jpg', '0033_01.jpg', '0034_01.jpg', '0035_01.jpg', '0036_01.jpg', '0037_07.jpg', '0038_01.jpg', '0039_01.jpg', '0040_01.jpg', '0041_01.jpg', '0042_01.jpg', '0043_01.jpg', '0044_01.jpg', '0045_01.jpg', '0046_01.jpg', '0047_01.jpg', '0048_01.jpg', '0049_01.jpg', '0050_01.jpg', '0051_01.jpg', '0052_01.jpg', '0053_01.jpg', '0054_01.jpg', '0055_01.jpg', '0056_01.jpg', '0057_01.jpg', '0058_01.jpg', '0059_01.jpg', '0060_01.jpg', '0061_01.jpg', '0062_01.jpg', '0063_02.jpg', '0064_01.jpg', '0065_01.jpg', '0066_01.jpg', '0067_01.jpg', '0068_01.jpg', '0069_01.jpg', '0070_01.jpg', '0071_01.jpg', '0072_01.jpg', '0073_01.jpg', '0074_01.jpg', '0075_01.jpg', '0076_01.jpg', '0077_01.jpg', '0078_01.jpg', '0079_01.jpg', '0080_01.jpg', '0081_01.jpg', '0082_01.jpg', '0083_01.jpg', '0084_01.jpg', '0085_02.jpg', '0086_01.jpg', '0087_02.jpg', '0088_01.jpg', '0089_01.jpg', '0090_02.jpg', '0091_01.jpg', '0092_01.jpg', '0093_01.jpg', '0094_01.jpg', '0095_01.jpg', '0096_01.jpg', '0097_01.jpg', '0098_01.jpg', '0099_01.jpg', '0100_01.jpg', '0101_01.jpg', '0102_01.jpg', '0103_01.jpg', '0104_01.jpg', '0105_01.jpg', '0106_01.jpg', '0107_01.jpg', '0108_01.jpg', '0109_01.jpg', '0110_01.jpg', '0111_01.jpg', '0112_01.jpg', '0113_01.jpg', '0114_01.jpg', '0115_01.jpg', '0116_01.jpg', '0117_01.jpg', '0118_01.jpg', '0119_01.jpg', '0120_01.jpg', '0121_01.jpg', '0122_01.jpg', '0123_01.jpg', '0124_01.jpg', '0125_01.jpg', '0126_01.jpg', '0127_01.jpg', '0128_01.jpg', '0129_01.jpg', '0130_01.jpg', '0131_01.jpg', '0132_02.jpg', '0133_01.jpg', '0134_01.jpg', '0135_01.jpg', '0136_01.jpg', '0137_01.jpg', '0138_02.jpg', '0139_01.jpg', '0140_01.jpg', '0141_01.jpg', '0142_01.jpg', '0143_01.jpg', '0144_01.jpg', '0145_01.jpg', '0146_01.jpg', '0147_01.jpg', '0148_01.jpg', '0149_01.jpg', '0150_02.jpg', '0151_01.jpg', '0152_01.jpg', '0153_01.jpg', '0154_01.jpg', '0155_01.jpg', '0156_01.jpg', '0157_01.jpg', '0158_01.jpg', '0159_01.jpg', '0160_01.jpg', '0161_01.jpg', '0162_01.jpg', '0163_01.jpg', '0164_01.jpg', '0165_01.jpg', '0166_01.jpg', '0167_01.jpg', '0168_01.jpg', '0169_01.jpg', '0170_01.jpg', '0171_01.jpg', '0172_01.jpg', '0173_01.jpg', '0174_01.jpg', '0175_01.jpg', '0176_01.jpg', '0177_03.jpg', '0178_01.jpg', '0179_01.jpg', '0180_01.jpg', '0181_01.jpg', '0182_01.jpg', '0183_01.jpg', '0184_01.jpg', '0185_01.jpg', '0186_01.jpg', '0187_01.jpg', '0188_01.jpg', '0189_01.jpg', '0190_01.jpg', '0191_01.jpg', '0192_01.jpg', '0193_01.jpg', '0194_02.jpg', '0195_01.jpg', '0196_01.jpg', '0197_02.jpg', '0198_01.jpg', '0199_02.jpg', '0200_01.jpg', '0201_01.jpg', '0202_02.jpg', '0203_01.jpg', '0204_01.jpg', '0205_01.jpg', '0206_01.jpg', '0207_01.jpg', '0208_01.jpg', '0209_01.jpg', '0210_01.jpg', '0211_01.jpg', '0212_01.jpg', '0213_01.jpg', '0214_01.jpg', '0215_01.jpg', '0216_01.jpg', '0217_02.jpg', '0218_01.jpg', '0219_01.jpg', '0220_01.jpg', '0221_01.jpg', '0222_01.jpg', '0223_01.jpg', '0224_01.jpg', '0225_01.jpg', '0226_02.jpg', '0227_01.jpg', '0228_02.jpg', '0229_01.jpg', '0230_01.jpg', '0231_01.jpg', '0232_01.jpg', '0233_02.jpg', '0234_01.jpg', '0235_01.jpg', '0236_01.jpg', '0237_01.jpg', '0238_01.jpg', '0239_01.jpg', '0240_02.jpg', '0241_01.jpg', '0242_01.jpg', '0243_01.jpg', '0244_01.jpg', '0245_01.jpg', '0246_01.jpg', '0247_01.jpg', '0248_01.jpg', '0249_01.jpg', '0250_01.jpg', '0251_01.jpg', '0252_01.jpg', '0253_01.jpg', '0254_01.jpg', '0255_01.jpg', '0256_01.jpg', '0257_01.jpg', '0258_02.jpg', '0259_01.jpg', '0260_02.jpg', '0261_01.jpg', '0262_01.jpg', '0263_01.jpg', '0264_01.jpg', '0265_01.jpg', '0266_01.jpg', '0267_01.jpg', '0268_01.jpg', '0269_01.jpg', '0270_01.jpg', '0271_01.jpg', '0272_01.jpg', '0273_01.jpg', '0274_01.jpg', '0275_01.jpg', '0276_01.jpg', '0277_02.jpg', '0278_01.jpg', '0279_01.jpg', '0280_01.jpg', '0281_01.jpg', '0282_01.jpg', '0283_01.jpg', '0284_01.jpg', '0285_01.jpg', '0286_01.jpg', '0287_01.jpg', '0288_01.jpg', '0289_02.jpg', '0290_01.jpg', '0291_01.jpg', '0292_01.jpg', '0293_01.jpg', '0294_01.jpg', '0295_01.jpg', '0296_01.jpg', '0297_01.jpg', '0298_02.jpg', '0299_02.jpg', '0300_01.jpg', '0301_02.jpg', '0302_01.jpg', '0303_01.jpg', '0304_01.jpg', '0305_02.jpg', '0306_03.jpg', '0307_01.jpg', '0308_01.jpg', '0309_01.jpg', '0310_01.jpg', '0311_01.jpg', '0312_02.jpg', '0313_02.jpg', '0314_01.jpg', '0315_01.jpg', '0316_01.jpg', '0317_03.jpg', '0318_01.jpg', '0319_01.jpg', '0320_01.jpg', '0321_01.jpg', '0322_01.jpg', '0323_01.jpg', '0324_01.jpg', '0325_02.jpg', '0326_01.jpg', '0327_01.jpg', '0328_01.jpg', '0329_01.jpg', '0330_01.jpg', '0331_01.jpg', '0332_03.jpg', '0333_01.jpg', '0334_01.jpg', '0335_02.jpg', '0336_01.jpg', '0337_01.jpg', '0338_01.jpg', '0339_01.jpg', '0340_01.jpg', '0341_03.jpg', '0342_01.jpg', '0343_02.jpg', '0344_02.jpg', '0345_01.jpg', '0346_01.jpg', '0347_01.jpg', '0348_02.jpg', '0349_01.jpg', '0350_01.jpg', '0351_01.jpg', '0352_01.jpg', '0353_01.jpg', '0354_01.jpg', '0355_01.jpg', '0356_01.jpg', '0357_01.jpg', '0358_01.jpg', '0359_01.jpg', '0360_01.jpg', '0361_01.jpg', '0362_01.jpg', '0363_01.jpg', '0364_01.jpg', '0365_01.jpg', '0366_01.jpg', '0367_01.jpg', '0368_01.jpg', '0369_01.jpg', '0370_01.jpg', '0371_01.jpg', '0372_03.jpg', '0373_01.jpg', '0374_02.jpg', '0375_01.jpg', '0376_01.jpg', '0377_01.jpg', '0378_01.jpg', '0379_01.jpg', '0380_01.jpg', '0381_01.jpg', '0382_01.jpg', '0383_01.jpg', '0384_01.jpg', '0385_01.jpg', '0386_01.jpg', '0387_01.jpg', '0388_01.jpg', '0389_01.jpg', '0390_01.jpg', '0391_02.jpg', '0392_01.jpg', '0393_01.jpg', '0394_01.jpg', '0395_01.jpg', '0396_02.jpg', '0397_01.jpg', '0398_01.jpg', '0399_01.jpg', '0400_01.jpg', '0401_02.jpg', '0402_02.jpg', '0403_01.jpg', '0404_01.jpg', '0405_01.jpg', '0406_01.jpg', '0407_01.jpg', '0408_01.jpg', '0409_01.jpg', '0410_10.jpg', '0411_01.jpg', '0412_01.jpg', '0413_02.jpg', '0414_01.jpg', '0415_01.jpg', '0416_01.jpg', '0417_01.jpg', '0418_01.jpg', '0419_01.jpg', '0421_01.jpg', '0422_01.jpg', '0423_01.jpg', '0424_01.jpg', '0425_01.jpg', '0426_01.jpg', '0427_01.jpg', '0428_01.jpg', '0429_03.jpg', '0430_02.jpg', '0431_01.jpg', '0432_02.jpg', '0433_01.jpg', '0434_01.jpg', '0435_01.jpg', '0436_02.jpg', '0437_02.jpg', '0439_01.jpg', '0440_01.jpg', '0441_01.jpg', '0442_01.jpg', '0443_01.jpg', '0444_01.jpg', '0445_01.jpg', '0446_01.jpg', '0448_02.jpg', '0449_02.jpg', '0450_01.jpg', '0451_01.jpg', '0452_01.jpg', '0453_01.jpg', '0454_03.jpg', '0455_02.jpg', '0456_01.jpg', '0457_01.jpg', '0458_03.jpg', '0459_01.jpg', '0460_01.jpg', '0461_01.jpg', '0464_02.jpg', '0465_03.jpg', '0466_01.jpg', '0467_01.jpg', '0468_01.jpg', '0469_02.jpg', '0470_01.jpg', '0471_01.jpg', '0472_01.jpg', '0473_01.jpg', '0474_01.jpg', '0475_03.jpg', '0476_01.jpg', '0477_01.jpg', '0478_02.jpg', '0479_01.jpg', '0480_01.jpg', '0481_01.jpg', '0482_09.jpg', '0483_01.jpg', '0484_01.jpg', '0485_03.jpg', '0486_01.jpg', '0487_01.jpg', '0488_01.jpg', '0489_01.jpg', '0490_01.jpg', '0491_02.jpg', '0492_01.jpg', '0493_01.jpg', '0494_04.jpg', '0495_01.jpg', '0496_01.jpg', '0497_02.jpg', '0498_02.jpg', '0499_01.jpg', '0500_02.jpg', '0501_02.jpg', '0502_02.jpg', '0503_01.jpg', '0504_01.jpg', '0505_01.jpg', '0506_03.jpg', '0507_01.jpg', '0508_01.jpg', '0509_01.jpg', '0510_02.jpg', '0511_01.jpg', '0513_02.jpg', '0514_01.jpg', '0517_01.jpg', '0519_01.jpg', '0520_01.jpg', '0522_02.jpg', '0526_01.jpg', '0528_01.jpg', '0530_02.jpg', '0533_03.jpg', '0536_02.jpg', '0558_01.jpg', '0559_01.jpg', '0560_01.jpg', '0561_01.jpg', '0562_01.jpg', '0563_01.jpg', '0564_01.jpg', '0565_01.jpg', '0566_01.jpg', '0567_01.jpg', '0568_01.jpg', '0569_01.jpg', '0571_01.jpg', '0572_01.jpg', '0573_01.jpg', '0574_03.jpg', '0575_02.jpg', '0576_01.jpg', '0578_01.jpg', '0579_02.jpg', '0580_01.jpg', '0581_01.jpg', '0583_01.jpg', '0584_01.jpg', '0585_01.jpg', '0586_02.jpg', '0587_01.jpg', '0588_01.jpg', '0589_02.jpg', '0591_01.jpg', '0593_01.jpg', '0594_01.jpg', '0595_01.jpg', '0597_02.jpg', '0599_01.jpg', '0600_01.jpg', '0601_01.jpg', '0602_01.jpg', '0603_01.jpg', '0604_02.jpg', '0605_01.jpg', '0606_01.jpg', '0607_01.jpg', '0608_01.jpg', '0609_02.jpg', '0610_04.jpg', '0611_01.jpg', '0612_01.jpg', '0613_01.jpg', '0614_05.jpg', '0615_01.jpg', '0616_01.jpg', '0617_03.jpg', '0618_01.jpg', '0619_01.jpg', '0620_01.jpg', '0621_02.jpg', '0622_02.jpg', '0623_01.jpg', '0624_02.jpg', '0627_05.jpg', '0628_03.jpg', '0629_01.jpg', '0630_01.jpg', '0633_01.jpg', '0634_01.jpg', '0671_10.jpg' ] files = [os.path.join("n000129", k) for k in files] Console().print(Columns ([Panel.fit(f"{k}", style="red on black") for k in files])) iface1 = gr.Interface(fn=predict1, inputs=gr.inputs.Image(type="pil"), outputs=gr.inputs.Image(type="pil"), examples=files, title = title, description = description, article = article ) iface1.queue(concurrency_count=3) iface1.launch()