O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis

Overview

O-CNN

This repository contains the implementation of our papers related with O-CNN.
The code is released under the MIT license.

If you use our code or models, please cite our paper.

Contents

What's New?

  • 2021.08.24: Update the code for pythorch-based O-CNN, including a UNet and some other major components. Our vanilla implementation without any tricks on ScanNet dataset achieves 76.2 mIoU on the ScanNet benchmark, even surpassing the recent state-of-art approaches published in CVPR 2021 and ICCV 2021.
  • 2021.03.01: Update the code for pytorch-based O-CNN, including a ResNet and some important modules.
  • 2021.02.08: Release the code for ShapeNet segmentation with HRNet.
  • 2021.02.03: Release the code for ModelNet40 classification with HRNet.
  • 2020.10.12: Release the initial version of our O-CNN under PyTorch. The code has been tested with the classification task.
  • 2020.08.16: We released our code for 3D unsupervised learning. We provided a unified network architecture for generic shape analysis tasks and an unsupervised method to pretrain the network. Our method achieved state-of-the-art performance on several benchmarks.
  • 2020.08.12: We released our code for Partnet segmentation. We achieved an average IoU of 58.4, significantly better than PointNet (IoU: 35.6), PointNet++ (IoU: 42.5), SpiderCNN (IoU: 37.0), and PointCNN(IoU: 46.5).
  • 2020.08.05: We released our code for shape completion. We proposed a simple yet efficient network and output-guided skip connections for 3D completion, which achieved state-of-the-art performances on several benchmarks.

Please contact us (Peng-Shuai Wang [email protected], Yang Liu [email protected] ) if you have any problems about our implementation.

