Andyx commited on
Commit
39188ed
·
1 Parent(s): 96f646b
Files changed (2) hide show
  1. app.py +29 -46
  2. uhdm_checkpoint.pth +0 -3
app.py CHANGED
@@ -24,16 +24,6 @@ load_path1 = "./mix.pth"
24
  model_state_dict1 = torch.load(load_path1, map_location=device)
25
  model1.load_state_dict(model_state_dict1)
26
 
27
- model2 = my_model(en_feature_num=48,
28
- en_inter_num=32,
29
- de_feature_num=64,
30
- de_inter_num=32,
31
- sam_number=1,
32
- ).to(device)
33
-
34
- load_path2 = "./uhdm_checkpoint.pth"
35
- model_state_dict2 = torch.load(load_path2, map_location=device)
36
- model2.load_state_dict(model_state_dict2)
37
 
38
  def default_toTensor(img):
39
  t_list = [transforms.ToTensor()]
@@ -59,25 +49,6 @@ def predict1(img):
59
 
60
  return out_1
61
 
62
- def predict2(img):
63
- in_img = transforms.ToTensor()(img).to(device).unsqueeze(0)
64
- b, c, h, w = in_img.size()
65
- # pad image such that the resolution is a multiple of 32
66
- w_pad = (math.ceil(w / 32) * 32 - w) // 2
67
- h_pad = (math.ceil(h / 32) * 32 - h) // 2
68
- in_img = img_pad(in_img, w_r=w_pad, h_r=h_pad)
69
- with torch.no_grad():
70
- out_1, out_2, out_3 = model2(in_img)
71
- if h_pad != 0:
72
- out_1 = out_1[:, :, h_pad:-h_pad, :]
73
- if w_pad != 0:
74
- out_1 = out_1[:, :, :, w_pad:-w_pad]
75
- out_1 = out_1.squeeze(0)
76
- out_1 = PIL.Image.fromarray(torch.clamp(out_1 * 255, min=0, max=255
77
- ).byte().permute(1, 2, 0).cpu().numpy())
78
-
79
- return out_1
80
-
81
  def img_pad(x, h_r=0, w_r=0):
82
  '''
83
  Here the padding values are determined by the average r,g,b values across the training set
@@ -93,21 +64,33 @@ def img_pad(x, h_r=0, w_r=0):
93
  return y
94
 
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  iface1 = gr.Interface(fn=predict1,
97
- inputs=gr.inputs.Image(type="pil"),
98
- outputs=gr.inputs.Image(type="pil"))
99
-
100
- iface2 = gr.Interface(fn=predict2,
101
- inputs=gr.inputs.Image(type="pil"),
102
- outputs=gr.inputs.Image(type="pil"))
103
-
104
- iface_all = gr.mix.Parallel(
105
- iface1, iface2,
106
- examples=['001.jpg',
107
- '002.jpg',
108
- '003.jpg',
109
- '004.jpg',
110
- '005.jpg']
111
- )
112
-
113
- iface_all.launch()
 
24
  model_state_dict1 = torch.load(load_path1, map_location=device)
25
  model1.load_state_dict(model_state_dict1)
26
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  def default_toTensor(img):
29
  t_list = [transforms.ToTensor()]
 
49
 
50
  return out_1
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  def img_pad(x, h_r=0, w_r=0):
53
  '''
54
  Here the padding values are determined by the average r,g,b values across the training set
 
64
  return y
65
 
66
 
67
+ title = "Clean Your Moire Images!"
68
+ description = """
69
+
70
+ The model was trained to remove the moire patterns from your captured screen images! Specially, this model is capable of tackling
71
+ images up to 4K resolution, which adapts to most of the modern mobile phones.
72
+ (Note: It may cost 80s per 4K image (e.g., iPhone's resolution: 4032x3024) since this demo runs on the CPU. The model can run
73
+ on a NVIDIA 3090 GPU 17ms per standard 4K image)
74
+
75
+
76
+ """
77
+
78
+ article = "Check out the [ECCV 2022 paper](https://arxiv.org/abs/2207.09935) and the \
79
+ [official training code](https://github.com/CVMI-Lab/UHDM) which the demo is based on."
80
+
81
+
82
  iface1 = gr.Interface(fn=predict1,
83
+ inputs=gr.inputs.Image(type="pil"),
84
+ outputs=gr.inputs.Image(type="pil"),
85
+ examples=['001.jpg',
86
+ '002.jpg',
87
+ '003.jpg',
88
+ '004.jpg',
89
+ '005.jpg'],
90
+ title = title,
91
+ description = description,
92
+ article = article
93
+ )
94
+
95
+
96
+ iface1.launch()
 
 
 
uhdm_checkpoint.pth DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:254235cd25f90a3f1785885385dc6cb3f2178e053291ab53d1943bd7c2f7de65
3
- size 23895301