diff --git a/src/twomartens/masterthesis/cli.py b/src/twomartens/masterthesis/cli.py index 72b3c3b..a6b5990 100644 --- a/src/twomartens/masterthesis/cli.py +++ b/src/twomartens/masterthesis/cli.py @@ -263,7 +263,8 @@ def _ssd_test(args: argparse.Namespace) -> None: _init_eager_mode() batch_size, image_size, learning_rate, \ - forward_passes_per_image, nr_classes, iou_threshold, dropout_rate, top_k, nr_trajectories, \ + forward_passes_per_image, nr_classes, iou_threshold, dropout_rate, \ + entropy_threshold, top_k, nr_trajectories, \ coco_path, output_path, weights_path, ground_truth_path = _ssd_test_get_config_values(args, conf.get_property) use_dropout = _ssd_is_dropout(args) @@ -304,6 +305,7 @@ def _ssd_test(args: argparse.Namespace) -> None: image_size, batch_size, forward_passes_per_image, + entropy_threshold, output_path, coco_path, use_dropout, @@ -500,7 +502,7 @@ def _ssd_train_get_config_values(config_get: Callable[[str], Union[str, float, i def _ssd_test_get_config_values(args: argparse.Namespace, config_get: Callable[[str], Union[str, float, int, bool]] - ) -> Tuple[int, int, float, int, int, float, float, int, int, + ) -> Tuple[int, int, float, int, int, float, float, float, int, int, str, str, str, str]: batch_size = config_get("Parameters.batch_size") @@ -510,6 +512,7 @@ def _ssd_test_get_config_values(args: argparse.Namespace, nr_classes = config_get("Parameters.nr_classes") iou_threshold = config_get("Parameters.ssd_iou_threshold") dropout_rate = config_get("Parameters.ssd_dropout_rate") + entropy_threshold = config_get("Parameters.ssd_entropy_threshold") top_k = config_get("Parameters.ssd_top_k") nr_trajectories = config_get("Parameters.nr_trajectories") @@ -529,6 +532,7 @@ def _ssd_test_get_config_values(args: argparse.Namespace, nr_classes, iou_threshold, dropout_rate, + entropy_threshold, top_k, nr_trajectories, # diff --git a/src/twomartens/masterthesis/config.py b/src/twomartens/masterthesis/config.py index c29ff61..0c13604 100644 --- a/src/twomartens/masterthesis/config.py +++ b/src/twomartens/masterthesis/config.py @@ -59,6 +59,7 @@ _CONFIG_PROPS = { "ssd_iou_threshold": (float, "0.45"), "ssd_top_k": (int, "200"), "ssd_dropout_rate": (float, "0.5"), + "ssd_entropy_threshold": (float, "2.5"), "nr_trajectories": (int, "-1") } } diff --git a/src/twomartens/masterthesis/ssd.py b/src/twomartens/masterthesis/ssd.py index 1d9bcde..a33fa30 100644 --- a/src/twomartens/masterthesis/ssd.py +++ b/src/twomartens/masterthesis/ssd.py @@ -145,6 +145,7 @@ def predict(generator: callable, image_size: int, batch_size: int, forward_passes_per_image: int, + entropy_threshold: float, output_path: str, coco_path: str, use_dropout: bool, @@ -162,6 +163,7 @@ def predict(generator: callable, batch_size: number of items in every batch forward_passes_per_image: specifies number of forward passes per image used by DropoutSSD + entropy_threshold: specifies the threshold for the entropy output_path: the path in which the results should be saved coco_path: the path to the COCO data set use_dropout: if True, multiple forward passes and observations will be used @@ -185,7 +187,8 @@ def predict(generator: callable, decode_func=functools.partial( _decode_predictions, decode_func=ssd_output_decoder.decode_detections_fast, - image_size=image_size + image_size=image_size, + entropy_threshold=entropy_threshold ), transform_func=functools.partial( _transform_predictions, @@ -319,12 +322,14 @@ def _predict_vanilla_step(inputs: np.ndarray, model: tf.keras.models.Model) -> n def _decode_predictions(predictions: np.ndarray, decode_func: callable, - image_size: int) -> np.ndarray: + image_size: int, + entropy_threshold: float) -> np.ndarray: return decode_func( y_pred=predictions, img_width=image_size, img_height=image_size, - input_coords="corners" + input_coords="corners", + entropy_threshold=entropy_threshold )