配置:ubuntu18.04,RTX2060,virtualenv,python3.6,cuda100,torch1.0.0
github链接:densefusion-pytroch1.0.0
我是通过virtualenv安装的虚拟环境,因为不太会用anaconda,cuda配置总是弄不好,所以通过更改系统cuda软链接来调整cuda版本。
cuda配置
调整系统cuda版本的方式:
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-xx.x /usr/local/cuda # cuda-xx.x根据自己情况,自行更改
在终端输入nvcc -V
查看是否调整为想要的cuda版本
成功调整为cuda 10.0
安装pytorch
直接在官网搜索就行了:pytorch下载
一定要选自己cuda版本的torch和torchvision!
下好之后在终端pip即可
pip install torch-1.0.0-cp36-cp36m-linux_x86_64.whl torchvision-0.2.0-py2.py3-none-any.whl
torch安装测试
运行测试文件,测试文件,输出
注意cuda版本是10.0,如果是cuda9.0后面会报错
包安装
后续安装densefusion需要的包
sudo apt-get update
pip install scipy numpy pyyaml matplotlib opencv-python
链接数据集
下载linemod数据集:google云盘下载困难,我上传了百度云盘
把linemod数据集软链接在项目目录下:
(可以把数据下载到硬盘中,然后链接到项目目录下,这样数据集就不占电脑空间)
ln -s /home/datasets/Linemod_preprocessed /DenseFusion-master/datasets/linemod/Linemod_preprocessed
出现一个链接就成功了
然后把上面下载的文件中有一个trained_checkpoints复制到项目目录下(文件夹里是预训练模型,作者提供的,测试要用)
代码修改
由于环境包的函数更新等问题,需要对源代码改两个地方:
(1)/DenseFusion-Pytorch-1.0/datasets/linemod/dataset.py : 218行
改为
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
去掉前面的 _ ,
(2)/DenseFusion-Pytorch-1.0/tools/eval_linemod.py : 59行
meta = yaml.load(meta_file,Loader=yaml.FullLoader)
加上后面的 Loader=yaml.FullLoader
编译knn-pytorch包
进入/DenseFusion-Pytorch-1.0/lib/knn
python setup.py build
python setup.py install
看到生成build和dist文件夹。进入dist文件夹,将里面的knn_pytorch-0.1-py3.6-linux-x86_64.egg文件解压,将knn_pytorch-0.1-py3.6-linux-x86_64里面的so和knn_pytorch.py文件复制到//DenseFusion-Pytorch-1.0/lib/knn目录。
最终knn文件夹截图如下
代码跑通
到现在densefusion的环境配置就完成了,进行验证
bash ./experiments/scripts/eval_linemod.sh
成功运行!
最终结果:
补充:docker配置
补充一个其他人的docker,原github链接:hoangcuongbk80/Object-RPE
作者的原docker链接:hoangcuongbk80/densefusion-pytorch-1.0
我改过的docker链接:yel1998/yel_ds( 添加了阿里云源,安装了opencv-python )
也调试通过了,成功截图:
docker配置还需要学一些新知识,pull image,run container,和宿主机映射文件夹等,还配置了ssh通过pycharm调试。但是由于ssh服务时不时的自己卸载,pycharm就连不上了。不如本机虚拟环境稳定,还是优先考虑virtualenv
(流程繁琐,想了解的评论区问吧)