Coder Social home page Coder Social logo

microsoft / o-cnn Goto Github PK

View Code? Open in Web Editor NEW
706.0 37.0 171.0 9.5 MB

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

License: MIT License

C++ 69.85% Cuda 6.45% MATLAB 0.06% Python 22.70% CMake 0.73% C 0.06% Dockerfile 0.15%
octree o-cnn convolutional-neural-networks

o-cnn's Introduction

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.

o-cnn's People

Contributors

dapisani avatar frozensilent avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar msftgits avatar pauldinh avatar qinka avatar wang-ps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

o-cnn's Issues

Caffe revision SHA

The README provided suggests a particular caffe revision. It seems this revision is related to Windows Caffe and making Caffe fails on my Ubuntu 16.04 when I copy over the O-CNN files into Caffe and try to make it.
From your README it says your O-CNN will work on Ubuntu 16.04 as well. Is that correct? I am also using Ubuntu 16.04.
Thanks.

fail to rebuild Caffe after copy the code in the directory O-CNN/caffe into the caffe directory to override the original Caffe code

Hi,
thanks for your excellent work.
I have succeeded in building Caffe with revision 6bfc5ca (make all & make pycaffe),then iI download O-CNN and copy the code in the directory O-CNN/caffe into the caffe directory to override the original Caffe code,then I rebuild Caffe :

make all

However, error happens:

(py27) dlr@dlr-ThinkStation-S20:~/Project/caffe$ make all -j8
CXX src/caffe/util/octree.cpp
CXX src/caffe/util/octree_info.cpp
CXX src/caffe/util/octree_parser.cpp
CXX src/caffe/layers/octree_property_layer.cpp
CXX src/caffe/layers/octree_full_voxel_layer.cpp
CXX src/caffe/layers/octree_deconv_layer.cpp
CXX src/caffe/layers/octree_database_layer.cpp
CXX src/caffe/layers/normalize_layer.cpp
src/caffe/util/octree_info.cpp: In member function ‘bool caffe::OctreeInfo::check_format(std::__cxx11::string&) const’:
src/caffe/util/octree_info.cpp:33:18: error: ‘to_string’ is not a member of ‘std’
     string str = std::to_string(i);
                  ^
src/caffe/util/octree_info.cpp:36:11: error: ‘to_string’ is not a member of ‘std’
           std::to_string(channel_max[i]) + "].\n";
           ^
src/caffe/util/octree_info.cpp:42:63: error: ‘to_string’ is not a member of ‘std’
       msg += "The locations_[" + str + "] should be -1 or " + std::to_string(depth_) + ".\n";
                                                               ^
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/util/octree_info.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/util/octree_info.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from src/caffe/util/octree_parser.cpp:1:0:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
In file included from src/caffe/util/octree_parser.cpp:1:0:
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
src/caffe/util/octree_parser.cpp: In member function ‘void caffe::OctreeParser::set_gpu(const void*, const void*)’:
src/caffe/util/octree_parser.cpp:18:19: error: ‘nullptr’ was not declared in this scope
   if (oct_info == nullptr) {
                   ^
src/caffe/util/octree_parser.cpp: In member function ‘void caffe::OctreeParser::set_cpu(void*, caffe::OctreeInfo*)’:
src/caffe/util/octree_parser.cpp:30:18: error: ‘nullptr’ was not declared in this scope
   if (octinfo != nullptr) { // update the OctreeInfo with octinfo
                  ^
src/caffe/util/octree_parser.cpp: In member function ‘void caffe::OctreeParser::set_gpu(void*, caffe::OctreeInfo*)’:
src/caffe/util/octree_parser.cpp:39:18: error: ‘nullptr’ was not declared in this scope
   if (octinfo != nullptr) { // update the OctreeInfo with octinfo
                  ^
In file included from ./include/caffe/common.hpp:6:0,
                 from src/caffe/util/octree_parser.cpp:3:
src/caffe/util/octree_parser.cpp: In member function ‘const char* caffe::OctreeParser::ptr_cpu(caffe::OctreeParser::PropType, int) const’:
src/caffe/util/octree_parser.cpp:80:24: error: ‘nullptr’ was not declared in this scope
   CHECK(h_metadata_ != nullptr);
                        ^
src/caffe/util/octree_parser.cpp: In member function ‘const char* caffe::OctreeParser::ptr_gpu(caffe::OctreeParser::PropType, int) const’:
src/caffe/util/octree_parser.cpp:143:24: error: ‘nullptr’ was not declared in this scope
   CHECK(d_metadata_ != nullptr);
                        ^
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/util/octree_parser.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/util/octree_parser.o] Error 1
In file included from /usr/include/c++/5/unordered_map:35:0,
                 from ./include/caffe/util/octree.hpp:5,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:9,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:9,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
In file included from ./include/caffe/layers/octree_full_voxel_layer.hpp:9:0,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
./include/caffe/util/octree.hpp: At global scope:
./include/caffe/util/octree.hpp:11:12: error: ‘std::unordered_map’ has not been declared
 using std::unordered_map;
            ^
./include/caffe/util/octree.hpp:49:3: error: ‘unordered_map’ does not name a type
   unordered_map<string, int> ni_map_;
   ^
In file included from src/caffe/layers/octree_full_voxel_layer.cpp:3:0:
./include/caffe/layers/octree_full_voxel_layer.hpp:21:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_full_voxel_layer.hpp:30:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_full_voxel_layer.hpp:32:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
./include/caffe/layers/octree_full_voxel_layer.hpp:35:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_full_voxel_layer.hpp:37:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
src/caffe/layers/octree_full_voxel_layer.cpp: In member function ‘void caffe::Octree2FullVoxelLayer<Dtype>::build_mapping(int)’:
src/caffe/layers/octree_full_voxel_layer.cpp:100:27: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   vector<int> mapper_shape{ n*n * n };
                           ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:6,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
src/caffe/layers/octree_full_voxel_layer.cpp: In instantiation of ‘void caffe::Octree2FullVoxelLayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = float]’:
src/caffe/layers/octree_full_voxel_layer.cpp:129:1:   required from here
src/caffe/layers/octree_full_voxel_layer.cpp:10:3: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   CHECK(this->layer_param_.octree_param().has_curr_depth())
   ^
src/caffe/layers/octree_full_voxel_layer.cpp:13:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   curr_depth_ = this->layer_param_.octree_param().curr_depth();
               ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:6,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
src/caffe/layers/octree_full_voxel_layer.cpp:17:3: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   CHECK(this->layer_param_.octree_param().has_batch_size())
   ^
src/caffe/layers/octree_full_voxel_layer.cpp:20:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   batch_size_ = this->layer_param_.octree_param().batch_size();
               ^
src/caffe/layers/octree_full_voxel_layer.cpp: In instantiation of ‘void caffe::Octree2FullVoxelLayer<Dtype>::build_mapping(int) [with Dtype = float]’:
src/caffe/layers/octree_full_voxel_layer.cpp:129:1:   required from here
src/caffe/layers/octree_full_voxel_layer.cpp:100:37: error: in C++98 ‘mapper_shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> mapper_shape{ n*n * n };
                                     ^
src/caffe/layers/octree_full_voxel_layer.cpp:100:37: warning: narrowing conversion of ‘((n * n) * n)’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:6,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
src/caffe/layers/octree_full_voxel_layer.cpp: In instantiation of ‘void caffe::Octree2FullVoxelLayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = double]’:
src/caffe/layers/octree_full_voxel_layer.cpp:129:1:   required from here
src/caffe/layers/octree_full_voxel_layer.cpp:10:3: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   CHECK(this->layer_param_.octree_param().has_curr_depth())
   ^
src/caffe/layers/octree_full_voxel_layer.cpp:13:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   curr_depth_ = this->layer_param_.octree_param().curr_depth();
               ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_full_voxel_layer.hpp:6,
                 from src/caffe/layers/octree_full_voxel_layer.cpp:3:
src/caffe/layers/octree_full_voxel_layer.cpp:17:3: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   CHECK(this->layer_param_.octree_param().has_batch_size())
   ^
src/caffe/layers/octree_full_voxel_layer.cpp:20:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   batch_size_ = this->layer_param_.octree_param().batch_size();
               ^
src/caffe/layers/octree_full_voxel_layer.cpp: In instantiation of ‘void caffe::Octree2FullVoxelLayer<Dtype>::build_mapping(int) [with Dtype = double]’:
src/caffe/layers/octree_full_voxel_layer.cpp:129:1:   required from here
src/caffe/layers/octree_full_voxel_layer.cpp:100:37: error: in C++98 ‘mapper_shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> mapper_shape{ n*n * n };
                                     ^
src/caffe/layers/octree_full_voxel_layer.cpp:100:37: warning: narrowing conversion of ‘((n * n) * n)’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/layers/octree_full_voxel_layer.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/layers/octree_full_voxel_layer.o] Error 1
In file included from /usr/include/c++/5/unordered_map:35:0,
                 from ./include/caffe/util/octree.hpp:5,
                 from ./include/caffe/layers/octree_base_conv_layer.hpp:9,
                 from ./include/caffe/layers/octree_deconv_layer.hpp:7,
                 from src/caffe/layers/octree_deconv_layer.cpp:3:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_base_conv_layer.hpp:9,
                 from ./include/caffe/layers/octree_deconv_layer.hpp:7,
                 from src/caffe/layers/octree_deconv_layer.cpp:3:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
