Skip to content

Commit 990ac97

Browse files
committed
Trying to fix silent error when loading incompatible weights
1 parent 347e267 commit 990ac97

File tree

3 files changed

+22
-16
lines changed

3 files changed

+22
-16
lines changed

napari_cellseg3d/code_models/worker_inference.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def warn(self, warning):
119119
"""Sends a warning to main thread"""
120120
self.warn_signal.emit(warning)
121121

122-
def raise_error(self, exception, msg):
122+
def _raise_error(self, exception, msg):
123123
"""Raises an error in main thread"""
124124
logger.error(msg, exc_info=True)
125125
logger.error(exception, exc_info=True)
@@ -131,8 +131,8 @@ def raise_error(self, exception, msg):
131131

132132
self.error_signal.emit(exception, msg)
133133
self.errored.emit(exception)
134+
self.quit()
134135
yield exception
135-
# self.quit()
136136

137137
def log_parameters(self):
138138
config = self.config
@@ -334,7 +334,8 @@ def model_output_wrapper(inputs):
334334
except Exception as e:
335335
logger.exception(e)
336336
logger.debug("failed to run sliding window inference")
337-
self.raise_error(e, "Error during sliding window inference")
337+
self._raise_error(e, "Error during sliding window inference")
338+
# raise e
338339
logger.debug(f"Inference output shape: {outputs.shape}")
339340

340341
self.log("Post-processing...")
@@ -346,7 +347,8 @@ def model_output_wrapper(inputs):
346347
return out
347348
except Exception as e:
348349
logger.exception(e)
349-
self.raise_error(e, "Error during sliding window inference")
350+
self._raise_error(e, "Error during sliding window inference")
351+
# raise e
350352
# sys.stdout = old_stdout
351353
# sys.stderr = old_stderr
352354

@@ -437,7 +439,7 @@ def save_image(
437439
try:
438440
imwrite(file_path, image)
439441
except ValueError as e:
440-
self.raise_error(e, "Error during image saving")
442+
raise e
441443
filename = Path(file_path).stem
442444

443445
if from_layer:
@@ -595,7 +597,7 @@ def inference_on_layer(self, image, model, post_process_transforms):
595597
stats=stats,
596598
)
597599

598-
# @thread_worker(connect={"errored": self.raise_error})
600+
# @thread_worker(connect={"errored": self._raise_error})
599601
def inference(self):
600602
"""
601603
Requires:
@@ -659,10 +661,10 @@ def inference(self):
659661
# device=self.config.device,
660662
num_classes=self.config.model_info.num_classes,
661663
)
662-
# try:
663-
model = model.to(self.config.device)
664-
# except Exception as e:
665-
# self.raise_error(e, "Issue loading model to device")
664+
try:
665+
model = model.to(self.config.device)
666+
except RuntimeError as e:
667+
self._raise_error(e, "Issue loading model to device")
666668
# logger.debug(f"model : {model}")
667669
if model is None:
668670
raise ValueError("Model is None")
@@ -687,13 +689,14 @@ def inference(self):
687689
strict=True,
688690
)
689691
self.log(f"Weights status : {missing}")
690-
except RuntimeError as e:
691-
self.raise_error(e, "Error when loading weights")
692+
except Exception as e:
693+
self._raise_error(e, "Error when loading weights")
694+
return None
692695
self.log("Done")
693696
# except Exception as e:
694-
# self.raise_error(e, "Issue loading weights")
697+
# self._raise_error(e, "Issue loading weights")
695698
# except Exception as e:
696-
# self.raise_error(e, "Issue instantiating model")
699+
# self._raise_error(e, "Issue instantiating model")
697700

698701
# if model_name == "SegResNet":
699702
# model = model_class(
@@ -779,11 +782,11 @@ def inference(self):
779782
yield self.inference_on_layer(
780783
input_image, model, post_process_transforms
781784
)
785+
782786
model.to("cpu")
783787
# self.quit()
784788
except Exception as e:
785789
logger.exception(e)
786-
self.raise_error(e, "Inference failed")
787-
self.quit()
790+
self._raise_error(e, "Inference failed")
788791
finally:
789792
self.quit()

napari_cellseg3d/code_plugins/plugin_model_inference.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,8 @@ def on_yield(self, result: InferenceResult):
843843
if isinstance(result, Exception):
844844
self.on_error(result)
845845
# raise result
846+
if result is None:
847+
self.on_error("Worker yielded None")
846848
# viewer, progress, show_res, show_res_number, zoon, show_original
847849

848850
# check that viewer checkbox is on and that max number of displays has not been reached.

napari_cellseg3d/code_plugins/plugin_model_training.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,7 @@ def on_start(self):
903903

904904
self.remove_docked_widgets()
905905
self.display_status_report()
906+
self.log.clear()
906907
self._remove_result_layers()
907908

908909
self.log.print_and_log(f"Worker started at {utils.get_time()}")

0 commit comments

Comments
 (0)