Comments
  • tf branch questions

    tf branch questions

    Hi Peng-Shuai,

    I encountered two problems during using O-CNN tensorflow branch:

    • there is a points_database = _tf_ocnn_module.points_database # todo: delete this operator in /tensorflow/libs/__init__.py, is that ok to delete this line? otherwise I cannot compile the lib.
    • in /tensorflow/script/cls.py, it uses points_dataset in train_network function while the dataset is octree_dataset in test_network, is that correct or a typo?

    Thanks!

    opened by chenming-wu 11
  • imag2shape

    imag2shape

    Hi, I tried running your AO-CNN instructions (windows 2012), and everything worked great.

    But when I look at the .obj results in meshlab, all the patches seem to be either horizontal or 45 degrees almost no variation between those.

    it seems to get the general overall shape, but the patches are all either horizontal or the same 45 degree angle. So it looks like their are only 2 orientation for the patches.

    Is there a reason why this might be? I was expecting the results would look similar to those in the paper. I thought maybe it is because of low resolution in the provided dataset, but I think it is the same resolution as in the paper.

    I tried using a different mesh viewer for .obj but the meshes were the same.

    opened by FredFloopie 9
  •  Visualizing output file about segmentation

    Visualizing output file about segmentation

    Hello, thanks for your suggestions about how to get the .dat file yesterday. I want to visualize this segmentation task result, so I use octree2ply convert the .dat files to point cloud, and this is my command:Octree2Ply.exe test_label_groundtruth.dat 1. But when I run this command, I only get this: default I don't know how to solve it. Can you give me some suggestions again? Thank you!

    opened by xiankun1995 8
  • libocnn.so: cannot open shared object file: No such file or directory

    libocnn.so: cannot open shared object file: No such file or directory

    Hi, I followed the instalation instructions provided in https://github.com/microsoft/O-CNN/blob/master/docs/installation.md ,

    • install octree
    • insatll tensorflow with conda

    I fixed a problem with the math_functions.h file following your suggestion in #113 ,but i meet similar problem of https://github.com/microsoft/O-CNN/issues/129#issue-954664455.

    then follow the installation steps for tensorflow:

    conda create -n tf-1.14.0 tensorflow-gpu==1.14.0
    conda install -c conda-forge yacs tqdm
    conda activate tf-1.14.0
    cd tensorflow/libs
    python build.py
    

    but i got an error :

    tensorflow.python.framework.errors_impl.NotFoundError: /home/zstuxinxi/wy/O-CNN-master/tensorflow/libs/libocnn.so: cannot open shared object file: No such file or directory
    

    here is build log

    (tf-1.14.0) zstuxinxi@pai-worker3:~/wy/O-CNN-master/tensorflow/libs$ python build.py
    echo using g++ && cmake .. -DABI=ON -DKEY64=OFF && make -j all
    using g++
    -- octree: USE_CUDA
    -- The CUDA compiler identification is NVIDIA 10.1.105
    -- The CXX compiler identification is GNU 7.5.0
    -- The C compiler identification is GNU 7.5.0
    -- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc
    -- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc -- works
    -- Detecting CUDA compiler ABI info
    -- Detecting CUDA compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- octree: -D_GLIBCXX_USE_CXX11_ABI=0
    -- octree: USE_MINIBALL
    -- Found PythonInterp: /home/zstuxinxi/miniconda3/envs/tf-1.14.0/bin/python (found version "3.6.2")
    -- Looking for pthread.h
    -- Looking for pthread.h - found
    -- Looking for pthread_create
    -- Looking for pthread_create - not found
    -- Looking for pthread_create in pthreads
    -- Looking for pthread_create in pthreads - not found
    -- Looking for pthread_create in pthread
    -- Looking for pthread_create in pthread - found
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/zstuxinxi/wy/O-CNN-master/octree/build
    Scanning dependencies of target rply
    Scanning dependencies of target gtest
    Scanning dependencies of target octree_lib
    [  1%] Building C object CMakeFiles/rply.dir/external/octree-ext/rply-1.1.4/rply.c.o
    [  4%] Building CXX object CMakeFiles/octree_lib.dir/octree/contour.cpp.o
    [  4%] Building CXX object CMakeFiles/octree_lib.dir/octree/marching_cube.cpp.o
    [  4%] Building CXX object CMakeFiles/octree_lib.dir/octree/filenames.cpp.o
    [  4%] Building CXX object CMakeFiles/octree_lib.dir/octree/marching_cube_table.cpp.o
    [  5%] Building CXX object external/octree-ext/googletest/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
    [  6%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_info.cpp.o
    [  7%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree.cpp.o
    [  8%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_parser.cpp.o
    [ 10%] Building CXX object CMakeFiles/octree_lib.dir/octree/math_functions.cpp.o
    [ 10%] Building CXX object CMakeFiles/octree_lib.dir/octree/merge_octrees.cpp.o
    [ 10%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_nn.cpp.o
    [ 11%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_samples.cpp.o
    [ 12%] Building CXX object CMakeFiles/octree_lib.dir/octree/mesh.cpp.o
    [ 13%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_value.cpp.o
    [ 17%] Building CXX object CMakeFiles/octree_lib.dir/octree/simplify_points.cpp.o
    [ 14%] Building CUDA object CMakeFiles/octree_lib.dir/octree/octree_parser.cu.o
    [ 14%] Building CXX object CMakeFiles/octree_lib.dir/octree/transform_points.cpp.o
    [ 15%] Building CXX object CMakeFiles/octree_lib.dir/octree/points_info.cpp.o
    [ 16%] Building CXX object CMakeFiles/octree_lib.dir/octree/transform_octree.cpp.o
    [ 18%] Building CUDA object CMakeFiles/octree_lib.dir/octree/octree_nn.cu.o
    [ 19%] Building CXX object CMakeFiles/octree_lib.dir/octree/points.cpp.o
    [ 20%] Building CXX object CMakeFiles/octree_lib.dir/octree/points_parser.cpp.o
    [ 21%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_conv.cpp.o
    [ 22%] Linking C static library librply.a
    [ 22%] Built target rply
    [ 23%] Linking CXX static library ../../../../lib/libgtest.a
    [ 23%] Built target gtest
    Scanning dependencies of target gtest_main
    [ 25%] Building CXX object external/octree-ext/googletest/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
    [ 26%] Linking CXX static library ../../../../lib/libgtest_main.a
    [ 26%] Built target gtest_main
    [ 27%] Linking CXX static library liboctree_lib.a
    [ 27%] Built target octree_lib
    Scanning dependencies of target points_noise
    Scanning dependencies of target upgrade_octree
    Scanning dependencies of target octree_zbuffer
    Scanning dependencies of target octree_prune
    Scanning dependencies of target ply2points
    Scanning dependencies of target chamfer_distance
    Scanning dependencies of target octree2pts_suncg
    Scanning dependencies of target custom_data
    Scanning dependencies of target octree_test
    Scanning dependencies of target transform_points
    Scanning dependencies of target points2ply
    Scanning dependencies of target clip_points
    Scanning dependencies of target check_octree
    Scanning dependencies of target octree_bbox
    Scanning dependencies of target octree
    Scanning dependencies of target adaptive_octree
    Scanning dependencies of target bbox
    Scanning dependencies of target octree_dropout
    [ 28%] Building CXX object CMakeFiles/points2ply.dir/tools/points2ply.cpp.o
    [ 31%] Building CXX object CMakeFiles/octree_bbox.dir/tools/octree_bbox.cpp.o
    [ 32%] Building CXX object CMakeFiles/octree_zbuffer.dir/tools/octree_zbuffer.cpp.o
    Scanning dependencies of target mesh2points
    Scanning dependencies of target octree_samples
    [ 33%] Building CXX object CMakeFiles/custom_data.dir/tools/custom_data.cpp.o
    [ 34%] Building CXX object CMakeFiles/points_noise.dir/tools/points_noise.cpp.o
    Scanning dependencies of target merge_octree
    [ 34%] Building CXX object CMakeFiles/transform_points.dir/tools/transform_points.cpp.o
    Scanning dependencies of target octree2points
    [ 35%] Building CXX object CMakeFiles/bbox.dir/tools/bbox.cpp.o
    [ 36%] Building CXX object CMakeFiles/clip_points.dir/tools/clip_points.cpp.o
    Scanning dependencies of target upgrade_points
    [ 29%] Building CXX object CMakeFiles/octree2pts_suncg.dir/tools/octree2pts_suncg.cpp.o
    Scanning dependencies of target play_ground
    [ 30%] Building CXX object CMakeFiles/upgrade_octree.dir/tools/upgrade_octree.cpp.o
    Scanning dependencies of target octree2mesh
    [ 37%] Building CXX object CMakeFiles/octree.dir/tools/build_octree.cpp.o
    [ 38%] Building CXX object CMakeFiles/octree_prune.dir/tools/octree_prune.cpp.o
    [ 39%] Building CXX object CMakeFiles/check_octree.dir/tools/check_octree.cpp.o
    [ 40%] Building CXX object CMakeFiles/chamfer_distance.dir/tools/chamfer_distance.cpp.o
    [ 41%] Building CXX object CMakeFiles/octree_test.dir/test/test_octree_nn.cpp.o
    [ 42%] Building CXX object CMakeFiles/octree2points.dir/tools/octree2points.cpp.o
    [ 39%] Building CXX object CMakeFiles/adaptive_octree.dir/tools/adaptive_octree.cpp.o
    Scanning dependencies of target simplify_points
    [ 43%] Building CXX object CMakeFiles/octree_samples.dir/tools/octree_samples.cpp.o
    [ 44%] Building CXX object CMakeFiles/mesh2points.dir/tools/mesh2points.cpp.o
    [ 44%] Building CXX object CMakeFiles/merge_octree.dir/tools/merge_octree.cpp.o
    [ 45%] Building CXX object CMakeFiles/octree_test.dir/test/test_octree.cpp.o
    [ 46%] Building CXX object CMakeFiles/ply2points.dir/tools/ply2points.cpp.o
    [ 47%] Building CXX object CMakeFiles/octree_test.dir/test/test_util.cpp.o
    [ 48%] Building CXX object CMakeFiles/play_ground.dir/tools/play_ground.cpp.o
    [ 50%] Building CXX object CMakeFiles/octree2mesh.dir/tools/octree2mesh.cpp.o
    [ 51%] Building CXX object CMakeFiles/octree_dropout.dir/tools/octree_dropout.cpp.o
    [ 52%] Building CXX object CMakeFiles/upgrade_points.dir/tools/upgrade_points.cpp.o
    [ 53%] Building CXX object CMakeFiles/simplify_points.dir/tools/simplify_points.cpp.o
    [ 54%] Linking CUDA device code CMakeFiles/octree_zbuffer.dir/cmake_device_link.o
    [ 55%] Linking CUDA device code CMakeFiles/points_noise.dir/cmake_device_link.o
    [ 56%] Linking CUDA device code CMakeFiles/check_octree.dir/cmake_device_link.o
    [ 57%] Linking CUDA device code CMakeFiles/custom_data.dir/cmake_device_link.o
    [ 58%] Linking CUDA device code CMakeFiles/transform_points.dir/cmake_device_link.o
    [ 59%] Linking CUDA device code CMakeFiles/points2ply.dir/cmake_device_link.o
    [ 60%] Linking CUDA device code CMakeFiles/clip_points.dir/cmake_device_link.o
    [ 61%] Linking CUDA device code CMakeFiles/octree_bbox.dir/cmake_device_link.o
    [ 62%] Linking CUDA device code CMakeFiles/octree_samples.dir/cmake_device_link.o
    [ 63%] Linking CUDA device code CMakeFiles/mesh2points.dir/cmake_device_link.o
    [ 64%] Linking CXX executable points_noise
    [ 65%] Linking CUDA device code CMakeFiles/octree2mesh.dir/cmake_device_link.o
    [ 66%] Linking CUDA device code CMakeFiles/bbox.dir/cmake_device_link.o
    [ 66%] Linking CXX executable custom_data
    [ 67%] Linking CXX executable check_octree
    [ 67%] Linking CXX executable octree_zbuffer
    [ 68%] Linking CUDA device code CMakeFiles/merge_octree.dir/cmake_device_link.o
    [ 69%] Linking CXX executable octree_bbox
    [ 70%] Linking CUDA device code CMakeFiles/chamfer_distance.dir/cmake_device_link.o
    [ 70%] Linking CXX executable points2ply
    [ 71%] Linking CXX executable transform_points
    [ 72%] Linking CUDA device code CMakeFiles/simplify_points.dir/cmake_device_link.o
    [ 73%] Linking CXX executable clip_points
    [ 75%] Linking CUDA device code CMakeFiles/octree2points.dir/cmake_device_link.o
    [ 75%] Linking CXX executable octree_samples
    [ 76%] Linking CUDA device code CMakeFiles/octree2pts_suncg.dir/cmake_device_link.o
    [ 77%] Linking CUDA device code CMakeFiles/octree_test.dir/cmake_device_link.o
    [ 78%] Linking CUDA device code CMakeFiles/upgrade_points.dir/cmake_device_link.o
    [ 79%] Linking CUDA device code CMakeFiles/octree.dir/cmake_device_link.o
    [ 80%] Linking CUDA device code CMakeFiles/octree_prune.dir/cmake_device_link.o
    [ 81%] Linking CXX executable mesh2points
    [ 81%] Built target points_noise
    [ 82%] Linking CUDA device code CMakeFiles/play_ground.dir/cmake_device_link.o
    [ 83%] Linking CUDA device code CMakeFiles/adaptive_octree.dir/cmake_device_link.o
    [ 84%] Linking CUDA device code CMakeFiles/octree_dropout.dir/cmake_device_link.o
    [ 86%] Linking CUDA device code CMakeFiles/upgrade_octree.dir/cmake_device_link.o
    [ 85%] Linking CXX executable simplify_points
    [ 86%] Built target custom_data
    [ 87%] Linking CXX executable merge_octree
    [ 88%] Linking CXX executable octree2mesh
    [ 88%] Built target octree_samples
    [ 88%] Built target octree_zbuffer
    [ 88%] Built target clip_points
    [ 88%] Built target octree_bbox
    [ 88%] Built target check_octree
    [ 88%] Linking CXX executable chamfer_distance
    [ 89%] Linking CXX executable bbox
    [ 89%] Built target points2ply
    [ 89%] Built target transform_points
    [ 90%] Linking CXX executable octree2points
    [ 91%] Linking CXX executable octree_prune
    [ 92%] Linking CXX executable octree_test
    [ 93%] Linking CXX executable upgrade_points
    [ 93%] Linking CXX executable octree
    [ 93%] Linking CXX executable octree2pts_suncg
    [ 94%] Linking CXX executable adaptive_octree
    [ 94%] Built target merge_octree
    [ 95%] Linking CXX executable play_ground
    [ 96%] Linking CXX executable upgrade_octree
    [ 97%] Built target mesh2points
    [ 97%] Linking CXX executable octree_dropout
    [ 97%] Built target simplify_points
    [ 97%] Built target octree2mesh
    [ 97%] Built target octree2points
    [ 97%] Built target bbox
    [ 97%] Built target chamfer_distance
    [ 97%] Built target octree_prune
    [ 97%] Built target adaptive_octree
    [ 97%] Built target upgrade_points
    [ 97%] Built target octree2pts_suncg
    [ 97%] Built target octree
    [ 97%] Built target upgrade_octree
    [ 97%] Built target play_ground
    [ 97%] Built target octree_dropout
    [ 97%] Built target octree_test
    [ 98%] Linking CUDA device code CMakeFiles/ply2points.dir/cmake_device_link.o
    [100%] Linking CXX executable ply2points
    [100%] Built target ply2points
    Running main() from /home/zstuxinxi/wy/O-CNN-master/octree/external/octree-ext/googletest/googletest/src/gtest_main.cc
    [==========] Running 12 tests from 7 test suites.
    [----------] Global test environment set-up.
    [----------] 2 tests from OctreeTest
    [ RUN      ] OctreeTest.TestOctreeBuild
    [       OK ] OctreeTest.TestOctreeBuild (0 ms)
    [ RUN      ] OctreeTest.TestOctreeTrim
    [       OK ] OctreeTest.TestOctreeTrim (0 ms)
    [----------] 2 tests from OctreeTest (0 ms total)
    
    [----------] 1 test from VecResizeTest
    [ RUN      ] VecResizeTest.TestVecResize
    [       OK ] VecResizeTest.TestVecResize (0 ms)
    [----------] 1 test from VecResizeTest (0 ms total)
    
    [----------] 1 test from BiliearNeigh
    [ RUN      ] BiliearNeigh.TestBiliearNeigh
    [       OK ] BiliearNeigh.TestBiliearNeigh (0 ms)
    [----------] 1 test from BiliearNeigh (0 ms total)
    
    [----------] 1 test from Coord2xyzTest
    [ RUN      ] Coord2xyzTest.TestCoord2xyz
    [       OK ] Coord2xyzTest.TestCoord2xyz (0 ms)
    [----------] 1 test from Coord2xyzTest (0 ms total)
    
    [----------] 3 tests from UtilTest
    [ RUN      ] UtilTest.TestExtractPath
    [       OK ] UtilTest.TestExtractPath (0 ms)
    [ RUN      ] UtilTest.TestExtractFilename
    [       OK ] UtilTest.TestExtractFilename (0 ms)
    [ RUN      ] UtilTest.TestExtractSuffix
    [       OK ] UtilTest.TestExtractSuffix (0 ms)
    [----------] 3 tests from UtilTest (0 ms total)
    
    [----------] 2 tests from MeshTest
    [ RUN      ] MeshTest.TestFaceCenter
    [       OK ] MeshTest.TestFaceCenter (0 ms)
    [ RUN      ] MeshTest.TestFaceNormal
    [       OK ] MeshTest.TestFaceNormal (0 ms)
    [----------] 2 tests from MeshTest (0 ms total)
    
    [----------] 2 tests from MathTest
    [ RUN      ] MathTest.TestRotMatrix1
    [       OK ] MathTest.TestRotMatrix1 (0 ms)
    [ RUN      ] MathTest.TestRotMatrix2
    [       OK ] MathTest.TestRotMatrix2 (0 ms)
    [----------] 2 tests from MathTest (0 ms total)
    
    [----------] Global test environment tear-down
    [==========] 12 tests from 7 test suites ran. (0 ms total)
    [  PASSED  ] 12 tests.
    g++ -std=c++11 -O2 -c octree2col_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree2col_op.cc.o
    g++ -std=c++11 -O2 -c octree_align_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_align_op.cc.o
    g++ -std=c++11 -O2 -c octree_batch_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_batch_op.cc.o
    g++ -std=c++11 -O2 -c octree_bilinear_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_bilinear_op.cc.o
    g++ -std=c++11 -O2 -c octree_conv_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_conv_op.cc.o
    g++ -std=c++11 -O2 -c octree_gather_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_gather_op.cc.o
    g++ -std=c++11 -O2 -c octree_grow_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_grow_op.cc.o
    g++ -std=c++11 -O2 -c octree_key_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_key_op.cc.o
    g++ -std=c++11 -O2 -c octree_mask_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_mask_op.cc.o
    g++ -std=c++11 -O2 -c octree_max_pool_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_max_pool_op.cc.o
    g++ -std=c++11 -O2 -c octree_new_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_new_op.cc.o
    g++ -std=c++11 -O2 -c octree_pad_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_pad_op.cc.o
    g++ -std=c++11 -O2 -c octree_property_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_property_op.cc.o
    g++ -std=c++11 -O2 -c octree_samples.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_samples.cc.o
    g++ -std=c++11 -O2 -c octree_search_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_search_op.cc.o
    g++ -std=c++11 -O2 -c octree_set_property_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_set_property_op.cc.o
    g++ -std=c++11 -O2 -c octree_update_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/octree_update_op.cc.o
    g++ -std=c++11 -O2 -c points2octree_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/points2octree_op.cc.o
    g++ -std=c++11 -O2 -c points_property_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/points_property_op.cc.o
    g++ -std=c++11 -O2 -c points_set_property_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/points_set_property_op.cc.o
    g++ -std=c++11 -O2 -c transform_octree_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/transform_octree_op.cc.o
    g++ -std=c++11 -O2 -c transform_points_op.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include   -L /usr/local/cuda-10.1/lib64 -D GOOGLE_CUDA=1 -L/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow -l:libtensorflow_framework.so.1 -L../../octree/build -loctree_lib -fPIC -lcudart  -o object/transform_points_op.cc.o
    /usr/local/cuda-10.1/bin/nvcc -std=c++11 -O2 -c tensorflow_gpu_gemm.cu.cc -I/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include -D_GLIBCXX_USE_CXX11_ABI=0 -I../../octree/octree -I /usr/local/cuda-10.1/include -x cu -Xcompiler -fPIC -D GOOGLE_CUDA=1 -I /usr/local   -expt-relaxed-constexpr -DNDEBUG  -o object/tensorflow_gpu_gemm.cu.cc.o
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/absl/strings/string_view.h(495): warning: expression has no effect
    
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/absl/strings/string_view.h(495): warning: expression has no effect
    
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘void google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::SearchFrom(google::protobuf::Map<Key, T>::size_type) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::KeyValuePair; Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::size_type = long unsigned int]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:400:11:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::iterator_base(const google::protobuf::Map<Key, T>::InnerMap*) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::KeyValuePair; Key = std::basic_string<char>; T = tensorflow::AttrValue]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:516:28:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator google::protobuf::Map<Key, T>::InnerMap::begin() [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::InnerMap::iterator_base<google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1040:25:   required from ‘google::protobuf::Map<Key, T>::const_iterator google::protobuf::Map<Key, T>::begin() const [with Key = std::basic_string<char>; T = tensorflow::AttrValue]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/node_def_util.h:173:168:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:428:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
               ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:431:30: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsTree(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               } else if (m_->TableEntryIsTree(bucket_index_)) {
                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘bool google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::revalidate_if_necessary(google::protobuf::Map<Key, T>::InnerMap::TreeIterator*) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::KeyValuePair; Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::InnerMap::TreeIterator = std::_Rb_tree_const_iterator<std::basic_string<char>*>]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:610:12:   required from ‘void google::protobuf::Map<Key, T>::InnerMap::erase(google::protobuf::Map<Key, T>::InnerMap::iterator) [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::InnerMap::iterator_base<google::protobuf::Map<std::basic_string<char>, tensorflow::AttrValue>::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1139:1:   required from ‘google::protobuf::Map<Key, T>::iterator google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator) [with Key = std::basic_string<char>; T = tensorflow::AttrValue]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1144:14:   required from ‘void google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator, google::protobuf::Map<Key, T>::iterator) [with Key = std::basic_string<char>; T = tensorflow::AttrValue]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1147:21:   required from ‘void google::protobuf::Map<Key, T>::clear() [with Key = std::basic_string<char>; T = tensorflow::AttrValue]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map_field_inl.h:188:1:   required from ‘void google::protobuf::internal::MapField<Derived, Key, T, key_wire_type, value_wire_type, default_enum_value>::Clear() [with Derived = tensorflow::NameAttrList_AttrEntry_DoNotUse; Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::internal::WireFormatLite::FieldType kKeyFieldType = (google::protobuf::internal::WireFormatLite::FieldType)9; google::protobuf::internal::WireFormatLite::FieldType kValueFieldType = (google::protobuf::internal::WireFormatLite::FieldType)11; int default_enum_value = 0]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/attr_value.pb.h:1790:15:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:490:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:504:24: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = tensorflow::AttrValue; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             return m_->TableEntryIsList(bucket_index_);
             ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘void google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::SearchFrom(google::protobuf::Map<Key, T>::size_type) [with KeyValueType = google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::KeyValuePair; Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::size_type = long unsigned int]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:400:11:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::iterator_base(const google::protobuf::Map<Key, T>::InnerMap*) [with KeyValueType = google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::KeyValuePair; Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:516:28:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator google::protobuf::Map<Key, T>::InnerMap::begin() [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::InnerMap::iterator_base<google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1037:27:   required from ‘google::protobuf::Map<Key, T>::iterator google::protobuf::Map<Key, T>::begin() [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1147:27:   required from ‘void google::protobuf::Map<Key, T>::clear() [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map_field_inl.h:188:1:   required from ‘void google::protobuf::internal::MapField<Derived, Key, T, key_wire_type, value_wire_type, default_enum_value>::Clear() [with Derived = tensorflow::FunctionDef_ArgAttrEntry_DoNotUse; Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::internal::WireFormatLite::FieldType kKeyFieldType = (google::protobuf::internal::WireFormatLite::FieldType)13; google::protobuf::internal::WireFormatLite::FieldType kValueFieldType = (google::protobuf::internal::WireFormatLite::FieldType)11; int default_enum_value = 0]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/function.pb.h:1059:19:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:428:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
               ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:431:30: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsTree(google::protobuf::Map<Key, T>::size_type) const [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               } else if (m_->TableEntryIsTree(bucket_index_)) {
                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘bool google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::revalidate_if_necessary(google::protobuf::Map<Key, T>::InnerMap::TreeIterator*) [with KeyValueType = google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::KeyValuePair; Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::InnerMap::TreeIterator = std::_Rb_tree_const_iterator<unsigned int*>]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:610:12:   required from ‘void google::protobuf::Map<Key, T>::InnerMap::erase(google::protobuf::Map<Key, T>::InnerMap::iterator) [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::InnerMap::iterator_base<google::protobuf::Map<unsigned int, tensorflow::FunctionDef_ArgAttrs>::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1139:1:   required from ‘google::protobuf::Map<Key, T>::iterator google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator) [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1144:14:   required from ‘void google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator, google::protobuf::Map<Key, T>::iterator) [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1147:21:   required from ‘void google::protobuf::Map<Key, T>::clear() [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map_field_inl.h:188:1:   required from ‘void google::protobuf::internal::MapField<Derived, Key, T, key_wire_type, value_wire_type, default_enum_value>::Clear() [with Derived = tensorflow::FunctionDef_ArgAttrEntry_DoNotUse; Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::internal::WireFormatLite::FieldType kKeyFieldType = (google::protobuf::internal::WireFormatLite::FieldType)13; google::protobuf::internal::WireFormatLite::FieldType kValueFieldType = (google::protobuf::internal::WireFormatLite::FieldType)11; int default_enum_value = 0]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/function.pb.h:1059:19:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:490:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:504:24: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsList(google::protobuf::Map<Key, T>::size_type) const [with Key = unsigned int; T = tensorflow::FunctionDef_ArgAttrs; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             return m_->TableEntryIsList(bucket_index_);
             ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘void google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::SearchFrom(google::protobuf::Map<Key, T>::size_type) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::KeyValuePair; Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::size_type = long unsigned int]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:400:11:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::iterator_base(const google::protobuf::Map<Key, T>::InnerMap*) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::KeyValuePair; Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:516:28:   required from ‘google::protobuf::Map<Key, T>::InnerMap::iterator google::protobuf::Map<Key, T>::InnerMap::begin() [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::InnerMap::iterator_base<google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1037:27:   required from ‘google::protobuf::Map<Key, T>::iterator google::protobuf::Map<Key, T>::begin() [with Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1147:27:   required from ‘void google::protobuf::Map<Key, T>::clear() [with Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map_field_inl.h:188:1:   required from ‘void google::protobuf::internal::MapField<Derived, Key, T, key_wire_type, value_wire_type, default_enum_value>::Clear() [with Derived = tensorflow::FunctionDef_RetEntry_DoNotUse; Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::internal::WireFormatLite::FieldType kKeyFieldType = (google::protobuf::internal::WireFormatLite::FieldType)9; google::protobuf::internal::WireFormatLite::FieldType kValueFieldType = (google::protobuf::internal::WireFormatLite::FieldType)9; int default_enum_value = 0]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/function.pb.h:1104:14:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:428:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
               ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:431:30: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsTree(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
               } else if (m_->TableEntryIsTree(bucket_index_)) {
                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h: In instantiation of ‘bool google::protobuf::Map<Key, T>::InnerMap::iterator_base<KeyValueType>::revalidate_if_necessary(google::protobuf::Map<Key, T>::InnerMap::TreeIterator*) [with KeyValueType = google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::KeyValuePair; Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::InnerMap::TreeIterator = std::_Rb_tree_const_iterator<std::basic_string<char>*>]’:
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:610:12:   required from ‘void google::protobuf::Map<Key, T>::InnerMap::erase(google::protobuf::Map<Key, T>::InnerMap::iterator) [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::InnerMap::iterator = google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::InnerMap::iterator_base<google::protobuf::Map<std::basic_string<char>, std::basic_string<char> >::KeyValuePair>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1139:1:   required from ‘google::protobuf::Map<Key, T>::iterator google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator) [with Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1144:14:   required from ‘void google::protobuf::Map<Key, T>::erase(google::protobuf::Map<Key, T>::iterator, google::protobuf::Map<Key, T>::iterator) [with Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:1147:21:   required from ‘void google::protobuf::Map<Key, T>::clear() [with Key = std::basic_string<char>; T = std::basic_string<char>]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map_field_inl.h:188:1:   required from ‘void google::protobuf::internal::MapField<Derived, Key, T, key_wire_type, value_wire_type, default_enum_value>::Clear() [with Derived = tensorflow::FunctionDef_RetEntry_DoNotUse; Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::internal::WireFormatLite::FieldType kKeyFieldType = (google::protobuf::internal::WireFormatLite::FieldType)9; google::protobuf::internal::WireFormatLite::FieldType kValueFieldType = (google::protobuf::internal::WireFormatLite::FieldType)9; int default_enum_value = 0]’
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/framework/function.pb.h:1104:14:   required from here
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:490:29: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsNonEmptyList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    /home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/include/google/protobuf/map.h:504:24: error: cannot call member function ‘bool google::protobuf::Map<Key, T>::InnerMap::TableEntryIsList(google::protobuf::Map<Key, T>::size_type) const [with Key = std::basic_string<char>; T = std::basic_string<char>; google::protobuf::Map<Key, T>::size_type = long unsigned int]’ without object
             return m_->TableEntryIsList(bucket_index_);
             ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
    Makefile:91: recipe for target 'object/tensorflow_gpu_gemm.cu.cc.o' failed
    make: *** [object/tensorflow_gpu_gemm.cu.cc.o] Error 1
    INFO from ocnn: The octree key is 32 bits, the octree depth should be smaller than 8.
    Traceback (most recent call last):
      File "test_all.py", line 5, in <module>
        from test_octree2col import Octree2ColTest
      File "/home/zstuxinxi/wy/O-CNN-master/tensorflow/test/test_octree2col.py", line 8, in <module>
        from libs import *
      File "../libs/__init__.py", line 20, in <module>
        _tf_ocnn_module = tf.load_op_library(os.path.join(_current_path, 'libocnn.so'))
      File "/home/zstuxinxi/miniconda3/envs/tf-1.14.0/lib/python3.6/site-packages/tensorflow/python/framework/load_library.py", line 61, in load_op_library
        lib_handle = py_tf.TF_LoadLibrary(library_filename)
    tensorflow.python.framework.errors_impl.NotFoundError: /home/zstuxinxi/wy/O-CNN-master/tensorflow/libs/libocnn.so: cannot open shared object file: No such file or directory
    
    

    my ubuntu version is 18.04 and the cuda version is 10.1 , i also check the CUDA environment, but have no idea

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=/usr/local/cuda/bin:$PATH
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
    export CPATH=/usr/local/cuda/targets/x86_64-linux/include:$CPATH
    

    Any help would be greatly appreciated.

    opened by flyKite1998 7
  • How to build a GAN with O-CNN ?

    How to build a GAN with O-CNN ?

    Hi, I am trying to build a GAN network with your O-CNN code. Here are some problems I want to ask:

    1. During the forward process of convolution, does the input octree changes? or it is just for index.
    2. How can I constract a decoder as the generator of GAN? Should I create a original octree as one of the inputs? And how?
    3. Is there anything else I need to know for constracting a decoder?
    opened by TrepangCat 7
  • Question about data

    Question about data

    Hello. I can run the train mode and test mode with the lmdb files you gave in segmentation task. But the program will stop running when I use my files. My files is obj format, and I convert it to lmdb format. Then I start train mode but program stop running. If the data have special requirements in segmentation task? Please give me some suggestion. Thank you!

    opened by xiankun1995 7
  • Compile error: O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/transform_points.o: No such file or directory

    Compile error: O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/transform_points.o: No such file or directory

    I follow the guidance in https://github.com/microsoft/O-CNN/blob/master/docs/installation.md to compile the octree. However, after I run the code

    cd octree/external && git clone --recursive https://github.com/wang-ps/octree-ext.git
    cd .. && mkdir build && cd build
    cmake ..  && cmake --build . --config Release
    

    I have a slight modification here: change the following code in anaconda's cpp_extension.py

    def _run_ninja_build(build_directory: str, verbose: bool, error_prefix: str) -> None:
        command = ['ninja', '-v']
    

    to

    def _run_ninja_build(build_directory: str, verbose: bool, error_prefix: str) -> None:
        # command = ['ninja', '-v']
        command = ['ninja', '--version']
    

    Here is the running result:

    (base) -bash-4.2$ cmake ..  && cmake --build . --config Release
    -- octree: USE_CUDA
    -- octree: -D_GLIBCXX_USE_CXX11_ABI=1
    -- octree: USE_MINIBALL
    CMake Deprecation Warning at external/octree-ext/googletest/CMakeLists.txt:4 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    CMake Deprecation Warning at external/octree-ext/googletest/googlemock/CMakeLists.txt:45 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    CMake Deprecation Warning at external/octree-ext/googletest/googletest/CMakeLists.txt:56 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    -- Configuring done
    CMake Warning (dev) in CMakeLists.txt:
      Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
      empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
      for policy details.  Use the cmake_policy command to set the policy and
      suppress this warning.
    
      CUDA_ARCHITECTURES is empty for target "octree_lib".
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Generating done
    -- Build files have been written to: /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/build
    [ 27%] Built target octree_lib
    [ 30%] Built target upgrade_points
    [ 32%] Built target gtest
    [ 34%] Built target gtest_main
    [ 39%] Built target octree_test
    [ 42%] Built target upgrade_octree
    [ 44%] Built target transform_points
    [ 46%] Built target simplify_points
    [ 49%] Built target points_noise
    [ 51%] Built target check_octree
    [ 54%] Built target chamfer_distance
    [ 56%] Built target ply2points
    [ 59%] Built target octree
    [ 61%] Built target clip_points
    [ 63%] Built target adaptive_octree
    [ 66%] Built target rply
    [ 68%] Built target octree2mesh
    [ 71%] Built target merge_octree
    [ 73%] Built target custom_data
    [ 75%] Built target octree2pts_suncg
    [ 78%] Built target octree_samples
    [ 80%] Built target octree_zbuffer
    [ 83%] Built target bbox
    [ 85%] Built target mesh2points
    [ 87%] Built target octree2points
    [ 90%] Built target octree_bbox
    [ 92%] Built target octree_prune
    [ 95%] Built target octree_dropout
    [ 97%] Built target points2ply
    [100%] Built target play_ground
    

    I find the directory O-CNN/octree/build/bin is empty. Then, I set the PATH to O-CNN/octree/build/:$PATH. Later, I build O-CNN with the code:

    cd pytorch
    python setup.py install --build_octree
    

    Here is the error:

    (base) -bash-4.2$ python setup.py install --build_octree
    mkdir /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/build && cd /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/build && cmake .. -DABI=ON -DKEY64=ON  && cmake --build . --config Release && ./octree_test
    -- octree: USE_CUDA
    -- The CUDA compiler identification is NVIDIA 10.2.89
    -- The CXX compiler identification is GNU 8.3.0
    -- The C compiler identification is GNU 8.3.0
    -- Detecting CUDA compiler ABI info
    -- Detecting CUDA compiler ABI info - done
    -- Check for working CUDA compiler: /export/data/lwangcg/cuda-10.2/bin/nvcc - skipped
    -- Detecting CUDA compile features
    -- Detecting CUDA compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/local/GNU/gcc-8.3.0/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /usr/local/GNU/gcc-8.3.0/bin/gcc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- octree: -D_GLIBCXX_USE_CXX11_ABI=0
    -- octree: USE_MINIBALL
    -- octree: KEY64
    CMake Deprecation Warning at external/octree-ext/googletest/CMakeLists.txt:4 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    CMake Deprecation Warning at external/octree-ext/googletest/googlemock/CMakeLists.txt:45 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    CMake Deprecation Warning at external/octree-ext/googletest/googletest/CMakeLists.txt:56 (cmake_minimum_required):
      Compatibility with CMake < 2.8.12 will be removed from a future version of
      CMake.
    
      Update the VERSION argument <min> value or use a ...<max> suffix to tell
      CMake that the project does not need compatibility with older versions.
    
    
    -- Found PythonInterp: /export/data/lwangcg/anaconda3/bin/python (found version "3.7.4")
    -- Looking for pthread.h
    -- Looking for pthread.h - found
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
    -- Looking for pthread_create in pthreads
    -- Looking for pthread_create in pthreads - not found
    -- Looking for pthread_create in pthread
    -- Looking for pthread_create in pthread - found
    -- Found Threads: TRUE
    -- Configuring done
    CMake Warning (dev) in CMakeLists.txt:
      Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
      empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
      for policy details.  Use the cmake_policy command to set the policy and
      suppress this warning.
    
      CUDA_ARCHITECTURES is empty for target "octree_lib".
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Generating done
    -- Build files have been written to: /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/build
    Scanning dependencies of target octree_lib
    [  1%] Building CXX object CMakeFiles/octree_lib.dir/octree/contour.cpp.o
    [  2%] Building CXX object CMakeFiles/octree_lib.dir/octree/filenames.cpp.o
    [  3%] Building CXX object CMakeFiles/octree_lib.dir/octree/marching_cube.cpp.o
    [  4%] Building CXX object CMakeFiles/octree_lib.dir/octree/marching_cube_table.cpp.o
    [  6%] Building CXX object CMakeFiles/octree_lib.dir/octree/math_functions.cpp.o
    [  7%] Building CXX object CMakeFiles/octree_lib.dir/octree/merge_octrees.cpp.o
    [  8%] Building CXX object CMakeFiles/octree_lib.dir/octree/mesh.cpp.o
    [  9%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree.cpp.o
    [ 10%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_conv.cpp.o
    [ 12%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_info.cpp.o
    [ 13%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_nn.cpp.o
    [ 14%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_parser.cpp.o
    [ 15%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_samples.cpp.o
    [ 16%] Building CXX object CMakeFiles/octree_lib.dir/octree/octree_value.cpp.o
    [ 18%] Building CXX object CMakeFiles/octree_lib.dir/octree/points.cpp.o
    [ 19%] Building CXX object CMakeFiles/octree_lib.dir/octree/points_info.cpp.o
    [ 20%] Building CXX object CMakeFiles/octree_lib.dir/octree/points_parser.cpp.o
    [ 21%] Building CXX object CMakeFiles/octree_lib.dir/octree/simplify_points.cpp.o
    [ 22%] Building CXX object CMakeFiles/octree_lib.dir/octree/transform_octree.cpp.o
    [ 24%] Building CXX object CMakeFiles/octree_lib.dir/octree/transform_points.cpp.o
    [ 25%] Building CUDA object CMakeFiles/octree_lib.dir/octree/octree_nn.cu.o
    [ 26%] Building CUDA object CMakeFiles/octree_lib.dir/octree/octree_parser.cu.o
    [ 27%] Linking CXX static library liboctree_lib.a
    [ 27%] Built target octree_lib
    Scanning dependencies of target upgrade_points
    [ 28%] Building CXX object CMakeFiles/upgrade_points.dir/tools/upgrade_points.cpp.o
    [ 30%] Linking CXX executable upgrade_points
    [ 30%] Built target upgrade_points
    Scanning dependencies of target gtest
    [ 31%] Building CXX object external/octree-ext/googletest/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
    [ 32%] Linking CXX static library ../../../../lib/libgtest.a
    [ 32%] Built target gtest
    Scanning dependencies of target gtest_main
    [ 33%] Building CXX object external/octree-ext/googletest/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
    [ 34%] Linking CXX static library ../../../../lib/libgtest_main.a
    [ 34%] Built target gtest_main
    Scanning dependencies of target octree_test
    [ 36%] Building CXX object CMakeFiles/octree_test.dir/test/test_octree.cpp.o
    [ 37%] Building CXX object CMakeFiles/octree_test.dir/test/test_octree_nn.cpp.o
    [ 38%] Building CXX object CMakeFiles/octree_test.dir/test/test_util.cpp.o
    [ 39%] Linking CXX executable octree_test
    [ 39%] Built target octree_test
    Scanning dependencies of target upgrade_octree
    [ 40%] Building CXX object CMakeFiles/upgrade_octree.dir/tools/upgrade_octree.cpp.o
    [ 42%] Linking CXX executable upgrade_octree
    [ 42%] Built target upgrade_octree
    Scanning dependencies of target transform_points
    [ 43%] Building CXX object CMakeFiles/transform_points.dir/tools/transform_points.cpp.o
    [ 44%] Linking CXX executable transform_points
    [ 44%] Built target transform_points
    Scanning dependencies of target simplify_points
    [ 45%] Building CXX object CMakeFiles/simplify_points.dir/tools/simplify_points.cpp.o
    [ 46%] Linking CXX executable simplify_points
    [ 46%] Built target simplify_points
    Scanning dependencies of target points_noise
    [ 48%] Building CXX object CMakeFiles/points_noise.dir/tools/points_noise.cpp.o
    [ 49%] Linking CXX executable points_noise
    [ 49%] Built target points_noise
    Scanning dependencies of target check_octree
    [ 50%] Building CXX object CMakeFiles/check_octree.dir/tools/check_octree.cpp.o
    [ 51%] Linking CXX executable check_octree
    [ 51%] Built target check_octree
    Scanning dependencies of target chamfer_distance
    [ 53%] Building CXX object CMakeFiles/chamfer_distance.dir/tools/chamfer_distance.cpp.o
    [ 54%] Linking CXX executable chamfer_distance
    [ 54%] Built target chamfer_distance
    Scanning dependencies of target ply2points
    [ 55%] Building CXX object CMakeFiles/ply2points.dir/tools/ply2points.cpp.o
    [ 56%] Linking CXX executable ply2points
    [ 56%] Built target ply2points
    Scanning dependencies of target octree
    [ 57%] Building CXX object CMakeFiles/octree.dir/tools/build_octree.cpp.o
    [ 59%] Linking CXX executable octree
    [ 59%] Built target octree
    Scanning dependencies of target clip_points
    [ 60%] Building CXX object CMakeFiles/clip_points.dir/tools/clip_points.cpp.o
    [ 61%] Linking CXX executable clip_points
    [ 61%] Built target clip_points
    Scanning dependencies of target adaptive_octree
    [ 62%] Building CXX object CMakeFiles/adaptive_octree.dir/tools/adaptive_octree.cpp.o
    [ 63%] Linking CXX executable adaptive_octree
    [ 63%] Built target adaptive_octree
    Scanning dependencies of target rply
    [ 65%] Building C object CMakeFiles/rply.dir/external/octree-ext/rply-1.1.4/rply.c.o
    [ 66%] Linking C static library librply.a
    [ 66%] Built target rply
    Scanning dependencies of target octree2mesh
    [ 67%] Building CXX object CMakeFiles/octree2mesh.dir/tools/octree2mesh.cpp.o
    [ 68%] Linking CXX executable octree2mesh
    [ 68%] Built target octree2mesh
    Scanning dependencies of target merge_octree
    [ 69%] Building CXX object CMakeFiles/merge_octree.dir/tools/merge_octree.cpp.o
    [ 71%] Linking CXX executable merge_octree
    [ 71%] Built target merge_octree
    Scanning dependencies of target custom_data
    [ 72%] Building CXX object CMakeFiles/custom_data.dir/tools/custom_data.cpp.o
    [ 73%] Linking CXX executable custom_data
    [ 73%] Built target custom_data
    Scanning dependencies of target octree2pts_suncg
    [ 74%] Building CXX object CMakeFiles/octree2pts_suncg.dir/tools/octree2pts_suncg.cpp.o
    [ 75%] Linking CXX executable octree2pts_suncg
    [ 75%] Built target octree2pts_suncg
    Scanning dependencies of target octree_samples
    [ 77%] Building CXX object CMakeFiles/octree_samples.dir/tools/octree_samples.cpp.o
    [ 78%] Linking CXX executable octree_samples
    [ 78%] Built target octree_samples
    Scanning dependencies of target octree_zbuffer
    [ 79%] Building CXX object CMakeFiles/octree_zbuffer.dir/tools/octree_zbuffer.cpp.o
    [ 80%] Linking CXX executable octree_zbuffer
    [ 80%] Built target octree_zbuffer
    Scanning dependencies of target bbox
    [ 81%] Building CXX object CMakeFiles/bbox.dir/tools/bbox.cpp.o
    [ 83%] Linking CXX executable bbox
    [ 83%] Built target bbox
    Scanning dependencies of target mesh2points
    [ 84%] Building CXX object CMakeFiles/mesh2points.dir/tools/mesh2points.cpp.o
    [ 85%] Linking CXX executable mesh2points
    [ 85%] Built target mesh2points
    Scanning dependencies of target octree2points
    [ 86%] Building CXX object CMakeFiles/octree2points.dir/tools/octree2points.cpp.o
    [ 87%] Linking CXX executable octree2points
    [ 87%] Built target octree2points
    Scanning dependencies of target octree_bbox
    [ 89%] Building CXX object CMakeFiles/octree_bbox.dir/tools/octree_bbox.cpp.o
    [ 90%] Linking CXX executable octree_bbox
    [ 90%] Built target octree_bbox
    Scanning dependencies of target octree_prune
    [ 91%] Building CXX object CMakeFiles/octree_prune.dir/tools/octree_prune.cpp.o
    [ 92%] Linking CXX executable octree_prune
    [ 92%] Built target octree_prune
    Scanning dependencies of target octree_dropout
    [ 93%] Building CXX object CMakeFiles/octree_dropout.dir/tools/octree_dropout.cpp.o
    [ 95%] Linking CXX executable octree_dropout
    [ 95%] Built target octree_dropout
    Scanning dependencies of target points2ply
    [ 96%] Building CXX object CMakeFiles/points2ply.dir/tools/points2ply.cpp.o
    [ 97%] Linking CXX executable points2ply
    [ 97%] Built target points2ply
    Scanning dependencies of target play_ground
    [ 98%] Building CXX object CMakeFiles/play_ground.dir/tools/play_ground.cpp.o
    [100%] Linking CXX executable play_ground
    [100%] Built target play_ground
    Running main() from /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/external/octree-ext/googletest/googletest/src/gtest_main.cc
    [==========] Running 12 tests from 7 test suites.
    [----------] Global test environment set-up.
    [----------] 2 tests from OctreeTest
    [ RUN      ] OctreeTest.TestOctreeBuild
    /export/data/lwangcg/Vis-MVSNet/O-CNN/octree/test/test_octree.cpp:193: Failure
    Expected equality of these values:
      octree_value.fval(16.5f, 16.5f, 0.5f).first
        Which is: -0.492761
      -0.5f
        Which is: -0.5
    [  FAILED  ] OctreeTest.TestOctreeBuild (0 ms)
    [ RUN      ] OctreeTest.TestOctreeTrim
    [       OK ] OctreeTest.TestOctreeTrim (1 ms)
    [----------] 2 tests from OctreeTest (1 ms total)
    
    [----------] 1 test from VecResizeTest
    [ RUN      ] VecResizeTest.TestVecResize
    [       OK ] VecResizeTest.TestVecResize (0 ms)
    [----------] 1 test from VecResizeTest (0 ms total)
    
    [----------] 1 test from BiliearNeigh
    [ RUN      ] BiliearNeigh.TestBiliearNeigh
    [       OK ] BiliearNeigh.TestBiliearNeigh (1 ms)
    [----------] 1 test from BiliearNeigh (1 ms total)
    
    [----------] 1 test from Coord2xyzTest
    [ RUN      ] Coord2xyzTest.TestCoord2xyz
    [       OK ] Coord2xyzTest.TestCoord2xyz (0 ms)
    [----------] 1 test from Coord2xyzTest (0 ms total)
    
    [----------] 3 tests from UtilTest
    [ RUN      ] UtilTest.TestExtractPath
    [       OK ] UtilTest.TestExtractPath (0 ms)
    [ RUN      ] UtilTest.TestExtractFilename
    [       OK ] UtilTest.TestExtractFilename (0 ms)
    [ RUN      ] UtilTest.TestExtractSuffix
    [       OK ] UtilTest.TestExtractSuffix (0 ms)
    [----------] 3 tests from UtilTest (0 ms total)
    
    [----------] 2 tests from MeshTest
    [ RUN      ] MeshTest.TestFaceCenter
    [       OK ] MeshTest.TestFaceCenter (0 ms)
    [ RUN      ] MeshTest.TestFaceNormal
    [       OK ] MeshTest.TestFaceNormal (0 ms)
    [----------] 2 tests from MeshTest (0 ms total)
    
    [----------] 2 tests from MathTest
    [ RUN      ] MathTest.TestRotMatrix1
    [       OK ] MathTest.TestRotMatrix1 (0 ms)
    [ RUN      ] MathTest.TestRotMatrix2
    [       OK ] MathTest.TestRotMatrix2 (0 ms)
    [----------] 2 tests from MathTest (0 ms total)
    
    [----------] Global test environment tear-down
    [==========] 12 tests from 7 test suites ran. (3 ms total)
    [  PASSED  ] 11 tests.
    [  FAILED  ] 1 test, listed below:
    [  FAILED  ] OctreeTest.TestOctreeBuild
    
     1 FAILED TEST
    running install
    running bdist_egg
    running egg_info
    writing ocnn.egg-info/PKG-INFO
    writing dependency_links to ocnn.egg-info/dependency_links.txt
    writing requirements to ocnn.egg-info/requires.txt
    writing top-level names to ocnn.egg-info/top_level.txt
    reading manifest file 'ocnn.egg-info/SOURCES.txt'
    writing manifest file 'ocnn.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-x86_64/egg
    running install_lib
    running build_py
    running build_ext
    building 'ocnn.nn' extension
    Emitting ninja build file /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/build.ninja...
    Compiling objects...
    Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
    1.6.0
    g++ -pthread -shared -B /data/lwangcg/anaconda3/compiler_compat -L/data/lwangcg/anaconda3/lib -Wl,-rpath=/data/lwangcg/anaconda3/lib -Wl,--no-as-needed -Wl,--sysroot=/ -I/export/data/lwangcg/cuda-10.2/include -I/export/data/lwangcg/cuda-10.2/include -I/export/data/lwangcg/cuda-10.2/include -I/export/data/lwangcg/cuda-10.2/include /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree2col.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_batch.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_conv.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_pad.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_pool.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_property.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/octree_samples.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/point2octree.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/pybind.o /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/transform_points.o -L/export/data/lwangcg/Vis-MVSNet/O-CNN/octree/build -L/export/data/lwangcg/anaconda3/lib/python3.7/site-packages/torch/lib -L/export/data/lwangcg/cuda-10.2/lib64 -loctree_lib -lcublas -lc10 -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda -o build/lib.linux-x86_64-3.7/ocnn/nn.cpython-37m-x86_64-linux-gnu.so
    g++: error: /export/data/lwangcg/Vis-MVSNet/O-CNN/pytorch/build/temp.linux-x86_64-3.7/./cpp/transform_points.o: No such file or directory
    error: command 'g++' failed with exit status 1
    
    opened by NoOneUST 6
  • nvcc fatal : Unknown option flto

    nvcc fatal : Unknown option flto

    upon running cmake ../ as shown in installation instructions no error is encountered, however upon running cmake --build . --config Release the following error is obtained -

    [ 96%] Built target ply2points Scanning dependencies of target pyoctree [ 97%] Building CXX object python/CMakeFiles/pyoctree.dir/pyoctree.cpp.o [ 98%] Linking CUDA device code CMakeFiles/pyoctree.dir/cmake_device_link.o nvcc fatal : Unknown option 'flto' python/CMakeFiles/pyoctree.dir/build.make:84: recipe for target 'python/CMakeFiles/pyoctree.dir/cmake_device_link.o' failed make[2]: *** [python/CMakeFiles/pyoctree.dir/cmake_device_link.o] Error 1 CMakeFiles/Makefile2:1017: recipe for target 'python/CMakeFiles/pyoctree.dir/all' failed make[1]: *** [python/CMakeFiles/pyoctree.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

    What could be a possible reason for the same ?

    opened by aradhyamathur 6
  • Validate the model

    Validate the model

    Hello, would you like to ask how do you perform a verification test on the trained model and what kind of file is the test, is it .off or .points, or an octree file? I want to use your model for pre-train, but I have the following problem:

    Cannot copy param 0 weights from layer 'ip2'; shape mismatch. Source param shape is 40 128 (5120); target param shape is 5 128 (640). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.

    你好,想请问您如何对训练好的模型进行验证测试,测试的档案类别为何,是.off还是.points,或是octree档

    opened by eric85810 6
  • tf codes

    tf codes

    When I run the dataset.py to get the tensor of tfrecords,the results of the tensor's shape is ?,and i do not konw how to solve it. like this: Use for ... in dataset: to iterate over a dataset. If using tf.estimator, return the Dataset object directly from your input function. As a last resort, you can use tf.compat.v1.data.make_one_shot_iterator(dataset). Tensor("octree_dataset/IteratorGetNext:0", shape=(?,), dtype=int8) Tensor("octree_dataset/IteratorGetNext:1", shape=(?,), dtype=int64) Tensor("octree_encoder/depth_2/octree_max_pool/OctreePad:0", shape=(1, 128, ?, 1), dtype=float32) is that right? when I reomove batch(batch_size) , I meet this problem: tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 1 but is rank 0 for 'ParseExample/ParseExample' (op: 'ParseExample') with input shapes: [], [0], [], [], [0], [0].

    opened by CRISZJ 6
  • how to prepare data if my point cloud has no normal information

    how to prepare data if my point cloud has no normal information

    hi i am new 1: i want to know if my point cloud has no normal information, how to prepare my input data and where i have to modify, whether is the input data channel? 2: how to convert the final result to point cloud?

    opened by gaoshang100 6
Releases(ocnn-3.0)
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
Code for "Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks", CVPR 2021

Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks This repository contains the code that accompanies our CVPR 20

Despoina Paschalidou 161 Dec 20, 2022
Scripts for training an AI to play the endless runner Subway Surfers using a supervised machine learning approach by imitation and a convolutional neural network (CNN) for image classification

About subwAI subwAI - a project for training an AI to play the endless runner Subway Surfers using a supervised machine learning approach by imitation

null 82 Jan 1, 2023
NFT-Price-Prediction-CNN - Using visual feature extraction, prices of NFTs are predicted via CNN (Alexnet and Resnet) architectures.

NFT-Price-Prediction-CNN - Using visual feature extraction, prices of NFTs are predicted via CNN (Alexnet and Resnet) architectures.

null 5 Nov 3, 2022
PyTorch implementation of ShapeConv: Shape-aware Convolutional Layer for RGB-D Indoor Semantic Segmentation.

Shape-aware Convolutional Layer (ShapeConv) PyTorch implementation of ShapeConv: Shape-aware Convolutional Layer for RGB-D Indoor Semantic Segmentatio

Hanchao Leng 82 Dec 29, 2022
Search and filter videos based on objects that appear in them using convolutional neural networks

Thingscoop: Utility for searching and filtering videos based on their content Description Thingscoop is a command-line utility for analyzing videos se

Anastasis Germanidis 354 Dec 4, 2022
PyTorch implementation of convolutional neural networks-based text-to-speech synthesis models

Deepvoice3_pytorch PyTorch implementation of convolutional networks-based text-to-speech synthesis models: arXiv:1710.07654: Deep Voice 3: Scaling Tex

Ryuichi Yamamoto 1.8k Jan 8, 2023
Temporal Dynamic Convolutional Neural Network for Text-Independent Speaker Verification and Phonemetic Analysis

TDY-CNN for Text-Independent Speaker Verification Official implementation of Temporal Dynamic Convolutional Neural Network for Text-Independent Speake

Seong-Hu Kim 16 Oct 17, 2022
Complex-Valued Neural Networks (CVNN)Complex-Valued Neural Networks (CVNN)

Complex-Valued Neural Networks (CVNN) Done by @NEGU93 - J. Agustin Barrachina Using this library, the only difference with a Tensorflow code is that y

youceF 1 Nov 12, 2021
Code for our ICASSP 2021 paper: SA-Net: Shuffle Attention for Deep Convolutional Neural Networks

SA-Net: Shuffle Attention for Deep Convolutional Neural Networks (paper) By Qing-Long Zhang and Yu-Bin Yang [State Key Laboratory for Novel Software T

Qing-Long Zhang 199 Jan 8, 2023
《Truly shift-invariant convolutional neural networks》(2021)

Truly shift-invariant convolutional neural networks [Paper] Authors: Anadi Chaman and Ivan Dokmanić Convolutional neural networks were always assumed

Anadi Chaman 46 Dec 19, 2022
Spontaneous Facial Micro Expression Recognition using 3D Spatio-Temporal Convolutional Neural Networks

Spontaneous Facial Micro Expression Recognition using 3D Spatio-Temporal Convolutional Neural Networks Abstract Facial expression recognition in video

Bogireddy Sai Prasanna Teja Reddy 103 Dec 29, 2022
This project is a loose implementation of paper "Algorithmic Financial Trading with Deep Convolutional Neural Networks: Time Series to Image Conversion Approach"

Stock Market Buy/Sell/Hold prediction Using convolutional Neural Network This repo is an attempt to implement the research paper titled "Algorithmic F

Asutosh Nayak 136 Dec 28, 2022
Fine-tune pretrained Convolutional Neural Networks with PyTorch

Fine-tune pretrained Convolutional Neural Networks with PyTorch. Features Gives access to the most popular CNN architectures pretrained on ImageNet. A

Alex Parinov 694 Nov 23, 2022
Pytorch implementation of AngularGrad: A New Optimization Technique for Angular Convergence of Convolutional Neural Networks

AngularGrad Optimizer This repository contains the oficial implementation for AngularGrad: A New Optimization Technique for Angular Convergence of Con

mario 124 Sep 16, 2022
PyTorch implementation of "ContextNet: Improving Convolutional Neural Networks for Automatic Speech Recognition with Global Context" (INTERSPEECH 2020)

ContextNet ContextNet has CNN-RNN-transducer architecture and features a fully convolutional encoder that incorporates global context information into

Sangchun Ha 24 Nov 24, 2022
A PyTorch implementation of " EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks."

EfficientNet A PyTorch implementation of EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. [arxiv] [Official TF Repo] Implemen

AhnDW 298 Dec 10, 2022
Learning and Building Convolutional Neural Networks using PyTorch

Image Classification Using Deep Learning Learning and Building Convolutional Neural Networks using PyTorch. Models, selected are based on number of ci

Mayur 126 Dec 22, 2022
An implementation of paper `Real-time Convolutional Neural Networks for Emotion and Gender Classification` with PaddlePaddle.

简介 通过PaddlePaddle框架复现了论文 Real-time Convolutional Neural Networks for Emotion and Gender Classification 中提出的两个模型,分别是SimpleCNN和MiniXception。利用 imdb_crop

null 8 Mar 11, 2022
PyTorch Implementation of [1611.06440] Pruning Convolutional Neural Networks for Resource Efficient Inference

PyTorch implementation of [1611.06440 Pruning Convolutional Neural Networks for Resource Efficient Inference] This demonstrates pruning a VGG16 based

Jacob Gildenblat 836 Dec 26, 2022