In file included from ./include/caffe/layers/octree_base_conv_layer.hpp:9:0,
                 from ./include/caffe/layers/octree_deconv_layer.hpp:7,
                 from src/caffe/layers/octree_deconv_layer.cpp:3:
./include/caffe/util/octree.hpp: At global scope:
./include/caffe/util/octree.hpp:11:12: error: ‘std::unordered_map’ has not been declared
 using std::unordered_map;
            ^
./include/caffe/util/octree.hpp:49:3: error: ‘unordered_map’ does not name a type
   unordered_map<string, int> ni_map_;
   ^
In file included from ./include/caffe/layers/octree_deconv_layer.hpp:7:0,
                 from src/caffe/layers/octree_deconv_layer.cpp:3:
./include/caffe/layers/octree_base_conv_layer.hpp:23:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
In file included from src/caffe/layers/octree_deconv_layer.cpp:3:0:
./include/caffe/layers/octree_deconv_layer.hpp:24:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_deconv_layer.hpp:29:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/layers/octree_deconv_layer.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/layers/octree_deconv_layer.o] Error 1
In file included from src/caffe/layers/normalize_layer.cpp:7:0:
./include/caffe/layers/normalize_layer.hpp:41:22: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
   const Dtype eps_ = 1.0e-30;
                      ^
src/caffe/layers/normalize_layer.cpp: In instantiation of ‘void caffe::NormalizeLayer<Dtype>::Backward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<bool>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = float]’:
src/caffe/layers/normalize_layer.cpp:88:1:   required from here
src/caffe/layers/normalize_layer.cpp:63:16: warning: unused variable ‘bottom_data’ [-Wunused-variable]
   const Dtype* bottom_data = bottom[0]->cpu_data();
                ^
src/caffe/layers/normalize_layer.cpp: In instantiation of ‘void caffe::NormalizeLayer<Dtype>::Backward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<bool>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = double]’:
src/caffe/layers/normalize_layer.cpp:88:1:   required from here
src/caffe/layers/normalize_layer.cpp:63:16: warning: unused variable ‘bottom_data’ [-Wunused-variable]
In file included from /usr/include/c++/5/unordered_map:35:0,
                 from ./include/caffe/util/octree.hpp:5,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_database_layer.cpp:2:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_database_layer.cpp:2:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_database_layer.cpp:2:
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
In file included from ./include/caffe/layers/octree_property_layer.hpp:8:0,
                 from src/caffe/layers/octree_database_layer.cpp:2:
./include/caffe/util/octree.hpp: At global scope:
./include/caffe/util/octree.hpp:11:12: error: ‘std::unordered_map’ has not been declared
 using std::unordered_map;
            ^
./include/caffe/util/octree.hpp:49:3: error: ‘unordered_map’ does not name a type
   unordered_map<string, int> ni_map_;
   ^
In file included from src/caffe/layers/octree_database_layer.cpp:2:0:
./include/caffe/layers/octree_property_layer.hpp:31:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_property_layer.hpp:33:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
./include/caffe/layers/octree_property_layer.hpp:36:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_property_layer.hpp:38:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
src/caffe/layers/octree_database_layer.cpp: In member function ‘virtual void caffe::OctreeDataBaseLayer<Dtype>::DataLayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
src/caffe/layers/octree_database_layer.cpp:36:17: error: ‘class caffe::LayerParameter’ has no member named ‘mutable_octree_param’
   feature_param.mutable_octree_param()->set_content_flag("feature");
                 ^
src/caffe/layers/octree_database_layer.cpp:45:25: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   vector<int> data_shape{ 1, signal_channel_, 8, 1 };
                         ^
src/caffe/layers/octree_database_layer.cpp:51:28: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     vector<int> label_shape{ batch_size_ };
                            ^
src/caffe/layers/octree_database_layer.cpp:58:33: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     top[2]->Reshape(vector<int> {1});
                                 ^
src/caffe/layers/octree_database_layer.cpp: In member function ‘virtual void caffe::OctreeDataBaseLayer<Dtype>::load_batch(caffe::Batch<Dtype>*)’:
src/caffe/layers/octree_database_layer.cpp:81:23: error: ‘nullptr’ was not declared in this scope
   Dtype* label_data = nullptr;
                       ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/data_layer.hpp:6,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
src/caffe/layers/octree_database_layer.cpp: In instantiation of ‘void caffe::OctreeDataBaseLayer<Dtype>::DataLayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = float]’:
src/caffe/layers/octree_database_layer.cpp:179:1:   required from here
src/caffe/layers/octree_database_layer.cpp:21:3: error: ‘class caffe::LayerParameter’ has no member named ‘has_octree_param’
   CHECK(this->layer_param_.has_octree_param()) << "The octree_param must be set";
   ^
src/caffe/layers/octree_database_layer.cpp:22:19: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   signal_channel_ = this->layer_param_.octree_param().signal_channel();
                   ^
src/caffe/layers/octree_database_layer.cpp:23:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   curr_depth_ = this->layer_param_.octree_param().curr_depth();
               ^
src/caffe/layers/octree_database_layer.cpp:45:52: error: in C++98 ‘data_shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> data_shape{ 1, signal_channel_, 8, 1 };
                                                    ^
src/caffe/layers/octree_database_layer.cpp:45:52: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/data_layer.hpp:4,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_database_layer.cpp:45:52: note:   cannot convert ‘8’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
   vector<int> data_shape{ 1, signal_channel_, 8, 1 };
                                                    ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/data_layer.hpp:4,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
src/caffe/layers/octree_database_layer.cpp:51:42: error: in C++98 ‘label_shape’ must be initialized by constructor, not by ‘{...}’
     vector<int> label_shape{ batch_size_ };
                                          ^
src/caffe/layers/octree_database_layer.cpp:51:42: warning: narrowing conversion of ‘((caffe::OctreeDataBaseLayer<float>*)this)->caffe::OctreeDataBaseLayer<float>::batch_size_’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/data_layer.hpp:6,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
src/caffe/layers/octree_database_layer.cpp: In instantiation of ‘void caffe::OctreeDataBaseLayer<Dtype>::DataLayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = double]’:
src/caffe/layers/octree_database_layer.cpp:179:1:   required from here
src/caffe/layers/octree_database_layer.cpp:21:3: error: ‘class caffe::LayerParameter’ has no member named ‘has_octree_param’
   CHECK(this->layer_param_.has_octree_param()) << "The octree_param must be set";
   ^
src/caffe/layers/octree_database_layer.cpp:22:19: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   signal_channel_ = this->layer_param_.octree_param().signal_channel();
                   ^
src/caffe/layers/octree_database_layer.cpp:23:15: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   curr_depth_ = this->layer_param_.octree_param().curr_depth();
               ^
src/caffe/layers/octree_database_layer.cpp:45:52: error: in C++98 ‘data_shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> data_shape{ 1, signal_channel_, 8, 1 };
                                                    ^
src/caffe/layers/octree_database_layer.cpp:45:52: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/data_layer.hpp:4,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_database_layer.cpp:45:52: note:   cannot convert ‘8’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
   vector<int> data_shape{ 1, signal_channel_, 8, 1 };
                                                    ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/data_layer.hpp:4,
                 from ./include/caffe/layers/octree_database_layer.hpp:4,
                 from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
src/caffe/layers/octree_database_layer.cpp:51:42: error: in C++98 ‘label_shape’ must be initialized by constructor, not by ‘{...}’
     vector<int> label_shape{ batch_size_ };
                                          ^
src/caffe/layers/octree_database_layer.cpp:51:42: warning: narrowing conversion of ‘((caffe::OctreeDataBaseLayer<double>*)this)->caffe::OctreeDataBaseLayer<double>::batch_size_’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/layers/octree_database_layer.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/layers/octree_database_layer.o] Error 1
In file included from /usr/include/c++/5/unordered_map:35:0,
                 from ./include/caffe/util/octree.hpp:5,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_property_layer.cpp:1:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:8,
                 from src/caffe/layers/octree_property_layer.cpp:1:
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
In file included from ./include/caffe/layers/octree_property_layer.hpp:8:0,
                 from src/caffe/layers/octree_property_layer.cpp:1:
./include/caffe/util/octree.hpp: At global scope:
./include/caffe/util/octree.hpp:11:12: error: ‘std::unordered_map’ has not been declared
 using std::unordered_map;
            ^
./include/caffe/util/octree.hpp:49:3: error: ‘unordered_map’ does not name a type
   unordered_map<string, int> ni_map_;
   ^
In file included from src/caffe/layers/octree_property_layer.cpp:1:0:
./include/caffe/layers/octree_property_layer.hpp:31:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_property_layer.hpp:33:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
./include/caffe/layers/octree_property_layer.hpp:36:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<Blob<Dtype>*>& top) override;
                                      ^
./include/caffe/layers/octree_property_layer.hpp:38:77: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) override;
                                                                             ^
