From 63998cc01b4f10d140f5f48c9cf04f0dffc20d6e Mon Sep 17 00:00:00 2001 From: Lev Denisov Date: Mon, 23 Oct 2023 23:35:11 +0300 Subject: [PATCH] fix: the directory name has been changed and minor errors have been fixed --- CMakeLists.txt | 2 +- .../python-benchmark/boxplot.png | Bin 40196 -> 0 bytes .../python-benchmark/create_boxplot.py | 18 ------- .../python-benchmark/process_cloud.py | 51 ------------------ .../cpp-benchmark/CMakeLists.txt | 0 .../cpp-benchmark/benchmark_process_cloud.cpp | 14 +---- .../benchmark_process_sequence.cpp | 4 +- .../data/color/000004415600.png | Bin .../data/config/TUM_fr3_long_val.ini | 0 .../data/config/intrinsics.K | 0 .../data/depth/000004415622.png | Bin .../benchmark_process_cloud.py | 2 +- .../benchmark_process_sequence.py | 2 +- 13 files changed, 6 insertions(+), 87 deletions(-) delete mode 100644 benchmark-artifact/python-benchmark/boxplot.png delete mode 100644 benchmark-artifact/python-benchmark/create_boxplot.py delete mode 100644 benchmark-artifact/python-benchmark/process_cloud.py rename {benchmark-artifact => benchmark}/cpp-benchmark/CMakeLists.txt (100%) rename {benchmark-artifact => benchmark}/cpp-benchmark/benchmark_process_cloud.cpp (95%) rename {benchmark-artifact => benchmark}/cpp-benchmark/benchmark_process_sequence.cpp (98%) rename {benchmark-artifact => benchmark}/data/color/000004415600.png (100%) rename {benchmark-artifact => benchmark}/data/config/TUM_fr3_long_val.ini (100%) rename {benchmark-artifact => benchmark}/data/config/intrinsics.K (100%) rename {benchmark-artifact => benchmark}/data/depth/000004415622.png (100%) rename {benchmark-artifact => benchmark}/python-benchmark/benchmark_process_cloud.py (99%) rename {benchmark-artifact => benchmark}/python-benchmark/benchmark_process_sequence.py (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06a68f4..13a131b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ set(DEPLEX_LIB_DIR ${CMAKE_BINARY_DIR}/lib) add_subdirectory(external) add_subdirectory(libs) add_subdirectory(cpp) -add_subdirectory(benchmark-artifact/cpp-benchmark) +add_subdirectory(benchmark/cpp-benchmark) if (${BUILD_EXAMPLES}) add_subdirectory(examples) endif() \ No newline at end of file diff --git a/benchmark-artifact/python-benchmark/boxplot.png b/benchmark-artifact/python-benchmark/boxplot.png deleted file mode 100644 index bbc65e52f765d56ea6b3461e6a79f841f54d31e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40196 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 diff --git a/benchmark-artifact/python-benchmark/create_boxplot.py b/benchmark-artifact/python-benchmark/create_boxplot.py deleted file mode 100644 index 0027f1e..0000000 --- a/benchmark-artifact/python-benchmark/create_boxplot.py +++ /dev/null @@ -1,18 +0,0 @@ -import seaborn as sns -import matplotlib.pyplot as plt -import numpy as np - -from pathlib import Path - -data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark-artifact/data" -csv_file_labels = "" # File with marked planes -def createBoxplot(): - data = np.genfromtxt(Path(data_dir) / Path('process_sequence_50_snapshot.csv'), delimiter=',') - - sns.boxplot(data=[data]) - plt.xticks([0], ['stable']) - plt.ylabel("Time (ms.)") - plt.savefig("boxplot.png", dpi=300, bbox_inches='tight') - -if __name__ == '__main__': - createBoxplot() \ No newline at end of file diff --git a/benchmark-artifact/python-benchmark/process_cloud.py b/benchmark-artifact/python-benchmark/process_cloud.py deleted file mode 100644 index 23ff43e..0000000 --- a/benchmark-artifact/python-benchmark/process_cloud.py +++ /dev/null @@ -1,51 +0,0 @@ -from deplex.utils import DepthImage -import deplex - -import open3d as o3d -import numpy as np - -from pathlib import Path - -data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark-artifact/data" -image_path = data_dir / Path("depth") / Path("000004415622.png") -config_path = data_dir / Path("config") / Path("TUM_fr3_long_val.ini") -intrinsics_path = data_dir / Path("config") / Path("intrinsics.K") -def process_cloud(): - config = deplex.Config(str(config_path)) - camera_intrinsic = np.genfromtxt(intrinsics_path) - image = DepthImage(str(image_path)) - pcd_points = image.transform_to_pcd(camera_intrinsic) - - print("Image Height:", image.height, "Image Width:", image.width) - print("Shape of PointCloud points:", pcd_points.shape) - - # Visualize PointCloud points using Open3D - - open3d_pcd = o3d.geometry.PointCloud( - o3d.utility.Vector3dVector(pcd_points) - ) - - o3d.visualization.draw_geometries([open3d_pcd]) - - coarse_algorithm = deplex.PlaneExtractor(image_height=image.height, image_width=image.width, config=config) - - labels = coarse_algorithm.process(pcd_points) - - print(f"Number of found planes: {max(labels)}") - print(np.unique(labels)) # Zero stands for non-planar point - print("Labels shape:", labels.shape) - - color_set = np.random.rand(100 + 1, 3) - pcd_colors = np.zeros(pcd_points.shape) - - non_planar_label = 0 - for color_id in np.unique(labels): - if color_id != non_planar_label: - pcd_colors[labels == color_id] = color_set[color_id] - - open3d_pcd.colors = o3d.utility.Vector3dVector(pcd_colors) - - o3d.visualization.draw_geometries([open3d_pcd]) - -if __name__ == '__main__': - process_cloud() \ No newline at end of file diff --git a/benchmark-artifact/cpp-benchmark/CMakeLists.txt b/benchmark/cpp-benchmark/CMakeLists.txt similarity index 100% rename from benchmark-artifact/cpp-benchmark/CMakeLists.txt rename to benchmark/cpp-benchmark/CMakeLists.txt diff --git a/benchmark-artifact/cpp-benchmark/benchmark_process_cloud.cpp b/benchmark/cpp-benchmark/benchmark_process_cloud.cpp similarity index 95% rename from benchmark-artifact/cpp-benchmark/benchmark_process_cloud.cpp rename to benchmark/cpp-benchmark/benchmark_process_cloud.cpp index caf8bbf..8e7aaf9 100644 --- a/benchmark-artifact/cpp-benchmark/benchmark_process_cloud.cpp +++ b/benchmark/cpp-benchmark/benchmark_process_cloud.cpp @@ -20,7 +20,7 @@ double variance(const Eigen::VectorXd& data, double mean) { int main() { std::filesystem::path data_dir = - std::filesystem::current_path().parent_path().parent_path().parent_path() / "benchmark-artifact/data"; + std::filesystem::current_path().parent_path().parent_path().parent_path() / "benchmark/data"; std::filesystem::path image_path = data_dir / "depth/000004415622.png"; std::filesystem::path intrinsics_path = data_dir / "config/intrinsics.K"; std::filesystem::path config_path = data_dir / "config/TUM_fr3_long_val.ini"; @@ -68,18 +68,6 @@ int main() { auto execution_time_segmentation_stage = algorithm.GetExecutionTime(); - for (auto& v : execution_time_segmentation_stage) { - for (auto& stage : v) { - stage /= NUMBER_OF_RUNS; - } - } - - for (auto& v : execution_time_stage) { - for (auto& stage : v) { - stage /= NUMBER_OF_RUNS; - } - } - Eigen::VectorXd elements = Eigen::VectorXd::Zero(NUMBER_OF_RUNS); for (auto i = 0; i < NUMBER_OF_RUNS; ++i) { elements[i] = execution_time_stage[i][0]; diff --git a/benchmark-artifact/cpp-benchmark/benchmark_process_sequence.cpp b/benchmark/cpp-benchmark/benchmark_process_sequence.cpp similarity index 98% rename from benchmark-artifact/cpp-benchmark/benchmark_process_sequence.cpp rename to benchmark/cpp-benchmark/benchmark_process_sequence.cpp index 17b0ad2..3c73848 100644 --- a/benchmark-artifact/cpp-benchmark/benchmark_process_sequence.cpp +++ b/benchmark/cpp-benchmark/benchmark_process_sequence.cpp @@ -20,7 +20,7 @@ double variance(const Eigen::VectorXd& data, double mean) { int main(int argc, char* argv[]) { std::filesystem::path data_dir = - std::filesystem::current_path().parent_path().parent_path().parent_path() / "benchmark-artifact/data"; + std::filesystem::current_path().parent_path().parent_path().parent_path() / "benchmark/data"; std::filesystem::path image_path = data_dir / "depth/000004415622.png"; std::filesystem::path intrinsics_path = data_dir / "config/intrinsics.K"; std::filesystem::path config_path = data_dir / "config/TUM_fr3_long_val.ini"; @@ -28,7 +28,7 @@ int main(int argc, char* argv[]) { auto start_time = std::chrono::high_resolution_clock::now(); auto end_time = std::chrono::high_resolution_clock::now(); - const int NUMBER_OF_RUNS = 1; + const int NUMBER_OF_RUNS = 10; const int NUMBER_OF_SNAPSHOT = 1; std::vector execution_time_stage(NUMBER_OF_SNAPSHOT, Eigen::VectorXd::Zero(3)); diff --git a/benchmark-artifact/data/color/000004415600.png b/benchmark/data/color/000004415600.png similarity index 100% rename from benchmark-artifact/data/color/000004415600.png rename to benchmark/data/color/000004415600.png diff --git a/benchmark-artifact/data/config/TUM_fr3_long_val.ini b/benchmark/data/config/TUM_fr3_long_val.ini similarity index 100% rename from benchmark-artifact/data/config/TUM_fr3_long_val.ini rename to benchmark/data/config/TUM_fr3_long_val.ini diff --git a/benchmark-artifact/data/config/intrinsics.K b/benchmark/data/config/intrinsics.K similarity index 100% rename from benchmark-artifact/data/config/intrinsics.K rename to benchmark/data/config/intrinsics.K diff --git a/benchmark-artifact/data/depth/000004415622.png b/benchmark/data/depth/000004415622.png similarity index 100% rename from benchmark-artifact/data/depth/000004415622.png rename to benchmark/data/depth/000004415622.png diff --git a/benchmark-artifact/python-benchmark/benchmark_process_cloud.py b/benchmark/python-benchmark/benchmark_process_cloud.py similarity index 99% rename from benchmark-artifact/python-benchmark/benchmark_process_cloud.py rename to benchmark/python-benchmark/benchmark_process_cloud.py index d485b57..db1e1f6 100644 --- a/benchmark-artifact/python-benchmark/benchmark_process_cloud.py +++ b/benchmark/python-benchmark/benchmark_process_cloud.py @@ -6,7 +6,7 @@ from pathlib import Path -data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark-artifact/data" +data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark/data" image_path = data_dir / Path("depth") / Path("000004415622.png") config_path = data_dir / Path("config") / Path("TUM_fr3_long_val.ini") intrinsics_path = data_dir / Path("config") / Path("intrinsics.K") diff --git a/benchmark-artifact/python-benchmark/benchmark_process_sequence.py b/benchmark/python-benchmark/benchmark_process_sequence.py similarity index 99% rename from benchmark-artifact/python-benchmark/benchmark_process_sequence.py rename to benchmark/python-benchmark/benchmark_process_sequence.py index b2feecd..f706660 100644 --- a/benchmark-artifact/python-benchmark/benchmark_process_sequence.py +++ b/benchmark/python-benchmark/benchmark_process_sequence.py @@ -7,7 +7,7 @@ from pathlib import Path -data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark-artifact/data" +data_dir = Path(__file__).parent.parent.parent.resolve() / "benchmark/data" image_path = data_dir / Path("depth") / Path("000004415622.png") config_path = data_dir / Path("config") / Path("TUM_fr3_long_val.ini") intrinsics_path = data_dir / Path("config") / Path("intrinsics.K")