【点云训练】RandLA-Net Semantic3D

目录

 

1 编译

2 数据下载

3 数据预处理

4 训练

* Ubuntu18.04安装多个版本的GCC、G++

* ImportError: libcablas.so.9.0 No such file

* Distutils实现python的C/C++扩展


1 编译

这篇文章使用了C++代码,因此需要在本地进行编译。

sh compile_op.sh

运行后我报了:error: could not create 'build/temp.linux-x86_64-3.5'的错,网上的解决方法包括:

(1)chmod -R 777 xxx

(2)sudo python sh xxx

(3)python sh xxx --user

其中,sudo python使用的Python是系统默认的,需要修改usr/bin/python的软链接。

sudo rm -rf /usr/local/python
sudo ln -s ~/anaconda3/envs/randlanet/bin/python /usr/local/python

并将comple_op.sh和compile_wrappers.sh中的python xxx/python3 xxx前面添加sudo。修改后成功数据预处理。

 

2 数据下载

对于提前下载好的数据,修改download_semantic3d.sh文件中的BASE_DIR就好,这个地址是相对于RandLA-Net文件的。

 

3 数据预处理

我将helper_tool.py的引用函数部分修改为:

import utils.cpp_wrappers.cpp_subsampling.grid_subsampling as cpp_subsampling
import utils.nearest_neighbors.lib.python.nearest_neighbors as nearest_neighbors

修改后运行成功。

 

4 训练

报了ResourceExhaustedError的错,查下来是资源不足。在helper_tool.py中修改ConfigSemantic3D类中的batch_size和val_batch_size,运行成功。

 

* Ubuntu18.04安装多个版本的GCC、G++

参考:https://blog.csdn.net/liuweiyuxiang/article/details/81089609

gcc -v                      #查看当前gcc版本
ls /usr/bin/gcc*            #查看所有的gcc
sudo apt-get install gcc-5  #安装对应版本的gcc

sudo update-alternatives  --install  /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives  --install  /usr/bin/gcc gcc /usr/bin/gcc-7.5 40
sudo update-alternatives --config gcc

 

* ImportError: libcablas.so.9.0 No such file

tensorflow-gpu版本不符合

 

* Distutils实现python的C/C++扩展

C/C++通过编译和链接,生成Linux下的动态链接库文件.so,供python调用

ext_modules = [Extension(   # 每一个Extension实例描述一个独立的扩展模块
       "nearest_neighbors", # 指定扩展包名称
       sources=["knn.pyx", "knn_.cxx",],  # 指定源文件
       include_dirs=["./", numpy.get_include()], # 头文件
       language="c++",            
       extra_compile_args = [ "-std=c++11", "-fopenmp",], # 编译附加命令行选项
       extra_link_args=["-std=c++11", '-fopenmp'],
  )]

setup(
    name = "KNN NanoFLANN",  # 包名称
    ext_modules = ext_modules,
    cmdclass = {'build_ext': build_ext},
)

如RandLA中生成nearest_neighbors.xxx.so文件。调用时直接import nearest_neighbors as nearest_neighbors即可。

你可能感兴趣的:(点云框架)