src/caffe/layers/octree_property_layer.cpp: In member function ‘virtual void caffe::OctreePropertyLayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
src/caffe/layers/octree_property_layer.cpp:13:9: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
   const auto& octree_param = this->layer_param_.octree_param();
         ^
src/caffe/layers/octree_property_layer.cpp:13:15: error: ISO C++ forbids declaration of ‘octree_param’ with no type [-fpermissive]
   const auto& octree_param = this->layer_param_.octree_param();
               ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_property_layer.hpp:6,
                 from src/caffe/layers/octree_property_layer.cpp:1:
src/caffe/layers/octree_property_layer.cpp:14:22: error: request for member ‘has_curr_depth’ in ‘octree_param’, which is of non-class type ‘const int’
   CHECK(octree_param.has_curr_depth())
                      ^
src/caffe/layers/octree_property_layer.cpp:17:30: error: request for member ‘curr_depth’ in ‘octree_param’, which is of non-class type ‘const int’
   curr_depth_ = octree_param.curr_depth();
                              ^
src/caffe/layers/octree_property_layer.cpp:18:34: error: request for member ‘signal_channel’ in ‘octree_param’, which is of non-class type ‘const int’
   signal_channel_ = octree_param.signal_channel();
                                  ^
src/caffe/layers/octree_property_layer.cpp:21:20: error: request for member ‘has_content_flag’ in ‘octree_param’, which is of non-class type ‘const int’
   if (octree_param.has_content_flag()) {
                    ^
src/caffe/layers/octree_property_layer.cpp:22:55: error: request for member ‘content_flag’ in ‘octree_param’, which is of non-class type ‘const int’
     content_flag_ = octree::content_flag(octree_param.content_flag());
                                                       ^
src/caffe/layers/octree_property_layer.cpp: In member function ‘virtual void caffe::OctreePropertyLayer<Dtype>::Reshape(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
src/caffe/layers/octree_property_layer.cpp:42:26: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     vector<int> top_shape{ 1, signal_channel_, 8, 1 };
                          ^
src/caffe/layers/octree_property_layer.cpp:69:33: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     top[i]->Reshape(vector<int> {1, channel, height, 1});
                                 ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layers/octree_property_layer.hpp:6,
                 from src/caffe/layers/octree_property_layer.cpp:1:
src/caffe/layers/octree_property_layer.cpp: In member function ‘virtual void caffe::OctreePropertyLayer<Dtype>::Forward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
src/caffe/layers/octree_property_layer.cpp:78:18: error: ‘nullptr’ was not declared in this scope
     CHECK(ptr != nullptr) << "The octree property does not exist: " << ptypes_[i];
                  ^
src/caffe/layers/octree_property_layer.cpp: In instantiation of ‘void caffe::OctreePropertyLayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = float]’:
src/caffe/layers/octree_property_layer.cpp:107:1:   required from here
src/caffe/layers/octree_property_layer.cpp:13:62: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   const auto& octree_param = this->layer_param_.octree_param();
                                                              ^
src/caffe/layers/octree_property_layer.cpp: In instantiation of ‘void caffe::OctreePropertyLayer<Dtype>::Reshape(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = float]’:
src/caffe/layers/octree_property_layer.cpp:107:1:   required from here
src/caffe/layers/octree_property_layer.cpp:42:53: error: in C++98 ‘top_shape’ must be initialized by constructor, not by ‘{...}’
     vector<int> top_shape{ 1, signal_channel_, 8, 1 };
                                                     ^
src/caffe/layers/octree_property_layer.cpp:42:53: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_property_layer.cpp:42:53: note:   cannot convert ‘8’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
     vector<int> top_shape{ 1, signal_channel_, 8, 1 };
                                                     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
src/caffe/layers/octree_property_layer.cpp:69:5: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
     top[i]->Reshape(vector<int> {1, channel, height, 1});
     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_property_layer.cpp:69:5: note:   cannot convert ‘height’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
     top[i]->Reshape(vector<int> {1, channel, height, 1});
     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
src/caffe/layers/octree_property_layer.cpp: In instantiation of ‘void caffe::OctreePropertyLayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = double]’:
src/caffe/layers/octree_property_layer.cpp:107:1:   required from here
src/caffe/layers/octree_property_layer.cpp:13:62: error: ‘class caffe::LayerParameter’ has no member named ‘octree_param’
   const auto& octree_param = this->layer_param_.octree_param();
                                                              ^
src/caffe/layers/octree_property_layer.cpp: In instantiation of ‘void caffe::OctreePropertyLayer<Dtype>::Reshape(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&) [with Dtype = double]’:
src/caffe/layers/octree_property_layer.cpp:107:1:   required from here
src/caffe/layers/octree_property_layer.cpp:42:53: error: in C++98 ‘top_shape’ must be initialized by constructor, not by ‘{...}’
     vector<int> top_shape{ 1, signal_channel_, 8, 1 };
                                                     ^
src/caffe/layers/octree_property_layer.cpp:42:53: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_property_layer.cpp:42:53: note:   cannot convert ‘8’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
     vector<int> top_shape{ 1, signal_channel_, 8, 1 };
                                                     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
src/caffe/layers/octree_property_layer.cpp:69:5: error: no matching function for call to ‘std::vector<int>::vector(<brace-enclosed initializer list>)’
     top[i]->Reshape(vector<int> {1, channel, height, 1});
     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/layers/octree_property_layer.cpp:69:5: note:   cannot convert ‘height’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<int>&}’
     top[i]->Reshape(vector<int> {1, channel, height, 1});
     ^
In file included from /usr/include/c++/5/vector:64:0,
                 from ./include/caffe/layers/octree_property_layer.hpp:4,
                 from src/caffe/layers/octree_property_layer.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 4 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 4 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 4 provided
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/layers/octree_property_layer.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/layers/octree_property_layer.o] Error 1
In file included from /usr/include/c++/5/unordered_map:35:0,
                 from src/caffe/util/octree.cpp:2:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from src/caffe/util/octree.cpp:4:
./include/caffe/util/octree_parser.hpp:22:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
   ^
src/caffe/util/octree.cpp:265:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   #pragma omp parallel for
 ^
In file included from ./include/caffe/util/octree.hpp:8:0,
                 from src/caffe/util/octree.cpp:4:
./include/caffe/util/octree_parser.hpp:25:56: error: ‘nullptr’ was not declared in this scope
   void set_gpu(const void* ptr, const void* oct_info = nullptr);
                                                        ^
./include/caffe/util/octree_parser.hpp:26:49: error: ‘nullptr’ was not declared in this scope
   void set_cpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp:27:49: error: ‘nullptr’ was not declared in this scope
   void set_gpu(void* ptr, OctreeInfo* octinfo = nullptr);
                                                 ^
./include/caffe/util/octree_parser.hpp: In constructor ‘caffe::OctreeParser::OctreeParser()’:
./include/caffe/util/octree_parser.hpp:22:32: error: ‘nullptr’ was not declared in this scope
   OctreeParser() : h_metadata_(nullptr), d_metadata_(nullptr),
                                ^
./include/caffe/util/octree_parser.hpp: In member function ‘bool caffe::OctreeParser::is_empty() const’:
./include/caffe/util/octree_parser.hpp:33:43: error: ‘nullptr’ was not declared in this scope
   bool is_empty() const { return info_ == nullptr; }
                                           ^
In file included from src/caffe/util/octree.cpp:4:0:
./include/caffe/util/octree.hpp: At global scope:
./include/caffe/util/octree.hpp:11:12: error: ‘std::unordered_map’ has not been declared
 using std::unordered_map;
            ^
./include/caffe/util/octree.hpp:49:3: error: ‘unordered_map’ does not name a type
   unordered_map<string, int> ni_map_;
   ^
src/caffe/util/octree.cpp: In static member function ‘static boost::shared_ptr<caffe::Blob<float> > caffe::Octree::get_workspace(float, int)’:
src/caffe/util/octree.cpp:19:20: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   vector<int> shape{ 1 };
                    ^
src/caffe/util/octree.cpp:19:24: error: in C++98 ‘shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> shape{ 1 };
                        ^
src/caffe/util/octree.cpp:20:3: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
   auto& workspace = Get().workspace_;
   ^
src/caffe/util/octree.cpp:20:9: error: ISO C++ forbids declaration of ‘workspace’ with no type [-fpermissive]
   auto& workspace = Get().workspace_;
         ^
src/caffe/util/octree.cpp:20:27: error: invalid initialization of reference of type ‘int&’ from expression of type ‘std::vector<boost::shared_ptr<caffe::Blob<float> > >’
   auto& workspace = Get().workspace_;
                           ^
src/caffe/util/octree.cpp:21:26: error: request for member ‘size’ in ‘workspace’, which is of non-class type ‘int’
   if (id + 1 > workspace.size()) workspace.resize(id + 1, nullptr);
                          ^
src/caffe/util/octree.cpp:21:44: error: request for member ‘resize’ in ‘workspace’, which is of non-class type ‘int’
   if (id + 1 > workspace.size()) workspace.resize(id + 1, nullptr);
                                            ^
src/caffe/util/octree.cpp:21:59: error: ‘nullptr’ was not declared in this scope
   if (id + 1 > workspace.size()) workspace.resize(id + 1, nullptr);
                                                           ^
