Added support for seg-guiding during inference
Browse files- demo/src/compute.py +8 -3
- demo/src/gui.py +12 -4
demo/src/compute.py
CHANGED
@@ -1,6 +1,11 @@
|
|
1 |
import subprocess as sp
|
2 |
|
3 |
|
4 |
-
def run_model(fixed_path, moving_path, output_path, task):
|
5 |
-
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import subprocess as sp
|
2 |
|
3 |
|
4 |
+
def run_model(fixed_path=None, moving_path=None, fixed_seg_path=None, moving_seg_path=None, output_path=None, task="B"):
|
5 |
+
if (fixed_seg_path is None) or (moving_seg_path is None):
|
6 |
+
print("The fixed or moving segmentation were not provided and are thus ignored for inference.")
|
7 |
+
sp.check_call(["ddmr", "-f", fixed_path, "-m", moving_path, \
|
8 |
+
"-o", output_path, "-a", task, "--model", "BL-NS", "--original-resolution"])
|
9 |
+
else:
|
10 |
+
sp.check_call(["ddmr", "-f", fixed_path, "-m", moving_path, "-fs", fixed_seg_path, "-ms", moving_seg_path,
|
11 |
+
"-o", output_path, "-a", task, "--model", "BL-NS", "--original-resolution"])
|
demo/src/gui.py
CHANGED
@@ -1,7 +1,4 @@
|
|
1 |
-
import os
|
2 |
-
|
3 |
import gradio as gr
|
4 |
-
import numpy as np
|
5 |
|
6 |
from .compute import run_model
|
7 |
from .utils import load_ct_to_numpy
|
@@ -52,11 +49,22 @@ class WebUI:
|
|
52 |
return [f.name for f in files]
|
53 |
|
54 |
def process(self, mesh_file_names):
|
|
|
|
|
|
|
|
|
|
|
55 |
fixed_image_path = mesh_file_names[0].name
|
56 |
moving_image_path = mesh_file_names[1].name
|
57 |
output_path = self.cwd
|
58 |
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
self.fixed_images = load_ct_to_numpy(fixed_image_path)
|
62 |
self.moving_images = load_ct_to_numpy(moving_image_path)
|
|
|
|
|
|
|
1 |
import gradio as gr
|
|
|
2 |
|
3 |
from .compute import run_model
|
4 |
from .utils import load_ct_to_numpy
|
|
|
49 |
return [f.name for f in files]
|
50 |
|
51 |
def process(self, mesh_file_names):
|
52 |
+
if not (len(mesh_file_names) in [2, 4]):
|
53 |
+
raise ValueError("Unsupported number of elements were provided as input to the DDMR CLI."
|
54 |
+
"Either provided 2 or 4 elements, where the two first being the fixed"
|
55 |
+
"and moving CT/MRIs and the two other being the binary segmentation"
|
56 |
+
"which will be used for ROI filtering in preprocessing.")
|
57 |
fixed_image_path = mesh_file_names[0].name
|
58 |
moving_image_path = mesh_file_names[1].name
|
59 |
output_path = self.cwd
|
60 |
|
61 |
+
if len(mesh_file_names) == 2:
|
62 |
+
run_model(fixed_image_path, moving_image_path, output_path, self.class_names[self.class_name])
|
63 |
+
else:
|
64 |
+
fixed_seg_path = mesh_file_names[2].name
|
65 |
+
moving_seg_path = mesh_file_names[3].name
|
66 |
+
|
67 |
+
run_model(fixed_image_path, moving_image_path, fixed_seg_path, moving_seg_path, output_path, self.class_names[self.class_name])
|
68 |
|
69 |
self.fixed_images = load_ct_to_numpy(fixed_image_path)
|
70 |
self.moving_images = load_ct_to_numpy(moving_image_path)
|