From 7e408c42fca85d8e25c91aae7c86d51b24ea582a Mon Sep 17 00:00:00 2001 From: superjom Date: Fri, 29 Dec 2017 15:18:40 +0800 Subject: [PATCH] Merge branch 'feature/add_image_component-eigen_support_transform' into feature/add_image_component --- CMakeLists.txt | 7 +++++-- cmake/external/eigen.cmake | 30 ++++++++++++++++++++++++++++++ visualdl/logic/CMakeLists.txt | 4 ++-- visualdl/logic/sdk.cc | 5 +++-- visualdl/logic/sdk_test.cc | 2 +- visualdl/python/test_storage.py | 2 +- 6 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 cmake/external/eigen.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 83921c41..23e83ab8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,13 +23,15 @@ include(external/zlib) # download, build, install zlib include(external/gflags) # download, build, install gflags include(external/glog) # download, build, install glog include(external/gtest) # download, build, install gtest +include(external/eigen) # download eigen include(external/pybind11) # download pybind11 include(external/protobuf) # download, build, install protobuf include(external/python) # find python and set path include_directories(${PROJECT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${PROJECT_SOURCE_DIR}/thirdparty/local/include) +# TODO(ChunweiYan) debug, remote latter +#include_directories(/home/superjom/project/VisualDL/build/third_party/eigen3/src/extern_eigen3) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/visualdl/storage) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/visualdl/logic) @@ -37,9 +39,10 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/visualdl/python) add_executable(vl_test ${PROJECT_SOURCE_DIR}/visualdl/test.cc - ${PROJECT_SOURCE_DIR}/visualdl/storage/storage_test.cc ${PROJECT_SOURCE_DIR}/visualdl/logic/sdk_test.cc + ${PROJECT_SOURCE_DIR}/visualdl/storage/storage_test.cc ${PROJECT_SOURCE_DIR}/visualdl/utils/test_concurrency.cc + ${PROJECT_SOURCE_DIR}/visualdl/utils/test_image.cc ${PROJECT_SOURCE_DIR}/visualdl/utils/concurrency.h ${PROJECT_SOURCE_DIR}/visualdl/utils/filesystem.h ) diff --git a/cmake/external/eigen.cmake b/cmake/external/eigen.cmake new file mode 100644 index 00000000..f7483f6b --- /dev/null +++ b/cmake/external/eigen.cmake @@ -0,0 +1,30 @@ +INCLUDE(ExternalProject) + +SET(EIGEN_SOURCE_DIR ${THIRD_PARTY_PATH}/eigen3) + +INCLUDE_DIRECTORIES(${EIGEN_SOURCE_DIR}/src/extern_eigen3) + +ExternalProject_Add( + extern_eigen3 + ${EXTERNAL_PROJECT_LOG_ARGS} + GIT_REPOSITORY "https://github.com/RLovelett/eigen.git" + GIT_TAG "master" + PREFIX ${EIGEN_SOURCE_DIR} + UPDATE_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) + +if (${CMAKE_VERSION} VERSION_LESS "3.3.0") + set(dummyfile ${CMAKE_CURRENT_BINARY_DIR}/eigen3_dummy.c) + file(WRITE ${dummyfile} "const char * dummy_eigen3 = \"${dummyfile}\";") + add_library(eigen3 STATIC ${dummyfile}) +else() + add_library(eigen3 INTERFACE) +endif() + +add_dependencies(eigen3 extern_eigen3) + +LIST(APPEND external_project_dependencies eigen3) diff --git a/visualdl/logic/CMakeLists.txt b/visualdl/logic/CMakeLists.txt index f38c9e73..44c6579e 100644 --- a/visualdl/logic/CMakeLists.txt +++ b/visualdl/logic/CMakeLists.txt @@ -1,10 +1,10 @@ add_library(im ${PROJECT_SOURCE_DIR}/visualdl/logic/im.cc) -add_library(sdk ${PROJECT_SOURCE_DIR}/visualdl/logic/sdk.cc) +add_library(sdk ${PROJECT_SOURCE_DIR}/visualdl/logic/sdk.cc ${PROJECT_SOURCE_DIR}/visualdl/utils/image.h) add_dependencies(im storage_proto) add_dependencies(sdk entry storage storage_proto) ## pybind add_library(core SHARED ${PROJECT_SOURCE_DIR}/visualdl/logic/pybind.cc) -add_dependencies(core pybind python im entry tablet storage sdk protobuf glog) +add_dependencies(core pybind python im entry tablet storage sdk protobuf glog eigen3) target_link_libraries(core PRIVATE pybind entry python im tablet storage sdk protobuf glog) set_target_properties(core PROPERTIES PREFIX "" SUFFIX ".so") diff --git a/visualdl/logic/sdk.cc b/visualdl/logic/sdk.cc index 4303e734..069ef955 100644 --- a/visualdl/logic/sdk.cc +++ b/visualdl/logic/sdk.cc @@ -1,5 +1,7 @@ #include "visualdl/logic/sdk.h" +#include "visualdl/utils/image.h" + namespace visualdl { namespace components { @@ -101,7 +103,7 @@ void Image::SetSample(int index, const std::vector& data) { // production int size = std::accumulate( - shape.begin(), shape.end(), 1., [](float a, float b) { return a * b; }); + shape.begin(), shape.end(), 1., [](int a, int b) { return a * b; }); CHECK_GT(size, 0); CHECK_EQ(shape.size(), 3) << "shape should be something like (width, height, num_channel)"; @@ -111,7 +113,6 @@ void Image::SetSample(int index, CHECK_LT(index, num_samples_); CHECK_LE(index, num_records_); - // set data auto entry = step_.MutableData>(index); // trick to store int8 to protobuf std::vector data_str(data.size()); diff --git a/visualdl/logic/sdk_test.cc b/visualdl/logic/sdk_test.cc index 2b4c8e98..b82e2543 100644 --- a/visualdl/logic/sdk_test.cc +++ b/visualdl/logic/sdk_test.cc @@ -56,7 +56,7 @@ TEST(Image, test) { for (int step = 0; step < num_steps; step++) { image.StartSampling(); for (int i = 0; i < 7; i++) { - vector shape({3, 5, 5}); + vector shape({5, 5, 3}); vector data; for (int j = 0; j < 3 * 5 * 5; j++) { data.push_back(float(rand()) / RAND_MAX); diff --git a/visualdl/python/test_storage.py b/visualdl/python/test_storage.py index 05ae2f24..b7541027 100644 --- a/visualdl/python/test_storage.py +++ b/visualdl/python/test_storage.py @@ -36,7 +36,7 @@ class StorageTest(unittest.TestCase): image_writer = self.writer.image(tag, 10, 1) num_passes = 10 num_samples = 100 - shape = [3, 10, 10] + shape = [10, 10, 3] for pass_ in xrange(num_passes): image_writer.start_sampling() -- GitLab