src/caffe/util/octree.cpp:22:20: error: invalid types ‘int[int]’ for array subscript
   if (!workspace[id].get()) workspace[id].reset(new Blob<float>(shape));
                    ^
src/caffe/util/octree.cpp:22:41: error: invalid types ‘int[int]’ for array subscript
   if (!workspace[id].get()) workspace[id].reset(new Blob<float>(shape));
                                         ^
src/caffe/util/octree.cpp:23:22: error: invalid types ‘int[int]’ for array subscript
   return workspace[id];
                      ^
src/caffe/util/octree.cpp: In static member function ‘static boost::shared_ptr<caffe::Blob<double> > caffe::Octree::get_workspace(double, int)’:
src/caffe/util/octree.cpp:27:20: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   vector<int> shape{ 1 };
                    ^
src/caffe/util/octree.cpp:27:24: error: in C++98 ‘shape’ must be initialized by constructor, not by ‘{...}’
   vector<int> shape{ 1 };
                        ^
src/caffe/util/octree.cpp:28:3: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
   auto& workspaced = Get().workspaced_;
   ^
src/caffe/util/octree.cpp:28:9: error: ISO C++ forbids declaration of ‘workspaced’ with no type [-fpermissive]
   auto& workspaced = Get().workspaced_;
         ^
src/caffe/util/octree.cpp:28:28: error: invalid initialization of reference of type ‘int&’ from expression of type ‘std::vector<boost::shared_ptr<caffe::Blob<double> > >’
   auto& workspaced = Get().workspaced_;
                            ^
src/caffe/util/octree.cpp:29:27: error: request for member ‘size’ in ‘workspaced’, which is of non-class type ‘int’
   if (id + 1 > workspaced.size()) workspaced.resize(id + 1, nullptr);
                           ^
src/caffe/util/octree.cpp:29:46: error: request for member ‘resize’ in ‘workspaced’, which is of non-class type ‘int’
   if (id + 1 > workspaced.size()) workspaced.resize(id + 1, nullptr);
                                              ^
src/caffe/util/octree.cpp:29:61: error: ‘nullptr’ was not declared in this scope
   if (id + 1 > workspaced.size()) workspaced.resize(id + 1, nullptr);
                                                             ^
src/caffe/util/octree.cpp:30:21: error: invalid types ‘int[int]’ for array subscript
   if (!workspaced[id].get()) workspaced[id].reset(new Blob<double>(shape));
                     ^
src/caffe/util/octree.cpp:30:43: error: invalid types ‘int[int]’ for array subscript
   if (!workspaced[id].get()) workspaced[id].reset(new Blob<double>(shape));
                                           ^
src/caffe/util/octree.cpp:31:23: error: invalid types ‘int[int]’ for array subscript
   return workspaced[id];
                       ^
src/caffe/util/octree.cpp: In member function ‘void caffe::Octree::init_neigh_index()’:
src/caffe/util/octree.cpp:35:52: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   const vector<std::pair<string, int> > kernel_type{
                                                    ^
src/caffe/util/octree.cpp:38:46: error: in C++98 ‘kernel_type’ must be initialized by constructor, not by ‘{...}’
     { "331", 6 }, { "313", 7 }, { "133", 8 } };
                                              ^
src/caffe/util/octree.cpp: In substitution of ‘template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = <missing>]’:
src/caffe/util/octree.cpp:38:46:   required from here
src/caffe/util/octree.cpp:38:46: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
src/caffe/util/octree.cpp:38:46: error: no matching function for call to ‘std::vector<std::pair<std::__cxx11::basic_string<char>, int> >::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/util/octree.cpp:38:46: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     { "331", 6 }, { "313", 7 }, { "133", 8 } };
                                              ^
src/caffe/util/octree.cpp:38:46: note:   cannot convert ‘{"222", 2}’ (type ‘<brace-enclosed initializer list>’) to type ‘const allocator_type& {aka const std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >&}’
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::pair<std::__cxx11::basic_string<char>, int>; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 9 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = std::pair<std::__cxx11::basic_string<char>, int>; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::pair<std::__cxx11::basic_string<char>, int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 9 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::pair<std::__cxx11::basic_string<char>, int>; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 9 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = std::pair<std::__cxx11::basic_string<char>, int>; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, int> >]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 9 provided
src/caffe/util/octree.cpp:40:33: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   const vector<vector<int> > vec{ {} /* 333 */, { 13 } /* 111 */,
                                 ^
src/caffe/util/octree.cpp:47:53: error: in C++98 ‘vec’ must be initialized by constructor, not by ‘{...}’
     { 9, 10, 11, 12, 13, 14, 15, 16, 17 } /* 133 */ };
                                                     ^
src/caffe/util/octree.cpp: In substitution of ‘template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = <missing>]’:
src/caffe/util/octree.cpp:47:53:   required from here
src/caffe/util/octree.cpp:47:53: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
src/caffe/util/octree.cpp:47:53: error: no matching function for call to ‘std::vector<std::vector<int> >::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/util/octree.cpp:47:53: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     { 9, 10, 11, 12, 13, 14, 15, 16, 17 } /* 133 */ };
                                                     ^
src/caffe/util/octree.cpp:47:53: note:   cannot convert ‘{13, 14, 16, 17, 22, 23, 25, 26}’ (type ‘<brace-enclosed initializer list>’) to type ‘const allocator_type& {aka const std::allocator<std::vector<int> >&}’
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 9 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::vector<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 9 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::vector<int> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 9 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = std::vector<int>; _Alloc = std::allocator<std::vector<int> >]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 9 provided
src/caffe/util/octree.cpp:50:3: error: ‘ni_map_’ was not declared in this scope
   ni_map_.insert(kernel_type.begin(), kernel_type.end());
   ^
src/caffe/util/octree.cpp:54:42: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   ni_[0].reset(new Blob<int>(vector<int> { 216 }));
                                          ^
src/caffe/util/octree.cpp:72:44: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     ni_[k].reset(new Blob<int>(vector<int> { 8 * sz }));
                                            ^
src/caffe/util/octree.cpp:72:48: warning: narrowing conversion of ‘(sz * 8)’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
     ni_[k].reset(new Blob<int>(vector<int> { 8 * sz }));
                                                ^
src/caffe/util/octree.cpp:84:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   displacement_.Reshape(vector<int> { 64 });
                                     ^
src/caffe/util/octree.cpp:103:31: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   parent_.Reshape(vector<int> { 512 });
                               ^
src/caffe/util/octree.cpp: In static member function ‘static boost::shared_ptr<caffe::Blob<int> > caffe::Octree::get_ni(const std::vector<int>&)’:
src/caffe/util/octree.cpp:115:8: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
   for (auto i : kernel_size) key += std::to_string(i);
        ^
src/caffe/util/octree.cpp:115:13: error: ‘i’ does not name a type
   for (auto i : kernel_size) key += std::to_string(i);
             ^
src/caffe/util/octree.cpp:116:3: error: expected ‘;’ before ‘auto’
   auto it = Get().ni_map_.find(key);
   ^
src/caffe/util/octree.cpp:116:3: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
src/caffe/util/octree.cpp:116:3: error: decl-specifier invalid in condition
src/caffe/util/octree.cpp:116:8: error: ISO C++ forbids declaration of ‘it’ with no type [-fpermissive]
   auto it = Get().ni_map_.find(key);
        ^
src/caffe/util/octree.cpp:116:19: error: ‘class caffe::Octree’ has no member named ‘ni_map_’
   auto it = Get().ni_map_.find(key);
                   ^
In file included from ./include/caffe/common.hpp:6:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/util/octree.hpp:6,
                 from src/caffe/util/octree.cpp:4:
src/caffe/util/octree.cpp:117:23: error: ‘class caffe::Octree’ has no member named ‘ni_map_’
   CHECK(!(it == Get().ni_map_.end())) << "Unsupported kernel_size";
                       ^
src/caffe/util/octree.cpp:117:67: error: expected ‘)’ before ‘;’ token
   CHECK(!(it == Get().ni_map_.end())) << "Unsupported kernel_size";
                                                                   ^
src/caffe/util/octree.cpp:119:20: error: ‘it’ was not declared in this scope
   return Get().ni_[it->second];
                    ^
src/caffe/util/octree.cpp: In function ‘void caffe::octree::calc_neighbor(int*, const unsigned int*, int, int)’:
src/caffe/util/octree.cpp:335:33: error: ‘>>’ should be ‘> >’ within a nested template argument list
   vector<std::pair<unsigned, int>> entries(node_num);
                                 ^
src/caffe/util/octree.cpp:340:3: error: ‘unordered_map’ is not a member of ‘std’
   std::unordered_map<unsigned, int> hash_table(entries.begin(), entries.end());
   ^
src/caffe/util/octree.cpp:340:22: error: expected primary-expression before ‘unsigned’
   std::unordered_map<unsigned, int> hash_table(entries.begin(), entries.end());
                      ^
src/caffe/util/octree.cpp:359:11: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
           auto rst = hash_table.find(*k2);
           ^
