dev1461 commited on
Commit
8b91a17
·
verified ·
1 Parent(s): a9628b4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -19
app.py CHANGED
@@ -58,16 +58,15 @@ model.load_state_dict(checkpoint['generator'])
58
  model.eval()
59
 
60
  # ---------------------------
61
- # TRANSFORM
62
  # ---------------------------
63
 
64
  transform = transforms.Compose([
65
- transforms.Resize((128, 128)),
66
  transforms.ToTensor()
67
  ])
68
 
69
  # ---------------------------
70
- # INFERENCE FUNCTION
71
  # ---------------------------
72
 
73
  def enhance_image(input_image):
@@ -79,38 +78,50 @@ def enhance_image(input_image):
79
  with torch.no_grad():
80
  output = model(input_tensor)
81
 
82
- # Model output
83
- output_img = output.squeeze().permute(1,2,0).cpu().numpy()
84
  output_img = (output_img * 255).astype(np.uint8)
85
 
86
- # Resize back
87
- output_img = Image.fromarray(output_img)
88
- output_img = output_img.resize(original_size, Image.BICUBIC)
89
  output_img = np.array(output_img)
90
 
91
- # 🔥 ORIGINAL IMAGE (for blending)
92
  original_np = np.array(img)
93
 
94
- # 🔥 STEP 1: LIGHT SMOOTHING (remove artifacts)
95
- output_img = cv2.GaussianBlur(output_img, (3,3), 0)
 
96
 
97
- # 🔥 STEP 2: BLEND WITH ORIGINAL (VERY IMPORTANT)
98
- final_img = cv2.addWeighted(original_np, 0.6, output_img, 0.4, 0)
 
99
 
100
- # 🔥 STEP 3: VERY LIGHT SHARPEN (safe)
101
- sharpen_kernel = np.array([[0,-1,0],
102
- [-1,5,-1],
103
- [0,-1,0]])
104
 
105
- final_img = cv2.filter2D(final_img, -1, sharpen_kernel)
 
106
 
107
- final_img = np.clip(final_img, 0, 255)
 
 
 
 
 
 
 
 
 
 
 
108
 
109
  # Save for download
110
  temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".png")
111
  Image.fromarray(final_img).save(temp_file.name)
112
 
113
  return final_img, temp_file.name
 
114
  # ---------------------------
115
  # GRADIO UI
116
  # ---------------------------
 
58
  model.eval()
59
 
60
  # ---------------------------
61
+ # TRANSFORM (FIXED)
62
  # ---------------------------
63
 
64
  transform = transforms.Compose([
 
65
  transforms.ToTensor()
66
  ])
67
 
68
  # ---------------------------
69
+ # INFERENCE FUNCTION (FIXED)
70
  # ---------------------------
71
 
72
  def enhance_image(input_image):
 
78
  with torch.no_grad():
79
  output = model(input_tensor)
80
 
81
+ # Convert output tensor → image
82
+ output_img = output.squeeze().permute(1, 2, 0).cpu().numpy()
83
  output_img = (output_img * 255).astype(np.uint8)
84
 
85
+ # Resize to original size
86
+ output_img = Image.fromarray(output_img).resize(original_size, Image.BICUBIC)
 
87
  output_img = np.array(output_img)
88
 
89
+ # Original image
90
  original_np = np.array(img)
91
 
92
+ # ---------------------------
93
+ # FIXED POST-PROCESSING
94
+ # ---------------------------
95
 
96
+ # Convert RGB BGR (IMPORTANT FIX)
97
+ original_bgr = cv2.cvtColor(original_np, cv2.COLOR_RGB2BGR)
98
+ output_bgr = cv2.cvtColor(output_img, cv2.COLOR_RGB2BGR)
99
 
100
+ # Light smoothing
101
+ output_bgr = cv2.GaussianBlur(output_bgr, (3, 3), 0)
 
 
102
 
103
+ # Blend (more natural)
104
+ blended = cv2.addWeighted(original_bgr, 0.7, output_bgr, 0.3, 0)
105
 
106
+ # Mild sharpening (safe)
107
+ kernel = np.array([
108
+ [0, -1, 0],
109
+ [-1, 4, -1],
110
+ [0, -1, 0]
111
+ ])
112
+ sharpened = cv2.filter2D(blended, -1, kernel)
113
+
114
+ # Convert back BGR → RGB
115
+ final_img = cv2.cvtColor(sharpened, cv2.COLOR_BGR2RGB)
116
+
117
+ final_img = np.clip(final_img, 0, 255).astype(np.uint8)
118
 
119
  # Save for download
120
  temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".png")
121
  Image.fromarray(final_img).save(temp_file.name)
122
 
123
  return final_img, temp_file.name
124
+
125
  # ---------------------------
126
  # GRADIO UI
127
  # ---------------------------