Skip to content

Commit

Permalink
Fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
kostrykin committed Feb 12, 2024
1 parent eb788bb commit b0b09d6
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 81 deletions.
36 changes: 22 additions & 14 deletions tools/superdsm/run-superdsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@

hyperparameters = [
('AF_scale', float),
('c2f_region_analysis/min_atom_radius', float),
('c2f_region_analysis/min_norm_energy_improvement', float),
('c2f_region_analysis/max_atom_norm_energy', float),
('c2f_region_analysis/max_cluster_marker_irregularity', float),
('c2f-region-analysis/min_atom_radius', float),
('c2f-region-analysis/min_norm_energy_improvement', float),
('c2f-region-analysis/max_atom_norm_energy', float),
('c2f-region-analysis/max_cluster_marker_irregularity', float),
('dsm/alpha', float),
('dsm/AF_alpha', float),
('global_energy_minimization/pruning', str),
('global_energy_minimization/beta', float),
('global_energy_minimization/AF_beta', float),
('global-energy-minimization/pruning', str),
('global-energy-minimization/beta', float),
('global-energy-minimization/AF_beta', float),
('postprocess/mask_max_distance', int),
('postprocess/mask_stdamp', float),
('postprocess/max_norm_energy', float),
Expand All @@ -35,7 +35,7 @@


def get_param_name(key):
return key.replace('/', '_')
return key.replace('/', '_').replace('-', '_')


def create_config(args):
Expand Down Expand Up @@ -97,24 +97,32 @@ def flatten_dict(d, sep='/'):
cfg = create_config(args)
img = superdsm.io.imread(img_filepath)

# Create configuration if it is required:
if args.do_cfg or args.do_overlay or args.do_masks:
cfg, _ = superdsm.automation.create_config(pipeline, cfg, img)

# Perform segmentation if it is required:
if args.do_overlay or args.do_masks:
print('Performing segmentation')
data, cfg, _ = pipeline.process_image(img, cfg)

# Write configuration used for segmentation, or the automatically created one, otherwise:
if args.do_cfg:
print(f'Writing config to: {args.do_cfg}')
cfg, _ = superdsm.automation.create_config(pipeline, cfg, img)
with open(args.do_cfg, 'w') as fp:
tsv_out = csv.writer(fp, delimiter='\t')
tsv_out.writerow(['Hyperparameter', 'Value'])
for key, value in flatten_dict(cfg.entries).items():
rows = sorted(flatten_dict(cfg.entries).items(), key=lambda item: item[0])
for key, value in rows:
tsv_out.writerow([key, value])

if args.do_overlay or args.do_masks:
print('Performing segmentation')
data, cfg, _ = pipeline.process_image(img, cfg)

# Write the overlay image:
if args.do_overlay:
print(f'Writing overlay to: {args.do_overlay}')
overlay = superdsm.render.render_result_over_image(data, border_width=args.do_overlay_border, normalize_img=False)
superdsm.io.imwrite(args.do_overlay, overlay)

# Write the label map:
if args.do_masks:
print(f'Writing masks to: {args.do_masks}')
masks = superdsm.render.rasterize_labels(data)
Expand Down
4 changes: 2 additions & 2 deletions tools/superdsm/superdsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
<option value="exact">Exact graph pruning (Kostrykin and Rohr, TPAMI 2023)</option>
<option value="isbi24" selected="true">Robust graph pruning (Kostrykin and Rohr, ISBI 2024)</option>
</param>
<param name="outputs" type="select" label="Tool outputs" multiple="true" optional="false">
<param name="outputs" type="select" label="Tool outputs" multiple="true" optional="false" help="Note that if neither a segmentation overlay nor a label map is created, segmentation and cluster splitting will not be performed. As a consequence, hyperparameters which are determined automatically during segmentation and cluster splitting will not be reported, even if &quot;Report all hyperparameters&quot; is selected.">
<option value="overlay" selected="true">Create a segmentation overlay</option>
<option value="masks">Create a label map (e.g., for further processing)</option>
<option value="cfg">Report all hyperparameters (manually set and automatically determined values)</option>
Expand Down Expand Up @@ -160,7 +160,7 @@
<param name="global_energy_minimization_pruning" value="exact" />
<param name="outputs" value="overlay,masks,cfg" />
<output name="overlay" value="overlay.png" ftype="png" compare="sim_size" />
<output name="cfg" value="cfg.tsv" ftype="tsv" compare="diff" />
<output name="cfg" value="cfg-full.tsv" ftype="tsv" compare="diff" />
</test>
<test expect_num_outputs="1">
<param name="dataset" value="BBBC033_C2_z28.png" />
Expand Down
68 changes: 68 additions & 0 deletions tools/superdsm/test-data/cfg-full.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
Hyperparameter Value
AF_scale
c2f-region-analysis/AF_min_atom_radius 0.33
c2f-region-analysis/enabled True
c2f-region-analysis/max_atom_norm_energy 0.05
c2f-region-analysis/max_cluster_marker_irregularity 0.2
c2f-region-analysis/min_atom_radius 30
c2f-region-analysis/min_norm_energy_improvement 0.1
c2f-region-analysis/seed_connectivity 8
dsm/AF_alpha 0.0005
dsm/AF_background_margin 0.4
dsm/AF_smooth_amount 0.2
dsm/AF_smooth_subsample 0.4
dsm/alpha 2.116
dsm/background_margin 26
dsm/cachesize 1
dsm/cachetest
dsm/cp_timeout 300
dsm/enabled True
dsm/epsilon 1.0
dsm/gaussian_shape_multiplier 2
dsm/init elliptical
dsm/scale 1000
dsm/smooth_amount 13
dsm/smooth_mat_dtype float32
dsm/smooth_mat_max_allocations inf
dsm/smooth_subsample 26
dsm/sparsity_tol 0
global-energy-minimization/AF_beta 0.66
global-energy-minimization/AF_max_seed_distance inf
global-energy-minimization/beta 2793.1200000000003
global-energy-minimization/enabled True
global-energy-minimization/gamma 0.8
global-energy-minimization/max_iter 5
global-energy-minimization/max_seed_distance inf
global-energy-minimization/max_work_amount 1000000
global-energy-minimization/pruning exact
histological False
postprocess/AF_max_object_radius inf
postprocess/AF_min_glare_radius inf
postprocess/AF_min_object_radius 0.0
postprocess/contrast_epsilon 0.0001
postprocess/discard_image_boundary False
postprocess/enabled True
postprocess/exterior_offset 5
postprocess/exterior_scale 5
postprocess/fill_holes True
postprocess/glare_detection_min_layer 0.5
postprocess/glare_detection_num_layers 5
postprocess/glare_detection_smoothness 3
postprocess/mask_max_distance 1
postprocess/mask_smoothness 3
postprocess/mask_stdamp 2.0
postprocess/max_boundary_eccentricity inf
postprocess/max_eccentricity 0.99
postprocess/max_norm_energy 0.2
postprocess/max_object_radius inf
postprocess/min_boundary_glare_radius inf
postprocess/min_boundary_obj_radius 0
postprocess/min_contrast 1.35
postprocess/min_glare_radius inf
postprocess/min_object_radius 0.0
preprocess/AF_sigma2 1.0
preprocess/enabled True
preprocess/lower_clip_mean False
preprocess/offset_clip 3
preprocess/sigma1 1.4142135623730951
preprocess/sigma2 65.05382386916237
84 changes: 19 additions & 65 deletions tools/superdsm/test-data/cfg.tsv
Original file line number Diff line number Diff line change
@@ -1,78 +1,32 @@
Hyperparameter Value
c2f_region_analysis_min_norm_energy_improvement 0.1
c2f_region_analysis_max_atom_norm_energy 0.05
c2f_region_analysis_max_cluster_marker_irregularity 0.2
dsm_AF_alpha 0.0005
global_energy_minimization_AF_beta 0.66
postprocess_mask_max_distance 1
postprocess_mask_stdamp 2.0
postprocess_max_norm_energy 0.2
postprocess_min_contrast 1.35
postprocess_min_object_radius 0.0
AF_scale
preprocess/AF_sigma2 1.0
preprocess/sigma2 65.05382386916237
preprocess/enabled True
preprocess/sigma1 1.4142135623730951
preprocess/offset_clip 3
preprocess/lower_clip_mean False
c2f-region-analysis/AF_min_atom_radius 0.33
c2f-region-analysis/max_atom_norm_energy 0.05
c2f-region-analysis/max_cluster_marker_irregularity 0.2
c2f-region-analysis/min_atom_radius 30
c2f-region-analysis/min_norm_energy_improvement 0.1
dsm/AF_alpha 0.0005
dsm/alpha 2.116
dsm/AF_background_margin 0.4
dsm/AF_smooth_amount 0.2
dsm/smooth_amount 13
dsm/AF_smooth_subsample 0.4
dsm/smooth_subsample 26
dsm/AF_background_margin 0.4
dsm/alpha 2.116
dsm/background_margin 26
dsm/enabled True
dsm/cachesize 1
dsm/cachetest
dsm/sparsity_tol 0
dsm/init elliptical
dsm/epsilon 1.0
dsm/scale 1000
dsm/gaussian_shape_multiplier 2
dsm/smooth_mat_dtype float32
dsm/smooth_mat_max_allocations inf
dsm/cp_timeout 300
c2f-region-analysis/AF_min_atom_radius 0.33
c2f-region-analysis/min_atom_radius 30
c2f-region-analysis/enabled True
c2f-region-analysis/seed_connectivity 8
c2f-region-analysis/max_atom_norm_energy 0.05
c2f-region-analysis/min_norm_energy_improvement 0.1
c2f-region-analysis/max_cluster_marker_irregularity 0.2
dsm/smooth_amount 13
dsm/smooth_subsample 26
global-energy-minimization/AF_beta 0.66
global-energy-minimization/beta 2793.1200000000003
global-energy-minimization/AF_max_seed_distance inf
global-energy-minimization/beta 2793.1200000000003
global-energy-minimization/max_seed_distance inf
global-energy-minimization/enabled True
global-energy-minimization/strict True
global-energy-minimization/max_iter 5
global-energy-minimization/gamma 0.8
global-energy-minimization/max_work_amount 1000000
postprocess/AF_min_object_radius 0.0
postprocess/min_object_radius 0.0
global-energy-minimization/pruning exact
postprocess/AF_max_object_radius inf
postprocess/max_object_radius inf
postprocess/AF_min_glare_radius inf
postprocess/min_glare_radius inf
postprocess/enabled True
postprocess/AF_min_object_radius 0.0
postprocess/mask_max_distance 1
postprocess/mask_stdamp 2.0
postprocess/max_norm_energy 0.2
postprocess/discard_image_boundary False
postprocess/min_boundary_obj_radius 0
postprocess/max_eccentricity 0.99
postprocess/max_boundary_eccentricity inf
postprocess/exterior_scale 5
postprocess/exterior_offset 5
postprocess/max_object_radius inf
postprocess/min_contrast 1.35
postprocess/contrast_epsilon 0.0001
postprocess/mask_stdamp 2
postprocess/mask_max_distance 1
postprocess/mask_smoothness 3
postprocess/fill_holes True
postprocess/glare_detection_smoothness 3
postprocess/glare_detection_num_layers 5
postprocess/glare_detection_min_layer 0.5
postprocess/min_boundary_glare_radius inf
histological False
postprocess/min_glare_radius inf
postprocess/min_object_radius 0.0
preprocess/AF_sigma2 1.0
preprocess/sigma2 65.05382386916237

0 comments on commit b0b09d6

Please sign in to comment.