src/caffe/util/octree.cpp:359:16: error: ‘rst’ does not name a type
           auto rst = hash_table.find(*k2);
                ^
src/caffe/util/octree.cpp:361:15: error: ‘rst’ was not declared in this scope
           if (rst != hash_table.end()) {
               ^
src/caffe/util/octree.cpp:361:22: error: ‘hash_table’ was not declared in this scope
           if (rst != hash_table.end()) {
                      ^
src/caffe/util/octree.cpp:358:21: warning: unused variable ‘k2’ [-Wunused-variable]
           unsigned* k2 = reinterpret_cast<unsigned*>(k1);
                     ^
src/caffe/util/octree.cpp: In function ‘void caffe::octree::merge_octrees(caffe::Blob<Dtype>&, const std::vector<std::vector<char> >&)’:
src/caffe/util/octree.cpp:691:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   octree_output.Reshape(vector<int> {sz});
                                     ^
src/caffe/util/octree.cpp:701:3: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
   auto worker = [&](int thread_id, int thread_num) {
   ^
src/caffe/util/octree.cpp:701:8: error: ‘worker’ does not name a type
   auto worker = [&](int thread_id, int thread_num) {
        ^
src/caffe/util/octree.cpp:775:41: error: ‘worker’ was not declared in this scope
     workers[id].reset(new boost::thread(worker, id, thread_num));
                                         ^
src/caffe/util/octree.cpp:777:23: error: there are no arguments to ‘worker’ that depend on a template parameter, so a declaration of ‘worker’ must be available [-fpermissive]
   worker(0, thread_num); // for the master thread
                       ^
src/caffe/util/octree.cpp:777:23: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
src/caffe/util/octree.cpp: In function ‘int caffe::octree::content_flag(std::__cxx11::string)’:
src/caffe/util/octree.cpp:829:30: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   const vector<string> tokens{
                              ^
src/caffe/util/octree.cpp:831:3: error: in C++98 ‘tokens’ must be initialized by constructor, not by ‘{...}’
   };
   ^
src/caffe/util/octree.cpp:831:3: error: no matching function for call to ‘std::vector<std::__cxx11::basic_string<char> >::vector(<brace-enclosed initializer list>)’
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:407:9: note: candidate: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
         vector(_InputIterator __first, _InputIterator __last,
         ^
/usr/include/c++/5/bits/stl_vector.h:407:9: note:   template argument deduction/substitution failed:
src/caffe/util/octree.cpp:831:3: note:   cannot convert ‘"neigh"’ (type ‘const char [6]’) to type ‘const allocator_type& {aka const std::allocator<std::__cxx11::basic_string<char> >&}’
   };
   ^
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:24,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from src/caffe/util/octree.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:318:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const vector& __x)
       ^
/usr/include/c++/5/bits/stl_vector.h:318:7: note:   candidate expects 1 argument, 6 provided
/usr/include/c++/5/bits/stl_vector.h:303:7: note: candidate: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::__cxx11::basic_string<char>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(size_type __n, const value_type& __value = value_type(),
       ^
/usr/include/c++/5/bits/stl_vector.h:303:7: note:   candidate expects 3 arguments, 6 provided
/usr/include/c++/5/bits/stl_vector.h:264:7: note: candidate: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::__cxx11::basic_string<char> >]
       vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
       ^
/usr/include/c++/5/bits/stl_vector.h:264:7: note:   candidate expects 1 argument, 6 provided
/usr/include/c++/5/bits/stl_vector.h:253:7: note: candidate: std::vector<_Tp, _Alloc>::vector() [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >]
       vector()
       ^
/usr/include/c++/5/bits/stl_vector.h:253:7: note:   candidate expects 0 arguments, 6 provided
src/caffe/util/octree.cpp: In instantiation of ‘void caffe::octree::merge_octrees(caffe::Blob<Dtype>&, const std::vector<std::vector<char> >&) [with Dtype = float]’:
src/caffe/util/octree.cpp:874:41:   required from here
src/caffe/util/octree.cpp:691:3: warning: narrowing conversion of ‘sz’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
   octree_output.Reshape(vector<int> {sz});
   ^
src/caffe/util/octree.cpp:777:9: error: ‘worker’ was not declared in this scope
   worker(0, thread_num); // for the master thread
         ^
src/caffe/util/octree.cpp: In instantiation of ‘void caffe::octree::merge_octrees(caffe::Blob<Dtype>&, const std::vector<std::vector<char> >&) [with Dtype = double]’:
src/caffe/util/octree.cpp:876:41:   required from here
src/caffe/util/octree.cpp:691:3: warning: narrowing conversion of ‘sz’ from ‘int’ to ‘std::vector<int>::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
   octree_output.Reshape(vector<int> {sz});
   ^
src/caffe/util/octree.cpp:777:9: error: ‘worker’ was not declared in this scope
   worker(0, thread_num); // for the master thread
         ^
src/caffe/util/octree.cpp: In instantiation of ‘void caffe::octree::set_octree_parser(caffe::OctreeParser&, const caffe::Blob<Dtype>&) [with Dtype = float]’:
src/caffe/util/octree.cpp:878:33:   required from here
src/caffe/util/octree.cpp:810:7: error: call to ‘void caffe::OctreeParser::set_gpu(const void*, const void*)’ uses the default argument for parameter 2, which is not yet defined
       octree_parser.set_gpu(ptr_gpu);
       ^
src/caffe/util/octree.cpp: In instantiation of ‘void caffe::octree::set_octree_parser(caffe::OctreeParser&, const caffe::Blob<Dtype>&) [with Dtype = double]’:
src/caffe/util/octree.cpp:880:34:   required from here
src/caffe/util/octree.cpp:810:7: error: call to ‘void caffe::OctreeParser::set_gpu(const void*, const void*)’ uses the default argument for parameter 2, which is not yet defined
Makefile:581: recipe for target '.~/Project/caffe/build_release/src/caffe/util/octree.o' failed
make: *** [.~/Project/caffe/build_release/src/caffe/util/octree.o] Error 1

my environment: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
do you know what is the problem?

Get errors during make: no match for ‘operator=’, must be initialized by constructor, not by ‘{...}’ etc..

Hi,

After figure out the configuration of dependencies (can install original caffe by make sucsessfully), still get the error in make process. The errors and warnings are showing below. The details are attached in the end.
Can you help me to figure this out?
Thank you for your help!

OS is Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-147-generic x86_64).

errors include:
error: in C++98 ‘octree_shape’ must be initialized by constructor, not by ‘{...}’
vector data_shape, label_shape, octree_shape{ 1 };
^
error: no match for ‘operator=’ (operand types are ‘std::vector’ and ‘’)
error: converting to ‘const std::vector’ from initializer list would use explicit constructor

warnings include:
warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
vector data_shape, label_shape, octree_shape{ 1 };
^
warning: narrowing conversion of ‘((caffe::OctreeDataBaseLayer*)this)->caffe::OctreeDataBaseLayer::batch_size_’

The details are:
`CXX src/caffe/layers/octree_conv_layer.cpp
In file included from ./include/caffe/layers/octree_conv_layer.hpp:7:0,
from src/caffe/layers/octree_conv_layer.cpp:3:
./include/caffe/layers/octree_base_conv_layer.hpp:24:35: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 [enabled by default]
const vector<Blob>& top) override;
^
In file included from src/caffe/layers/octree_conv_layer.cpp:3:0:
./include/caffe/layers/octree_conv_layer.hpp:25:35: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 [enabled by default]
const vector<Blob
>& top) override;
^
./include/caffe/layers/octree_conv_layer.hpp:30:35: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 [enabled by default]
const vector<Blob*>& top) override;
^

...

CXX src/caffe/layers/octree_database_layer.cpp
src/caffe/layers/octree_database_layer.cpp: In member function ‘virtual void caffe::OctreeDataBaseLayer::LayerSetUp(const std::vector<caffe::Blob>&, const std::vector<caffe::Blob>&)’:
src/caffe/layers/octree_database_layer.cpp:62:40: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
vector data_shape, label_shape, octree_shape{ 1 };
^
src/caffe/layers/octree_database_layer.cpp:68:40: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { batch_size_, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:69:32: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { batch_size_ };
^
src/caffe/layers/octree_database_layer.cpp:72:30: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { 1, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:73:25: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { 1, 8 };
^
src/caffe/layers/octree_database_layer.cpp: In instantiation of ‘void caffe::OctreeDataBaseLayer::LayerSetUp(const std::vector<caffe::Blob>&, const std::vector<caffe::Blob>&) [with Dtype = float]’:
src/caffe/layers/octree_database_layer.cpp:271:2: required from here
src/caffe/layers/octree_database_layer.cpp:62:56: error: in C++98 ‘octree_shape’ must be initialized by constructor, not by ‘{...}’
vector data_shape, label_shape, octree_shape{ 1 };
^
src/caffe/layers/octree_database_layer.cpp:68:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { batch_size_, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:68:15: error: no match for ‘operator=’ (operand types are ‘std::vector’ and ‘’)
src/caffe/layers/octree_database_layer.cpp:68:15: note: candidate is:
In file included from /usr/include/c++/4.8/vector:69:0,
from /usr/local/include/boost/thread/pthread/thread_data.hpp:25,
from /usr/local/include/boost/thread/thread_only.hpp:17,
from /usr/local/include/boost/thread/thread.hpp:12,
from /usr/local/include/boost/thread.hpp:13,
from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator]
vector<_Tp, Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from ‘’ to ‘const std::vector&’
src/caffe/layers/octree_database_layer.cpp:69:16: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { batch_size
};
^
src/caffe/layers/octree_database_layer.cpp:69:16: error: converting to ‘const std::vector’ from initializer list would use explicit constructor ‘std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, Alloc>::allocator_type = std::allocator]’
src/caffe/layers/octree_database_layer.cpp:69:16: warning: narrowing conversion of ‘((caffe::OctreeDataBaseLayer*)this)->caffe::OctreeDataBaseLayer::batch_size
’ from ‘int’ to ‘std::vector::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
src/caffe/layers/octree_database_layer.cpp:72:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { 1, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:72:15: error: no match for ‘operator=’ (operand types are ‘std::vector’ and ‘’)
src/caffe/layers/octree_database_layer.cpp:72:15: note: candidate is:
In file included from /usr/include/c++/4.8/vector:69:0,
from /usr/local/include/boost/thread/pthread/thread_data.hpp:25,
from /usr/local/include/boost/thread/thread_only.hpp:17,
from /usr/local/include/boost/thread/thread.hpp:12,
from /usr/local/include/boost/thread.hpp:13,
from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator]
vector<_Tp, Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from ‘’ to ‘const std::vector&’
src/caffe/layers/octree_database_layer.cpp:73:16: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { 1, 8 };
^
src/caffe/layers/octree_database_layer.cpp: In instantiation of ‘void caffe::OctreeDataBaseLayer::LayerSetUp(const std::vector<caffe::Blob>&, const std::vector<caffe::Blob>&) [with Dtype = double]’:
src/caffe/layers/octree_database_layer.cpp:271:2: required from here
src/caffe/layers/octree_database_layer.cpp:62:56: error: in C++98 ‘octree_shape’ must be initialized by constructor, not by ‘{...}’
vector data_shape, label_shape, octree_shape{ 1 };
^
src/caffe/layers/octree_database_layer.cpp:68:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { batch_size
, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:68:15: error: no match for ‘operator=’ (operand types are ‘std::vector’ and ‘’)
src/caffe/layers/octree_database_layer.cpp:68:15: note: candidate is:
In file included from /usr/include/c++/4.8/vector:69:0,
from /usr/local/include/boost/thread/pthread/thread_data.hpp:25,
from /usr/local/include/boost/thread/thread_only.hpp:17,
from /usr/local/include/boost/thread/thread.hpp:12,
from /usr/local/include/boost/thread.hpp:13,
from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator]
vector<_Tp, Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from ‘’ to ‘const std::vector&’
src/caffe/layers/octree_database_layer.cpp:69:16: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { batch_size
};
^
src/caffe/layers/octree_database_layer.cpp:69:16: error: converting to ‘const std::vector’ from initializer list would use explicit constructor ‘std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, Alloc>::allocator_type = std::allocator]’
src/caffe/layers/octree_database_layer.cpp:69:16: warning: narrowing conversion of ‘((caffe::OctreeDataBaseLayer*)this)->caffe::OctreeDataBaseLayer::batch_size
’ from ‘int’ to ‘std::vector::size_type {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Wnarrowing]
src/caffe/layers/octree_database_layer.cpp:72:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
data_shape = { 1, 3, 8, 1 };
^
src/caffe/layers/octree_database_layer.cpp:72:15: error: no match for ‘operator=’ (operand types are ‘std::vector’ and ‘’)
src/caffe/layers/octree_database_layer.cpp:72:15: note: candidate is:
In file included from /usr/include/c++/4.8/vector:69:0,
from /usr/local/include/boost/thread/pthread/thread_data.hpp:25,
from /usr/local/include/boost/thread/thread_only.hpp:17,
from /usr/local/include/boost/thread/thread.hpp:12,
from /usr/local/include/boost/thread.hpp:13,
from src/caffe/layers/octree_database_layer.cpp:1:
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator]
vector<_Tp, _Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from ‘’ to ‘const std::vector&’
src/caffe/layers/octree_database_layer.cpp:73:16: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
label_shape = { 1, 8 };
^
make: *** [.build_release/src/caffe/layers/octree_database_layer.o] Error 1

`

M40_5_segmentation.prototxt error

Hi,

Thank you for releasing the code. I am now trying to run M40_5_segmentation.prototxt . But i encounter a mistake. Here is the error.

I0717 19:12:00.398635 50028 net.cpp:84] Creating Layer derelu3
I0717 19:12:00.399637 50028 net.cpp:406] derelu3 <- deconv3
I0717 19:12:00.400640 50028 net.cpp:367] derelu3 -> deconv3 (in-place)
I0717 19:12:00.401780 50028 net.cpp:122] Setting up derelu3
I0717 19:12:00.402783 50028 net.cpp:129] Top shape: 1 32 8 1 (256)
I0717 19:12:00.402783 50028 net.cpp:137] Memory required for data: 32448
I0717 19:12:00.403786 50028 layer_factory.cpp:58] Creating layer unpool2
I0717 19:12:00.404789 50028 net.cpp:84] Creating Layer unpool2
I0717 19:12:00.405889 50028 net.cpp:406] unpool2 <- deconv3
I0717 19:12:00.405889 50028 net.cpp:406] unpool2 <- pool2_mask
I0717 19:12:00.406893 50028 net.cpp:380] unpool2 -> unpool2
I0717 19:12:00.407896 50028 net.cpp:122] Setting up unpool2
I0717 19:12:00.408897 50028 net.cpp:129] Top shape: 1 32 8 1 (256)
I0717 19:12:00.410903 50028 net.cpp:137] Memory required for data: 33472
I0717 19:12:00.411906 50028 layer_factory.cpp:58] Creating layer deconv4
I0717 19:12:00.411906 50028 net.cpp:84] Creating Layer deconv4
I0717 19:12:00.412909 50028 net.cpp:406] deconv4 <- unpool2
I0717 19:12:00.413911 50028 net.cpp:380] deconv4 -> deconv4
F0717 19:12:00.415916 50028 blob.cpp:32] Check failed: shape[i] >= 0 (-1 vs. 0)

