Compare commits
7 Commits
63a246c0c8
...
872405e239
Author | SHA1 | Date | |
---|---|---|---|
872405e239 | |||
b13e45bafc | |||
9e39c6c6c9 | |||
3c9e2c8d12 | |||
bd27226f0f | |||
0f61e1d64d | |||
9ca0851bf7 |
@@ -5,5 +5,5 @@ from runners.data_spliter import DataSpliter
|
|||||||
class DataSplitApp:
|
class DataSplitApp:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def start():
|
def start():
|
||||||
DataSpliter("configs/server/split_dataset_config.yaml").run()
|
DataSpliter("configs/server/server_split_dataset_config.yaml").run()
|
||||||
|
|
@@ -22,8 +22,6 @@ runner:
|
|||||||
|
|
||||||
datasets:
|
datasets:
|
||||||
OmniObject3d:
|
OmniObject3d:
|
||||||
root_dir: /home/data/hofee/project/nbv_rec_part2_preprocessed
|
root_dir: /data/hofee/nbv_rec_part2_preprocessed
|
||||||
from: 960
|
from: 155
|
||||||
to: 1000 # -1 means end
|
to: 165 # ..-1 means end
|
||||||
|
|
||||||
|
|
||||||
|
22
configs/server/server_split_dataset_config.yaml
Normal file
22
configs/server/server_split_dataset_config.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
runner:
|
||||||
|
general:
|
||||||
|
seed: 0
|
||||||
|
device: cpu
|
||||||
|
cuda_visible_devices: "0,1,2,3,4,5,6,7"
|
||||||
|
|
||||||
|
experiment:
|
||||||
|
name: debug
|
||||||
|
root_dir: "experiments"
|
||||||
|
|
||||||
|
split: #
|
||||||
|
root_dir: "/data/hofee/data/packed_preprocessed_data"
|
||||||
|
type: "unseen_instance" # "unseen_category"
|
||||||
|
datasets:
|
||||||
|
OmniObject3d_train:
|
||||||
|
path: "/data/hofee/data/OmniObject3d_train.txt"
|
||||||
|
ratio: 0.9
|
||||||
|
|
||||||
|
OmniObject3d_test:
|
||||||
|
path: "/data/hofee/data/OmniObject3d_test.txt"
|
||||||
|
ratio: 0.1
|
@@ -13,7 +13,7 @@ runner:
|
|||||||
epoch: -1 # -1 stands for last epoch
|
epoch: -1 # -1 stands for last epoch
|
||||||
max_epochs: 5000
|
max_epochs: 5000
|
||||||
save_checkpoint_interval: 1
|
save_checkpoint_interval: 1
|
||||||
test_first: True
|
test_first: False
|
||||||
|
|
||||||
train:
|
train:
|
||||||
optimizer:
|
optimizer:
|
||||||
@@ -25,7 +25,7 @@ runner:
|
|||||||
test:
|
test:
|
||||||
frequency: 3 # test frequency
|
frequency: 3 # test frequency
|
||||||
dataset_list:
|
dataset_list:
|
||||||
- OmniObject3d_test
|
#- OmniObject3d_test
|
||||||
- OmniObject3d_val
|
- OmniObject3d_val
|
||||||
|
|
||||||
pipeline: nbv_reconstruction_global_pts_n_num_pipeline
|
pipeline: nbv_reconstruction_global_pts_n_num_pipeline
|
||||||
@@ -41,7 +41,7 @@ dataset:
|
|||||||
ratio: 1
|
ratio: 1
|
||||||
batch_size: 160
|
batch_size: 160
|
||||||
num_workers: 16
|
num_workers: 16
|
||||||
pts_num: 4096
|
pts_num: 8192
|
||||||
load_from_preprocess: True
|
load_from_preprocess: True
|
||||||
|
|
||||||
OmniObject3d_test:
|
OmniObject3d_test:
|
||||||
@@ -57,7 +57,7 @@ dataset:
|
|||||||
ratio: 0.05
|
ratio: 0.05
|
||||||
batch_size: 160
|
batch_size: 160
|
||||||
num_workers: 12
|
num_workers: 12
|
||||||
pts_num: 4096
|
pts_num: 8192
|
||||||
load_from_preprocess: True
|
load_from_preprocess: True
|
||||||
|
|
||||||
OmniObject3d_val:
|
OmniObject3d_val:
|
||||||
@@ -73,7 +73,7 @@ dataset:
|
|||||||
ratio: 0.005
|
ratio: 0.005
|
||||||
batch_size: 160
|
batch_size: 160
|
||||||
num_workers: 12
|
num_workers: 12
|
||||||
pts_num: 4096
|
pts_num: 8192
|
||||||
load_from_preprocess: True
|
load_from_preprocess: True
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import torch
|
import torch
|
||||||
|
import time
|
||||||
from torch import nn
|
from torch import nn
|
||||||
import PytorchBoot.namespace as namespace
|
import PytorchBoot.namespace as namespace
|
||||||
import PytorchBoot.stereotype as stereotype
|
import PytorchBoot.stereotype as stereotype
|
||||||
@@ -58,7 +59,10 @@ class NBVReconstructionGlobalPointsPipeline(nn.Module):
|
|||||||
return perturbed_x, random_t, target_score, std
|
return perturbed_x, random_t, target_score, std
|
||||||
|
|
||||||
def forward_train(self, data):
|
def forward_train(self, data):
|
||||||
|
start_time = time.time()
|
||||||
main_feat = self.get_main_feat(data)
|
main_feat = self.get_main_feat(data)
|
||||||
|
end_time = time.time()
|
||||||
|
print("get_main_feat time: ", end_time - start_time)
|
||||||
""" get std """
|
""" get std """
|
||||||
best_to_world_pose_9d_batch = data["best_to_world_pose_9d"]
|
best_to_world_pose_9d_batch = data["best_to_world_pose_9d"]
|
||||||
perturbed_x, random_t, target_score, std = self.pertube_data(
|
perturbed_x, random_t, target_score, std = self.pertube_data(
|
||||||
|
@@ -8,7 +8,7 @@ import torch
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
sys.path.append(r"/home/data/hofee/project/nbv_rec/nbv_reconstruction")
|
sys.path.append(r"/data/hofee/project/nbv_rec/nbv_reconstruction")
|
||||||
|
|
||||||
from utils.data_load import DataLoadUtil
|
from utils.data_load import DataLoadUtil
|
||||||
from utils.pose import PoseUtil
|
from utils.pose import PoseUtil
|
||||||
@@ -31,7 +31,7 @@ class NBVReconstructionDataset(BaseDataset):
|
|||||||
self.load_from_preprocess = config.get("load_from_preprocess", False)
|
self.load_from_preprocess = config.get("load_from_preprocess", False)
|
||||||
|
|
||||||
if self.type == namespace.Mode.TEST:
|
if self.type == namespace.Mode.TEST:
|
||||||
self.model_dir = config["model_dir"]
|
#self.model_dir = config["model_dir"]
|
||||||
self.filter_degree = config["filter_degree"]
|
self.filter_degree = config["filter_degree"]
|
||||||
if self.type == namespace.Mode.TRAIN:
|
if self.type == namespace.Mode.TRAIN:
|
||||||
scale_ratio = 100
|
scale_ratio = 100
|
||||||
@@ -66,7 +66,9 @@ class NBVReconstructionDataset(BaseDataset):
|
|||||||
if max_coverage_rate > scene_max_coverage_rate:
|
if max_coverage_rate > scene_max_coverage_rate:
|
||||||
scene_max_coverage_rate = max_coverage_rate
|
scene_max_coverage_rate = max_coverage_rate
|
||||||
max_coverage_rate_list.append(max_coverage_rate)
|
max_coverage_rate_list.append(max_coverage_rate)
|
||||||
mean_coverage_rate = np.mean(max_coverage_rate_list)
|
|
||||||
|
if max_coverage_rate_list:
|
||||||
|
mean_coverage_rate = np.mean(max_coverage_rate_list)
|
||||||
|
|
||||||
for seq_idx in range(seq_num):
|
for seq_idx in range(seq_num):
|
||||||
label_path = DataLoadUtil.get_label_path(
|
label_path = DataLoadUtil.get_label_path(
|
||||||
@@ -112,6 +114,10 @@ class NBVReconstructionDataset(BaseDataset):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
Log.error(f"Save cache failed: {e}")
|
Log.error(f"Save cache failed: {e}")
|
||||||
|
|
||||||
|
def voxel_downsample_with_mask(self, pts, voxel_size):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
data_item_info = self.datalist[index]
|
data_item_info = self.datalist[index]
|
||||||
scanned_views = data_item_info["scanned_views"]
|
scanned_views = data_item_info["scanned_views"]
|
||||||
@@ -160,9 +166,8 @@ class NBVReconstructionDataset(BaseDataset):
|
|||||||
)
|
)
|
||||||
|
|
||||||
combined_scanned_views_pts = np.concatenate(scanned_views_pts, axis=0)
|
combined_scanned_views_pts = np.concatenate(scanned_views_pts, axis=0)
|
||||||
fps_downsampled_combined_scanned_pts, fps_idx = PtsUtil.fps_downsample_point_cloud(
|
voxel_downsampled_combined_scanned_pts_np = PtsUtil.voxel_downsample_point_cloud(combined_scanned_views_pts, 0.002)
|
||||||
combined_scanned_views_pts, self.pts_num, require_idx=True
|
random_downsampled_combined_scanned_pts_np = PtsUtil.random_downsample_point_cloud(voxel_downsampled_combined_scanned_pts_np, self.pts_num)
|
||||||
)
|
|
||||||
|
|
||||||
combined_scanned_views_pts_mask = np.zeros(len(combined_scanned_views_pts), dtype=np.uint8)
|
combined_scanned_views_pts_mask = np.zeros(len(combined_scanned_views_pts), dtype=np.uint8)
|
||||||
|
|
||||||
@@ -171,7 +176,6 @@ class NBVReconstructionDataset(BaseDataset):
|
|||||||
end_idx = start_idx + len(scanned_views_pts[i])
|
end_idx = start_idx + len(scanned_views_pts[i])
|
||||||
combined_scanned_views_pts_mask[start_idx:end_idx] = i
|
combined_scanned_views_pts_mask[start_idx:end_idx] = i
|
||||||
start_idx = end_idx
|
start_idx = end_idx
|
||||||
|
|
||||||
fps_downsampled_combined_scanned_pts_mask = combined_scanned_views_pts_mask[fps_idx]
|
fps_downsampled_combined_scanned_pts_mask = combined_scanned_views_pts_mask[fps_idx]
|
||||||
|
|
||||||
data_item = {
|
data_item = {
|
||||||
@@ -238,10 +242,9 @@ if __name__ == "__main__":
|
|||||||
torch.manual_seed(seed)
|
torch.manual_seed(seed)
|
||||||
np.random.seed(seed)
|
np.random.seed(seed)
|
||||||
config = {
|
config = {
|
||||||
"root_dir": "/home/data/hofee/project/nbv_rec/data/nbv_rec_data_512_preproc_npy",
|
"root_dir": "/data/hofee/data/packed_preprocessed_data",
|
||||||
"model_dir": "/home/data/hofee/project/nbv_rec/data/scaled_object_meshes",
|
|
||||||
"source": "nbv_reconstruction_dataset",
|
"source": "nbv_reconstruction_dataset",
|
||||||
"split_file": "/home/data/hofee/project/nbv_rec/data/OmniObject3d_test.txt",
|
"split_file": "/data/hofee/data/OmniObject3d_train.txt",
|
||||||
"load_from_preprocess": True,
|
"load_from_preprocess": True,
|
||||||
"ratio": 0.5,
|
"ratio": 0.5,
|
||||||
"batch_size": 2,
|
"batch_size": 2,
|
||||||
|
@@ -93,10 +93,8 @@ class StrategyGenerator(Runner):
|
|||||||
else:
|
else:
|
||||||
nrm = np.load(nrm_path)
|
nrm = np.load(nrm_path)
|
||||||
nrm_list.append(nrm)
|
nrm_list.append(nrm)
|
||||||
|
|
||||||
indices = np.load(idx_path)
|
|
||||||
pts_list.append(pts)
|
pts_list.append(pts)
|
||||||
|
indices = np.load(idx_path)
|
||||||
scan_points_indices_list.append(indices)
|
scan_points_indices_list.append(indices)
|
||||||
if pts.shape[0] > 0:
|
if pts.shape[0] > 0:
|
||||||
non_zero_cnt += 1
|
non_zero_cnt += 1
|
||||||
|
@@ -53,6 +53,8 @@ class DataLoadUtil:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_label_num(root, scene_name):
|
def get_label_num(root, scene_name):
|
||||||
label_dir = os.path.join(root, scene_name, "label")
|
label_dir = os.path.join(root, scene_name, "label")
|
||||||
|
if not os.path.exists(label_dir):
|
||||||
|
return 0
|
||||||
return len(os.listdir(label_dir))
|
return len(os.listdir(label_dir))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@@ -75,6 +75,7 @@ class ReconstructionUtil:
|
|||||||
cnt_processed_view = 0
|
cnt_processed_view = 0
|
||||||
remaining_views.remove(init_view)
|
remaining_views.remove(init_view)
|
||||||
curr_rec_pts_num = combined_point_cloud.shape[0]
|
curr_rec_pts_num = combined_point_cloud.shape[0]
|
||||||
|
drop_output_ratio = 0.4
|
||||||
|
|
||||||
import time
|
import time
|
||||||
while remaining_views:
|
while remaining_views:
|
||||||
@@ -84,6 +85,8 @@ class ReconstructionUtil:
|
|||||||
best_covered_num = 0
|
best_covered_num = 0
|
||||||
|
|
||||||
for view_index in remaining_views:
|
for view_index in remaining_views:
|
||||||
|
if np.random.rand() < drop_output_ratio:
|
||||||
|
continue
|
||||||
if point_cloud_list[view_index].shape[0] == 0:
|
if point_cloud_list[view_index].shape[0] == 0:
|
||||||
continue
|
continue
|
||||||
if selected_views:
|
if selected_views:
|
||||||
|
Reference in New Issue
Block a user