Skip to content

Commit 3aa8c0b

Browse files
committed
Fixed radius smoothing kernel dimensions
1 parent 8e1cb6b commit 3aa8c0b

File tree

4 files changed

+23
-26
lines changed

4 files changed

+23
-26
lines changed

Diff for: smart_tree/conf/tree-dataset.yaml

+11-18
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ training:
1111
dataset:
1212
_target_: smart_tree.dataset.dataset.TreeDataset
1313
voxel_size: 0.01
14-
json_path: /local/uc-vision/smart-tree/smart_tree/conf/tree-split.json
14+
json_path: smart_tree/conf/tree-split.json
1515
directory: /local/uc-vision/dataset/branches/
1616
blocking: True
1717
block_size: 4
@@ -55,10 +55,9 @@ training:
5555
_target_: torch.optim.lr_scheduler.ReduceLROnPlateau
5656
mode: "min"
5757

58-
5958
model_inference:
60-
model_path: /local/uc-vision/smart-tree/smart_tree/model/weights/noble-elevator-58_model.pt
61-
weights_path: /local/uc-vision/smart-tree/smart_tree/model/weights/noble-elevator-58_model_weights.pt
59+
model_path: smart_tree/model/weights/noble-elevator-58_model.pt
60+
weights_path: smart_tree/model/weights/noble-elevator-58_model_weights.pt
6261
voxel_size: 0.01
6362
block_size: 4
6463
buffer_size: 0.4
@@ -73,18 +72,14 @@ skeletonizer:
7372
voxel_downsample: False
7473
edge_non_linear: None
7574

76-
7775
pipeline:
7876

7977
preprocessing:
8078
# Scale:
81-
# _target_: smart_tree.dataset.augmentations.Scale
82-
# min_scale: 0.6
83-
# max_scale: 0.6
84-
# Scale:
85-
# _target_: smart_tree.dataset.augmentations.Scale
86-
# min_scale: 1
87-
# max_scale: 1
79+
# _target_: smart_tree.dataset.augmentations.Scale
80+
# min_scale: 1
81+
# max_scale: 1
82+
8883
VoxelDownsample:
8984
_target_: smart_tree.dataset.augmentations.VoxelDownsample
9085
voxel_size : 0.01
@@ -100,14 +95,12 @@ pipeline:
10095
save_outputs : False
10196
branch_classes: [0]
10297
cmap:
103-
- [0.325, 0.207, 0.039] # Trunk
104-
- [0.290, 0.703, 0.254] # Foliage
105-
106-
107-
98+
- [0.450, 0.325, 0.164] # Trunk
99+
- [0.541, 0.670, 0.164] # Foliage
108100

109101
repair_skeletons : True
110-
smooth_skeletons : False
102+
smooth_skeletons : True
103+
smooth_kernel_size: 21 # Needs to be odd
111104
prune_skeletons : True
112105
min_skeleton_radius : 0.001
113106
min_skeleton_length : 0.002

Diff for: smart_tree/data_types/tree.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,14 @@ def smooth(self, kernel_size=5):
106106
"""
107107
Smooths the skeleton radius.
108108
"""
109-
kernel = torch.ones(1, 1, kernel_size)
109+
kernel = torch.ones(1, 1, kernel_size) / kernel_size
110110
for branch in self.branches.values():
111-
branch.radii = F.conv1d(
112-
branch.radii.unsqueeze(2),
113-
kernel,
114-
padding=(kernel_size - 1) // 2,
115-
).squeeze(2)
111+
if branch.radii.shape[0] > kernel_size:
112+
branch.radii = F.conv1d(
113+
branch.radii.reshape(1, 1, -1),
114+
kernel,
115+
padding="same",
116+
).reshape(-1)
116117

117118

118119
@dataclass

Diff for: smart_tree/model/weights/__init__.py

Whitespace-only changes.

Diff for: smart_tree/pipeline.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def __init__(
3232
preprocessing_cfg,
3333
repair_skeletons=False,
3434
smooth_skeletons=False,
35+
smooth_kernel_size=0,
3536
prune_skeletons=False,
3637
min_skeleton_radius=0.0,
3738
min_skeleton_length=1000,
@@ -51,6 +52,7 @@ def __init__(
5152

5253
self.repair_skeletons = repair_skeletons
5354
self.smooth_skeletons = smooth_skeletons
55+
self.smooth_kernel_size = smooth_kernel_size
5456
self.prune_skeletons = prune_skeletons
5557

5658
self.min_skeleton_radius = min_skeleton_radius
@@ -92,7 +94,7 @@ def process_cloud(self, path: Path):
9294
skeleton.to_o3d_tube(colour=False),
9395
cloud.to_o3d_cld(),
9496
],
95-
line_width=10,
97+
line_width=5,
9698
)
9799

98100
if self.save_outputs:
@@ -111,7 +113,7 @@ def post_process(self, skeleton: DisjointTreeSkeleton):
111113
skeleton.repair()
112114

113115
if self.smooth_skeletons:
114-
skeleton.smooth(kernel_size=27)
116+
skeleton.smooth(self.smooth_kernel_size)
115117

116118
@staticmethod
117119
def from_cfg(inferer, skeletonizer, cfg):
@@ -121,6 +123,7 @@ def from_cfg(inferer, skeletonizer, cfg):
121123
preprocessing_cfg=cfg.preprocessing,
122124
repair_skeletons=cfg.repair_skeletons,
123125
smooth_skeletons=cfg.smooth_skeletons,
126+
smooth_kernel_size=cfg.self.smooth_kernel_size,
124127
prune_skeletons=cfg.prune_skeletons,
125128
min_skeleton_radius=cfg.min_skeleton_radius,
126129
min_skeleton_length=cfg.min_skeleton_length,

0 commit comments

Comments
 (0)