Part-Segmentation

Thank you for your great works.
Can I ask you how to generate part-segmentation model as displaying in Fig.9 in your paper.
I know we need to input segmentation label to lmdb database, but I dont know how to do this.
Can you show me structure of data before converting them to segmentation database.

Thank you very much.

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!

OctreePaddingLayer

In the octree_base_conv_layer.cpp, there is a TODO item, OctreePaddingLayer where it says "The OctreePaddingLayer should be added before "

Is this related to using non-power of 2 input dimensions? Will your net work for volumes with non-power of 2 dimensions?

octree files

Thanks for providing links to download the lmbd data to repeat some of your examples, like the segmentation task.
Any chance you could also share a few example octree files on their own [not in the lmbd format]?
Thanks.

boost::thread vs OpenMP

In the initial version of the function OctreeBatch::set_octreebatch(), OpenMP is used for parallelization, which is switched to boost::thread afterwards.
However, with boost::thread, the caffe.exe might collapse sometimes. And the reason is unclear. Can anyone help to fix it?

caffe.cpp compile question

when i complie caffe.cpp in ubuntu16.04 with g++4.8.2, it tell me

/usr/include/c++/4.8.2/bits/stl_construct.h:75:7: error: use of deleted function ‘std::basic_ofstream<char>::basic_ofstream(const std::basic_ofstream<char>&)’
     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
       ^

i find in your code is :
ofstream outfile(filename, std::ios::binary);

and when i fix it to:
ofstream outfile; outfile.open(filename, std::ios::binary);
it report the same error

Output predictions of segmentation task: "labelo"

When running in test mode to predict part labels of a new object and eventually visualize the output, what's the best way to get the label prediction out of your network? I see at the bottom of the segmentation prototxt the following commented out section:

# ##################
# # for test only
# layer {
#   name: "prob"
#   type: "Softmax"
#   bottom: "deconv2_ip"
#   top: "prob"
# }

# layer {
#   name: "labelo"
#   type: "Split"
#   bottom: "label"
#   top: "labelo"
# }

# # for test only
# ##################

When I uncomment this and run the network, I get output such as:

