ihabooe commited on
Commit
b496bfb
·
verified ·
1 Parent(s): 3ec4f0f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -23
app.py CHANGED
@@ -1,44 +1,42 @@
1
  import gradio as gr
2
  import torch
3
  import numpy as np
4
- from torchvision import transforms
5
  from PIL import Image
6
- from torchvision.models.segmentation import deeplabv3_resnet101
 
 
 
 
7
 
8
- # Load Pretrained Model
9
- model = deeplabv3_resnet101(pretrained=True)
10
- model.eval()
 
11
 
12
  def remove_background(image):
13
- # Preprocess image
14
  transform = transforms.Compose([
15
- transforms.ToTensor(),
16
- transforms.Resize((512, 512)),
17
  ])
18
 
19
  input_tensor = transform(image).unsqueeze(0)
 
 
 
 
20
 
21
- # Perform inference
22
- with torch.no_grad():
23
- output = model(input_tensor)["out"][0]
24
-
25
- # Create mask (Class 15 = Person)
26
- mask = output.argmax(0).numpy()
27
- mask = np.where(mask == 15, 255, 0).astype(np.uint8)
28
-
29
- # Apply mask
30
- image = np.array(image)
31
- transparent_image = np.dstack((image, mask))
32
 
33
- return Image.fromarray(transparent_image)
34
 
35
- # Create Gradio Interface
36
  iface = gr.Interface(
37
  fn=remove_background,
38
  inputs=gr.Image(type="pil"),
39
  outputs=gr.Image(type="pil"),
40
- title="AI Background Remover",
41
- description="Upload an image and remove its background using AI."
42
  )
43
 
44
  iface.launch()
 
1
  import gradio as gr
2
  import torch
3
  import numpy as np
4
+ import requests
5
  from PIL import Image
6
+ from torchvision import transforms
7
+
8
+ # Load the U²-Net model
9
+ model_url = "https://huggingface.co/zhanghang1989/ResNet101/resolve/main/u2net.pth"
10
+ model_path = "u2net.pth"
11
 
12
+ # Download model if not present
13
+ if not os.path.exists(model_path):
14
+ with open(model_path, "wb") as f:
15
+ f.write(requests.get(model_url).content)
16
 
17
  def remove_background(image):
 
18
  transform = transforms.Compose([
19
+ transforms.Resize((320, 320)), # Smaller size for speed
20
+ transforms.ToTensor()
21
  ])
22
 
23
  input_tensor = transform(image).unsqueeze(0)
24
+
25
+ # Process with model (fake example, replace with actual U²-Net processing)
26
+ mask = np.random.randint(0, 256, (320, 320), dtype=np.uint8)
27
+ mask = np.stack([mask] * 3, axis=-1)
28
 
29
+ image = np.array(image.resize((320, 320)))
30
+ result = np.dstack((image, mask[:, :, 0])) # Add transparency
 
 
 
 
 
 
 
 
 
31
 
32
+ return Image.fromarray(result)
33
 
34
+ # Gradio Interface
35
  iface = gr.Interface(
36
  fn=remove_background,
37
  inputs=gr.Image(type="pil"),
38
  outputs=gr.Image(type="pil"),
39
+ title="Fast AI Background Remover"
 
40
  )
41
 
42
  iface.launch()