Update app
Browse files
app.py
CHANGED
|
@@ -7,6 +7,8 @@ from utils.utils import scipy_to_torch_sparse, genMatrixesLungsHeart
|
|
| 7 |
import scipy.sparse as sp
|
| 8 |
import torch
|
| 9 |
|
|
|
|
|
|
|
| 10 |
|
| 11 |
def getDenseMask(landmarks):
|
| 12 |
RL = landmarks[0:44]
|
|
@@ -35,7 +37,18 @@ def drawOnTop(img, landmarks):
|
|
| 35 |
image[:,:,2] = img - 0.1 * (output == 1).astype('float') - 0.2 * (output == 2).astype('float')
|
| 36 |
|
| 37 |
image = np.clip(image, 0, 1)
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
return image
|
| 40 |
|
| 41 |
|
|
@@ -106,13 +119,15 @@ def preprocess(input_img):
|
|
| 106 |
|
| 107 |
|
| 108 |
def segment(input_img):
|
| 109 |
-
|
| 110 |
|
| 111 |
-
|
|
|
|
| 112 |
|
| 113 |
-
|
| 114 |
-
hybrid = loadModel(device)
|
| 115 |
|
|
|
|
|
|
|
| 116 |
data = torch.from_numpy(img).unsqueeze(0).unsqueeze(0).to(device).float()
|
| 117 |
|
| 118 |
with torch.no_grad():
|
|
@@ -121,6 +136,6 @@ def segment(input_img):
|
|
| 121 |
return drawOnTop(img, output)
|
| 122 |
|
| 123 |
|
| 124 |
-
if __name__ == "__main__":
|
| 125 |
demo = gr.Interface(segment, gr.Image(type="filepath"), "image")
|
| 126 |
demo.launch()
|
|
|
|
| 7 |
import scipy.sparse as sp
|
| 8 |
import torch
|
| 9 |
|
| 10 |
+
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
|
| 11 |
+
hybrid = None
|
| 12 |
|
| 13 |
def getDenseMask(landmarks):
|
| 14 |
RL = landmarks[0:44]
|
|
|
|
| 37 |
image[:,:,2] = img - 0.1 * (output == 1).astype('float') - 0.2 * (output == 2).astype('float')
|
| 38 |
|
| 39 |
image = np.clip(image, 0, 1)
|
| 40 |
+
|
| 41 |
+
RL, LL, H = landmarks[0:44], landmarks[44:94], landmarks[94:]
|
| 42 |
+
|
| 43 |
+
# Draw the landmarks as dots
|
| 44 |
+
|
| 45 |
+
for l in RL:
|
| 46 |
+
image = cv2.circle(image, (int(l[0]), int(l[1])), 1, (1, 1, 0), -1)
|
| 47 |
+
for l in LL:
|
| 48 |
+
image = cv2.circle(image, (int(l[0]), int(l[1])), 1, (1, 1, 0), -1)
|
| 49 |
+
for l in H:
|
| 50 |
+
image = cv2.circle(image, (int(l[0]), int(l[1])), 1, (0, 1, 1), -1)
|
| 51 |
+
|
| 52 |
return image
|
| 53 |
|
| 54 |
|
|
|
|
| 119 |
|
| 120 |
|
| 121 |
def segment(input_img):
|
| 122 |
+
global hybrid
|
| 123 |
|
| 124 |
+
if hybrid is None:
|
| 125 |
+
hybrid = loadModel()
|
| 126 |
|
| 127 |
+
input_img = cv2.imread(input_img, 0) / 255.0
|
|
|
|
| 128 |
|
| 129 |
+
img, (h, w, padding) = preprocess(input_img)
|
| 130 |
+
|
| 131 |
data = torch.from_numpy(img).unsqueeze(0).unsqueeze(0).to(device).float()
|
| 132 |
|
| 133 |
with torch.no_grad():
|
|
|
|
| 136 |
return drawOnTop(img, output)
|
| 137 |
|
| 138 |
|
| 139 |
+
if __name__ == "__main__":
|
| 140 |
demo = gr.Interface(segment, gr.Image(type="filepath"), "image")
|
| 141 |
demo.launch()
|