...
I0118 23:50:10.051928 20327 solver.cpp:237]     Train net output #119: labelo = -1
I0118 23:50:10.051933 20327 solver.cpp:237]     Train net output #120: labelo = -1
I0118 23:50:10.051939 20327 solver.cpp:237]     Train net output #121: labelo = 1
I0118 23:50:10.051944 20327 solver.cpp:237]     Train net output #122: labelo = -1
I0118 23:50:10.051964 20327 solver.cpp:237]     Train net output #123: labelo = -1
I0118 23:50:10.051970 20327 solver.cpp:237]     Train net output #124: labelo = -1
I0118 23:50:10.051975 20327 solver.cpp:237]     Train net output #125: labelo = -1
I0118 23:50:10.051990 20327 solver.cpp:237]     Train net output #126: labelo = -1
I0118 23:50:10.051995 20327 solver.cpp:237]     Train net output #127: labelo = -1
I0118 23:50:10.052000 20327 solver.cpp:237]     Train net output #128: labelo = -1
I0118 23:50:10.052008 20327 solver.cpp:237]     Train net output #129: loss = 5.72206e-06 (* 1 = 5.72206e-06 loss)
I0118 23:50:10.052047 20327 solver.cpp:237]     Train net output #130: prob = 5.71219e-06
I0118 23:50:10.052055 20327 solver.cpp:237]     Train net output #131: prob = 0.123834
I0118 23:50:10.052062 20327 solver.cpp:237]     Train net output #132: prob = 0.25759
I0118 23:50:10.052068 20327 solver.cpp:237]     Train net output #133: prob = 0.312887
I0118 23:50:10.052074 20327 solver.cpp:237]     Train net output #134: prob = 0.302314
I0118 23:50:10.052079 20327 solver.cpp:237]     Train net output #135: prob = 0.259468
I0118 23:50:10.052094 20327 solver.cpp:237]     Train net output #136: prob = 0.295625
I0118 23:50:10.052100 20327 solver.cpp:237]     Train net output #137: prob = 0.501078
I0118 23:50:10.052116 20327 solver.cpp:237]     Train net output #138: prob = 5.71219e-06
I0118 23:50:10.052122 20327 solver.cpp:237]     Train net output #139: prob = 0.123834
I0118 23:50:10.052129 20327 solver.cpp:237]     Train net output #140: prob = 0.25759
I0118 23:50:10.052145 20327 solver.cpp:237]     Train net output #141: prob = 0.312887
I0118 23:50:10.052150 20327 solver.cpp:237]     Train net output #142: prob = 0.302314
I0118 23:50:10.052155 20327 solver.cpp:237]     Train net output #143: prob = 0.259468

Do you provide any tools to conveniently take this "labelo" output and turn it back into the labeled 3D model? Or any utilities doing similar things to visualize or interpret the outputs?

Thanks.

The required momory

Dear authors,
I wonder how many memories are required for conducting the experiments.

Compare 2 octrees

Is there already a layer that produces a loss on the difference between 2 already fully formed octrees as input (for example 2 octrees that have been loaded in separate OctreeDatabase layers)? Or a good fast way to compose layers to do this? Other than going through all the octree masks and octree properties and splits etc...?

missing "segmentation_5.caffemodel"

Hi, I see caffemodel files for 2 of the tasks but not for the segmentation task:
in O-CNN/caffe/examples/o-cnn/ I see:

M40_5.caffemodel release O-CNN version 1.0 Jun 19, 2017
S55_5.caffemodel Add more details about the retrieval experiment Aug 23, 2017

but not "segmentation_5.caffemodel" which is used in the test phase command for the segmentation task:
caffe.exe test --model=segmentation_5.prototxt --weights=segmentation_5.caffemodel --blob_prefix=feature/segmentation_5_test_ --gpu=0 --save_seperately=false --iterations=[...]
which is described in issue #16:
#16
refers to this part of your README section:
https://github.com/Microsoft/O-CNN#o-cnn-for-shape-segmentation

Do you have an example segmentation_5.caffemodel you could provide?
Thanks.

Visualizing part segmentation output without doing CRF

For the segmentation task, after running the network in test mode we end up with 2 files:

test_labelo.dat
test_prob.dat

which are the class labels [segmentation part numbers] and classification probabilities, concatenating together all test examples since uses "save_seperately=false"
They are .dat fomat

In the README:
https://github.com/Microsoft/O-CNN/blob/master/README.md#o-cnn-for-shape-segmentation
you suggest using the CRF code from:
https://github.com/wang-ps/O-CNN/tree/master/densecrf

vs. in issue #11 you also mentioned the function void load_pointcloud() defined in Line 141 in the file octree/Octree/main.cpp.

If I don't want to do CRF refinement or just want to visualize my unrefined outputs directly that are in the .dat files, do you have an automated tool to visualize this, or do you describe a way of doing this?
Since each of the class labels corresponds to a leaf node of the octree, how do I go from this list of labels in the "labelo.dat" to the 3D model?

Thanks.

octree2mesh

octree2mesh.exe takes parameters "--depth_start" and "--depth_end".

For the image2shape experiment, what values should these be set to? (they are default 0 and 10)

Get dense point clouds with normals failed

I want to get dense point clouds with normals from ShapeNet models.
So I use virtual_scanner to convert the obj file.
But the content is garbled. Even I use the Dockerfile of this project to set the environment, it's also garbled.

The following is the process with docker:
O-CNN_Docker_Setup.txt This is the log when I built image.There were some warning.

Then I ran it, I founded there were no "build" folder at virtual_scanner and octree.
So I followed the readme to build, and this is the log of building virtual_scanner:
build_virtual_scanner_inDocker.txt

But the point file of result was also garbled like this:
point_file

I also tried octree to convert this point file. This is the log of building octree:
build_octree_inDocker.txt
Then I testd points2ply, but the out was

Processing: _POINTS_1
Segmentation fault (core dumped)

The _POINTS_1.ply is empty.

I don't know how to solve it. Hope some help. Thanks.

building LMBD for shape segmentation task

What tool should I use to build the lmbd database to use in the shape segmentation task? I am asking because:

For the O-CNN for Shape Segmentation task:
Your network works successfully when I download the zip file "segmentation.zip" which contains the already formatted lmdb.

But if I want to use my own octrees made from using your provided "octree.exe", the README says to run "convert_octree_data.exe".

But looking through the convert_octree_data.cpp code, it says "This script converts the ModelNet dataset to the leveldb/lmdb format used by caffe to perform classification". For the modelnet object classification, there was only 1 label per octree file because a given octree for an object had only 1 classification. But for the segmentation task, every normal vector has labels so the lmdb format would be different right?

So my question is what tool should I use to build the lmbd database to use in the shape segmentation task and if you can provide it if you have it?

Thanks.

Docker file fix

Seems recent commit in the NCCL library broke the docker file. You get the nccl ... make: No rule install error.

I had to edit the docker file by adding

&& git checkout 286916a1a37ca1fe8cd43e280f5c42ec29569fc5

to line 62 of the file. This forces the NCCL version to be the version before this commit. The relevant code involving that line now reads

RUN git clone https://github.com/BVLC/caffe.git . && git reset --hard $CAFFE_COMMIT && \
    rsync -a $OCNN_ROOT/caffe/ ./ && ex -sc '83i|set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")' -cx CMakeLists.txt && \
    cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \
    git clone https://github.com/NVIDIA/nccl.git && cd nccl && git checkout 286916a1a37ca1fe8cd43e280f5c42ec29569fc5 && make -j install && cd .. && rm -rf nccl && \
    mkdir build && cd build && \
    cmake -DUSE_CUDNN=1 -DUSE_NCCL=1 .. && \
    make -j"$(nproc)" && \
    mkdir $CAFFE_ROOT/include/caffe/proto && \
    cp $CAFFE_ROOT/build/include/caffe/proto/caffe.pb.h $CAFFE_ROOT/include/caffe/proto/caffe.pb.h

segmentation prototxt: "segmentation part number"

In your segmentation prototxt, you mention that output should be changed depending on segmentation part number. The phrase "segmentation part number" just means the number of segmentation parts, right?
So with your net, if I set the num_output to be 2, could I use your net to do classification as empty/filled for looking at occupancy in 3D space?
In other words, I'm assigning "part categories" to either of two "parts": either the "filled" or "empty" parts, so I'm basically doing segmentation of the 3D space into empty or filled categories?

This is the last layer you have that mentions "segmentation part number"

layer {
  name: "deconv2_ip"
  type: "Convolution"
  bottom: "deconv5"
  top: "deconv2_ip"
  convolution_param {
  ### NOTE: num_output should be changed according
  ###       to the segmentation part number
    num_output: 4
    kernel_h: 1
    kernel_w: 1
    stride: 1
    bias_term: false
    weight_filler {
      type: "msra"
    }
  }
}

Question about segmentation

Hello,
When I tried to do semantic segmentation on depth=6 octree, I encountered some problems. The error screenshot is as follows.
qq 20180423115420

When modifying the segmentation Network, what I need to pay attention to? My modified prototxt file is sent to your mailbox. Can you give some suggestions? Thank you.

O-CNN net initialization

  • I'm running your segmentation 5 model with the default parameters.
  • I'm using the same data you provided M40_5_2_12 LMDB data [train and test]
  • Ubuntu 16.04, From the attached output, you can see it creates layer octreedatabase, loads the LMDB data, starts initializing the network architecture, but then has an issue with the octree_database_layer.

Do you know what is going on here? Thanks.
ocnn_output_issue.txt

question about octree_deconv_layer

Hello,I want to ask you for help.
When you do segmentation task, in segmentation_5.prototxt,why the deconv layer's type is OctreeConv,rather than OctreeDeconv? The question is shown in the figure.
1540127033 1

So Is this layer set up by the octree_conv_layer.hpp/cpp/cu ,or set up by the octree_deconv_layer.hpp/cpp/cu?

Thank you!

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.

