目录
1 编译
2 数据下载
3 数据预处理
4 训练
* Ubuntu18.04安装多个版本的GCC、G++
* ImportError: libcablas.so.9.0 No such file
* Distutils实现python的C/C++扩展
这篇文章使用了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。修改后成功数据预处理。
对于提前下载好的数据,修改download_semantic3d.sh文件中的BASE_DIR就好,这个地址是相对于RandLA-Net文件的。
我将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
修改后运行成功。
报了ResourceExhaustedError的错,查下来是资源不足。在helper_tool.py中修改ConfigSemantic3D类中的batch_size和val_batch_size,运行成功。
参考: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
tensorflow-gpu版本不符合
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即可。