Sophie98 commited on
Commit
79c6687
β€’
1 Parent(s): 91c0967

documentation

Browse files
Files changed (3) hide show
  1. app.py +5 -6
  2. segmentation.py +20 -6
  3. styleTransfer.py +0 -1
app.py CHANGED
@@ -3,7 +3,6 @@ import gradio as gr
3
  from segmentation import get_mask,replace_sofa
4
  from styleTransfer import resize_sofa,resize_style,create_styledSofa
5
  from PIL import Image
6
- import cv2
7
 
8
  def style_sofa(input_img: np.ndarray, style_img: np.ndarray):
9
  """
@@ -21,11 +20,9 @@ def style_sofa(input_img: np.ndarray, style_img: np.ndarray):
21
  resized_img,box = resize_sofa(input_img)
22
  resized_style = resize_style(style_img)
23
  # generate mask for image
24
- print('starting mask')
25
  mask = get_mask(resized_img)
26
- print('got mask')
27
  styled_sofa = create_styledSofa(resized_img,resized_style)
28
- print('resizing')
29
  new_sofa = replace_sofa(resized_img,mask,styled_sofa)
30
  new_sofa = Image.fromarray(new_sofa).crop(box)
31
  return new_sofa
@@ -44,8 +41,10 @@ demo = gr.Interface(
44
  ['sofa_example1.jpg','style_example4.jpg'],
45
  ['sofa_example1.jpg','style_example5.jpg'],
46
  ],
47
- title="Style your sofa",
48
- description="πŸ›‹ Customize your sofa to your wildest dreams! πŸ›‹",
 
 
49
  )
50
 
51
  if __name__ == "__main__":
 
3
  from segmentation import get_mask,replace_sofa
4
  from styleTransfer import resize_sofa,resize_style,create_styledSofa
5
  from PIL import Image
 
6
 
7
  def style_sofa(input_img: np.ndarray, style_img: np.ndarray):
8
  """
 
20
  resized_img,box = resize_sofa(input_img)
21
  resized_style = resize_style(style_img)
22
  # generate mask for image
 
23
  mask = get_mask(resized_img)
 
24
  styled_sofa = create_styledSofa(resized_img,resized_style)
25
+ # postprocess the final image
26
  new_sofa = replace_sofa(resized_img,mask,styled_sofa)
27
  new_sofa = Image.fromarray(new_sofa).crop(box)
28
  return new_sofa
 
41
  ['sofa_example1.jpg','style_example4.jpg'],
42
  ['sofa_example1.jpg','style_example5.jpg'],
43
  ],
44
+ title="πŸ›‹ Style your sofa πŸ›‹ ",
45
+ description="Customize your sofa to your wildest dreams!\
46
+ \nProvide a picture of your sofa and a desired pattern\
47
+ \n or choose one of the examples below",
48
  )
49
 
50
  if __name__ == "__main__":
segmentation.py CHANGED
@@ -8,6 +8,15 @@ from PIL import Image
8
  import segmentation_models as sm
9
 
10
  def get_mask(image):
 
 
 
 
 
 
 
 
 
11
  model_path = "model_checkpoint.h5"
12
  CLASSES = ['sofa']
13
  BACKBONE = 'resnet50'
@@ -31,14 +40,11 @@ def get_mask(image):
31
  # total_loss = sm.losses.binary_focal_dice_loss # or sm.losses.categorical_focal_dice_loss
32
  metrics = [sm.metrics.IOUScore(threshold=0.5), sm.metrics.FScore(threshold=0.5)]
33
  # compile keras model with defined optimozer, loss and metrics
34
- print('compiling')
35
  model.compile(optim, total_loss, metrics)
36
 
37
- print('loading model weights')
38
  #load model
39
  model.load_weights(model_path)
40
 
41
- print('processing image')
42
  test_img = np.array(image)#cv2.imread(path, cv2.IMREAD_COLOR)
43
  test_img = cv2.resize(test_img, (640, 640))
44
  test_img = cv2.cvtColor(test_img, cv2.COLOR_RGB2BGR)
@@ -51,9 +57,17 @@ def get_mask(image):
51
  return np.array(mask)
52
 
53
  def replace_sofa(image,mask,styled_sofa):
54
- # print(mask.shape)
55
- # mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
56
- # print(mask.shape)
 
 
 
 
 
 
 
 
57
  image = np.array(image)
58
  #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
59
  styled_sofa = cv2.cvtColor(styled_sofa, cv2.COLOR_BGR2RGB)
 
8
  import segmentation_models as sm
9
 
10
  def get_mask(image):
11
+ """
12
+ This function generates a mask of the image that highlights all the sofas in the image.
13
+ This uses a pre-trained Unet model with a resnet50 backbone.
14
+ Remark: The model was trained on 640by640 images and it is therefore best that the image has the same size.
15
+ Parameters:
16
+ image = original image
17
+ Return:
18
+ mask = corresponding maks of the image
19
+ """
20
  model_path = "model_checkpoint.h5"
21
  CLASSES = ['sofa']
22
  BACKBONE = 'resnet50'
 
40
  # total_loss = sm.losses.binary_focal_dice_loss # or sm.losses.categorical_focal_dice_loss
41
  metrics = [sm.metrics.IOUScore(threshold=0.5), sm.metrics.FScore(threshold=0.5)]
42
  # compile keras model with defined optimozer, loss and metrics
 
43
  model.compile(optim, total_loss, metrics)
44
 
 
45
  #load model
46
  model.load_weights(model_path)
47
 
 
48
  test_img = np.array(image)#cv2.imread(path, cv2.IMREAD_COLOR)
49
  test_img = cv2.resize(test_img, (640, 640))
50
  test_img = cv2.cvtColor(test_img, cv2.COLOR_RGB2BGR)
 
57
  return np.array(mask)
58
 
59
  def replace_sofa(image,mask,styled_sofa):
60
+ """
61
+ This function replaces the original sofa in the image by the new styled sofa according
62
+ to the mask.
63
+ Remark: All images should have the same size.
64
+ Input:
65
+ image = Original image
66
+ mask = Generated masks highlighting the sofas in the image
67
+ styled_sofa = Styled image
68
+ Return:
69
+ new_image = Image containing the styled sofa
70
+ """
71
  image = np.array(image)
72
  #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
73
  styled_sofa = cv2.cvtColor(styled_sofa, cv2.COLOR_BGR2RGB)
styleTransfer.py CHANGED
@@ -1,4 +1,3 @@
1
- import torch
2
  from PIL import Image
3
  import numpy as np
4
  import os
 
 
1
  from PIL import Image
2
  import numpy as np
3
  import os