Convert ModelNet40 .points into .octree

When I converted the ModelNet40 .points files "cone_0117", "cone_0133" and "curtain_0066" into octree, the Octree.exe stopped at exception.

void bounding_sphere_fast(float& radius, float* center, const float* V, const int n)
{
	float bb[3][2] = { { FLT_MAX,-FLT_MAX },{ FLT_MAX,-FLT_MAX },{ FLT_MAX,-FLT_MAX } };
	int id[6];
	for (int i = 0; i < 3 * n; i += 3)
	{
		if (V[i] < bb[0][0])
		{
			id[0] = i; bb[0][0] = V[i];
		}
		if (V[i] > bb[0][1])
		{
			id[1] = i; bb[0][1] = V[i];
		}
		if (V[i + 1] < bb[1][0])
		{
			id[2] = i; bb[1][0] = V[i + 1];
		}
		if (V[i + 1] > bb[1][1])
		{
			id[3] = i; bb[1][1] = V[i + 1];
		}
		if (V[i + 2] < bb[2][0])
		{
			id[4] = i; bb[2][0] = V[i + 2];
		}
		if (V[i + 2] > bb[2][1])
		{
			id[5] = i; bb[2][1] = V[i + 2];
		}
	}

	radius = 0;
	int choose_id = -1;
	for (int i = 0; i < 3; i++)
	{
		float dx = V[id[2 * i]] - V[id[2 * i + 1]];
		float dy = V[id[2 * i] + 1] - V[id[2 * i + 1] + 1];
		float dz = V[id[2 * i] + 2] - V[id[2 * i + 1] + 2];
		float r2 = dx * dx + dy * dy + dz * dz;
		if (r2 > radius)
		{
			radius = r2; choose_id = 2 * i;
		}
	}
	center[0] = 0.5f * (V[id[choose_id]] + V[id[choose_id + 1]]);
	center[1] = 0.5f * (V[id[choose_id] + 1] + V[id[choose_id + 1] + 1]);
	center[2] = 0.5f * (V[id[choose_id] + 2] + V[id[choose_id + 1] + 2]);

	float radius2 = radius * 0.25f;
	radius = sqrtf(radius2);

	for (int i = 0; i < 3 * n; i += 3)
	{
		float dx = V[i] - center[0], dy = V[i + 1] - center[1], dz = V[i + 2] - center[2];
		float dis2 = dx*dx + dy*dy + dz*dz;
		if (dis2 > radius2)
		{
			float old_to_p = sqrt(dis2);
			radius = (radius + old_to_p) * 0.5f;
			radius2 = radius  * radius;
			float old_to_new = old_to_p - radius;
			center[0] = (radius * center[0] + old_to_new * V[i]) / old_to_p;
			center[1] = (radius * center[1] + old_to_new * V[i + 1]) / old_to_p;
			center[2] = (radius * center[2] + old_to_new * V[i + 2]) / old_to_p;
		}
	}
}

particularly,
float dx = V[id[2 * i]] - V[id[2 * i + 1]];
The .points files are converted from .off by the suggested 14 views for scanning

segmentation label output names swapped?

re: might be a small issue in saving the outputs:

Thanks for the new commit. After remaking caffe and rerunning the network, using the new command from your readme with the new binary_mode option set to false:

caffe.exe test --model=myOctrees.prototxt --weights=myOctrees.caffemodel --gpu=0
  --blob_prefix=feature/myOctrees_test_ --binary_mode=false --save_seperately=true --iterations=[...]

I can open my groundtruth and prediction label files and read them. But I think the file names might be reversed; I think predicted<->groundtruth. Just want to check this in case someone uses it in future and it turned out the predictions looked really good only because they were actually the ground truth.

Cannot find output segmentation files

Hello,
I can't find output files in the testing stage.
My command is this:"./build/tools/Debug/caffe-d.exe" test --model=examples/o-cnn/segmentation_5.prototxt --weights=seg_5_s2_iter_5000.caffemodel --blob_prefix=feature/segmentation_5_test_ --binary_mode=false --save_seperately=false --iterations=500
I can run it and screenshot is this:
default
But there are not output files in my folder. Can you give some suggestions that I can get the output files? Thank you very much!

Automate the whole pipeline

Help wanted!
The whole pipeline includes building the code (under windows or linux platform), generating the octree dataset, and running the related experiments, which contains many trivial details.
Can anyone help to automate this process, via Python or other script languages, to save users' time?

question about IoU

I use the test command in your readme for part segmentation,and I set the iterations are 10, and I got ten pairs of files(predicted and groundtruth),but how can I use these to compute mIoU? For example, as I known,the plane(02691156) has four parts,but in one of my files, the groundtruth just have -1,0,1,2,and the predicted have 0,1,2, so is this inconsistent with four parts?
Furthermore,if the groundtruth's one line is -1,and the predicted's correspond line is 0 or 1 or 2, how do you judge it's true positives or false positives or false negatives?
true

Can not find executable files "octree2ply"

Hi,
Following the 1.1 Manual Setup ,I have built successfully Caffe directory 、O-CNN/ocnn/octree and virtual_scanner, got some executable files like octree、virtualscanner、octree2points...
image
But I can not find executable files "octree2ply" all the O-CNN/ directory,Can you give me some suggestions again?

upgrade_octree

I used your provided lmdb, and try to upgrade it.
But I could not find any upgrade_octree_database, however, there is a upgrade_octree.
Thus I adopt it to upgrade the lmdb, but it crashed and said that "bad alloc".
I am sure my memory is sufficient.

Thus I try to generate the dataset by myself, however, I could find convert_octree_data in Ubuntu.
Could you help me?

the evaluation metric of segmentation task

Hello,
In order to compare ocnn's performance with others,the evaluation metric is the intersection over union(IoU) of the part class,why don't you use the training accuracy and test accuracy directly?
By the way, could you tell me what's the training accuracy and test accuracy roughly?,I run the converted dataset (02691156),and my training accuracy is 0.91.
And, Is the code for solving IoU just use compared paper's?

Thank you!

Automated Dataset Setup

I was trying to make the lmdb file (for train and test) using your provided "prepare_dataset.py" but failed.
I tried several commands, both are failed (didn't execute)

  1. python prepare_dataset.py [-h] G:/Database/ModelNet/ ModelNet40 F:/Project/Octree_Data_preparation/Autometic_data/ F:/Project/Octree_Data_preparation/Autometic_data/ F:/Project/Octree_Data_preparation/Autometic_data CreateLmdb 5 2 0.55 24

python prepare_dataset.py G:/Database/ModelNet/ ModelNet40 F:/Project/Octree_Data_preparation/Autometic_data/ F:/Project/Octree_Data_preparation/Autometic_data/ F:/Project/Octree_Data_preparation/Autometic_data CreateLmdb 5 2 0.55 24

Plz guide me if possible expecting an example syntax.

Note: Manually making lmdb is perfectly working (manually making points_file then octree and then lmdb). I am using old O-CNN on Win-10

Can number of input channels larger than 3?

Hi,

I read the code and does not figure out how to set the number of input channels. For example, if the mesh node has some extra features (maybe another 2x1 vector), how can I embed these features along the 3x1 normal vector (totally 5x1 vector)? So the question is can O-CNN support any num_channelsNN*N tensor as input?

"PoolingParameter_RoundMode" is undefined

when I put the caffe code into the bvlc caffe,it appear the error like this when I build the code
"./include/caffe/layers/pooling_layer.hpp(54): error: identifier "PoolingParameter_RoundMode" is undefined"

Data format about Segmentation

In the document, I can see how to prepare the lmdb with <POINT, category>, but how should I prepare the lmdb with <POINT, corresponding semantic labels>?

I notice that the POINT structure incorporates XYZ and normal. Is the RGB information also supported?

Size of training dataset?

Hello. I have some questions again in segmentation task.
First is how many 3d models I should use In the training stage. I want to find fit numbers of models.
And second is whether the input is only 3d models with segmentation labels.
Thank you for your help.

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!

"full_layer" variable in Octree.cpp and main.cpp when building octrees

Hi, in main.cpp, when building octrees, you initialize the variable int full_layer as:
int full_layer = 2;

Does this mean you are actually only getting down to a 2x2x2 voxel resolution for this task?
In other words if I have e.g. a 32x32x32 volume, I would recursively partition into 16x16x16, and then 8x8x8, 4x4x4, then finally 2x2x2. But not 1x1x1?

So if I wanted to do 1x1x1 I would change full_layer = 1, is that correct?

Classification 3d volume

When I trained 2 categories: big and small depend on object's volume, I couldn't detect these categories as well as shape detection. Any body can help me solve this problem. Thank you very much!

curr_depth_

Hi,

I noticed your commit message says something about setting curr_depth_ manually. Where should I do that? Is it related to the following error I'm getting:

F1128 12:35:09.046485 2298 octree_base_conv_layer.cpp:158] Check failed: bottom_h == octree_batch_.node_num(curr_depth_) (199936 vs. 40448) The OctreePaddingLayer should be added before conv1

I'm getting this error related to the octree padding layer and number of octree nodes, despite using power of 2 cube dimensions (I'm using 64^3 volumes):

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.