试图运行以下代码: https://github.com/yinyunie/RfDNet
花了很久,特此记录采坑总结。
总结
关于install:
- pip install -r requirements.txt 之前先看一下他的要求,会发现里面有的用了本地链接。这种要删掉。
- 同时如果requirements.txt 里面都是明确指定了版本号,即用的==而非>=, 也要慎重。可能的话,先从requirements.txt里面删掉自己已经安装过的软件。
- 尽量不要动cuda,跟硬件和驱动都有关,如果不适配的话动torch。
- torch也不要直接用reuqirements安装,可能会导致和cuda版本不匹配。
关于图形界面显示
如果出现
vtkXOpenGLRenderWindow.:448 ERR| vtkXOpenGLRenderWindow (0x93811700): bad X server connection. DISPLAY=
其中DISPLAY是要配的环境变量,指向远程显示客户端的ip地址。 这个报错是因为,代码想显示图形界面,但你的linux系统只有命令行,他想从X server机制显示界面在别处,但这个X server连接不太行。网上有一些使用Xming等工具配置的教程,挺简单的,但不知道是不是因为我是教育网,我没配成功。我选择直接注释掉可视化代码,把结果保存
关于修改代码
先开始我在AIStation的jupyter book直接修改代码,一直不行,最后在pycharm里面修改才生效。 后来发现是因为我的工程根目录不知道啥时候套了一层,我应该修改RfDNet/demo.py (删掉可视化部分),但改成了RfDNet/RfDNet/demo.py。 而运行的一直是前者,所以表现为咋改代码都不生效。
过程
过程很心酸。 先开始用windows试的,最后一直卡在> distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools” 装了无数东西都没用。
后来还是决定改linux。
主要挫折是一开始想配成和作者完全一样的环境,就要改cuda,改半天驱动好像有点问题。最后放弃了。
重点是,requirements.txt里面规定了所有包的精确版本,但pointNet这个依赖里是需要pytorch>1.4.
所以我最后的做法是找了一个已有的torch符合要求,且cuda也配好了的电脑进行。后面只用装其他包即可。
在torch和cuda配好的情况下,基本只需要以下步骤: 0. 测试一下torch和cuda配好没有:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
这时候直接执行demo那行命令:
python main.py --config configs/config_files/ISCNet_test.yaml --mode demo --demo_path demo/inputs/scene0549_00.off
应该会说缺pointNet。
ModuleNotFoundError: No module named ‘pointnet2_ops’
-
安装pointNet: cd external/pointnet2_ops_lib pip install . -
这时候可能会说却别的包,比如trimesh。由于他的包很多,最好还是一气儿都安装了。 我本人把requirements.txt里面的本地路径的删了,所有版本号都删了。在根目录RfD里面测试 pip install -r requirements.txt 说mkl不行。最后我把requirements.txt里面带mkl都删了,再试就行了。 -
下一个报错是 RuntimeError: Ninja is required to load C++ extensions
百度得到解决方案为:
wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
unzip ninja-linux.zip -d /usr/local/bin/
update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force
- 下一个报错:
Traceback (most recent call last): File “main.py”, line 37, in import demo File “/li_wei/yuqiao/point_cloud/RfDNet/demo.py”, line 19, in import vtk File “/usr/local/lib/python3.6/dist-packages/vtk.py”, line 30, in all_m = importlib.import_module(‘vtkmodules.all’) File “/usr/lib/python3.6/importlib/init.py”, line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File “/usr/local/lib/python3.6/dist-packages/vtkmodules/all.py”, line 8, in from .vtkWebCore import * ImportError: libGL.so.1: cannot open shared object file: No such file or directory
百度得到解决方案: apt-get update ##[edited] apt-get install ffmpeg libsm6 libxext6 -y
- 最后一个报错:
vtkXOpenGLRenderWindow.:448 ERR| vtkXOpenGLRenderWindow (0x93811700): bad X server connection. DISPLAY=
如上文所述,原因是我的服务器之有命令行,但代码想显示图形界面。这个X server我想配到windows没成功,于是就注释掉可视化的代码。也就是demo.py的最后一句:
#visualize(output_dir, offline=False)
大功告成!
同时我还在save_visualization里面输出了一下保存路径:
'''Dump boxes'''
if np.sum(objectness_prob > DUMP_CONF_THRESH) > 0:
if len(box_params) > 0:
save_path = os.path.join(output_dir, '%06d_pred_confident_nms_bbox.npz' % (batch_id))
np.savez(save_path,
obbs=box_params[np.logical_and(objectness_prob > DUMP_CONF_THRESH, pred_mask[batch_id, :] == 1), :],
proposal_map=BATCH_PROPOSAL_IDs)
print(save_path)
然后去看结果: 有一个png文件和一些ply文件: 在这里插入图片描述
requirements.txt
我最后把requirements.txt删减成这样用的: absl-py cachetools certifi chardet cycler Cython decorator google-auth google-auth-oauthlib grpcio idna imageio importlib-metadata kiwisolver llvmlite Markdown matplotlib
networkx numba numpy-quaternion oauthlib olefile pandas plyfile protobuf pyasn1 pyasn1-modules PyMCubes pyparsing python-dateutil pytz PyWavelets PyYAML requests requests-oauthlib rsa scikit-image scipy seaborn Shapely tensorboard tensorboard-plugin-wit tifffile tqdm trimesh urllib3 vtk Werkzeug zipp
后续
后续有可能更新predict和train的情况
|