还没入门,刚刚跑通了DenseFusion pytorch1.6.0版本的,记录一下踩坑过程
下载源码:
DenseFusion pytorch1.6.0
因为按照pytorch1.0失败了,所以选择了1.6.0版本
程序虽然不大,但是数据集很大,有大佬建议建立软链接可以把数据集放在硬盘里,但是我直接把程序放在硬盘里了,就不担心系统内存不够了(主要是没学会软链接)
LineMOD数据集比YCB要小,这两天断网还没有下完YCB所以先用LineMOD数据集试试
环境配置
笔记本显卡应该是2060Ti,太久了记不清具体型号了,反正是20系。
驱动如图:
从base应该能看出是在anaconda下搞的,具体怎么安anaconda就先不提了,直接上主题
创建虚拟环境
conda create -n df-Py1.6 python=3.6
激活虚拟环境:
conda activate df-Py1.6
如果想要退出虚拟环境:
conda deactivate
安装pytorch1.6.0:
我用的pip安装的,因为conda安装失败
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 torchaudio==0.6.0 -f https://download.pytorch.org/whl/torch_stable.html
这几个版本是要配套的,不知道的可以参考一下这位大佬的链接:
PyTorch中torch、torchvision、torchaudio版本对应关系
安装其他库:
pip install scipy numpy pyyaml matplotlib opencv-python Pillow glog
pyyaml这个如果不指定版本可能会安装6.0版本的,后面会出关于loader的bug,这里建议指定安装5.4.1版本的,就没有了:
pip install pyyaml==5.4.1
源码里的库:
PIL是python2的,python3改成了Pillow
logging这个安装老是报错,搜了一下就改安装glog了,现在训练阶段还没出问题。
接下来需要编译knn(确实需要编译,别挣扎了)
cd lib/knn
python setup.py build
python setup.py install
执行完之后会在lib/knn文件夹下面出现一个dist文件夹,里面是编译好的.egg文件,下面将这个文件解压:
cd dist
unzip knn_pytorch-0.1-py3.6-linux-x86_64.egg #输入你自己的编译文件名
然后进入knn_pytorch文件夹把两个文件移动一下(剪切的找不到图了就是把knn_pytorch.cpython-36m-x86_64-linux-gnu.so和knn_pytorch.py文件剪切到knn下):
cd knn_pytorch
cp knn_pytorch.cpython-36m-x86_64-linux-gnu.so /work/DenseFusion/lib/knn
cp knn_pytorch.py /work/DenseFusion/lib/knn
如果一切顺利,把数据集放在对应的文件夹下,我这里的路径看图片上方。
还有trained_checkpoints放在根目录下,同样看下图
如果一切顺利,在这个文件夹里就可以训练啦:
./experiments/scripts/train_linemod.sh
回去跳了个操回来果然出bug了,真是一步也不能省
RuntimeError: Legacy autograd function with non-static forward method
is deprecated. Please use new-style autograd function with static
forward method. (Example:
https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)
如图:
解决方法:
打开/lib/loss_refiner.py文件修改第44行
为
inds = KNearestNeighbor.apply(target.unsqueeze(0), pred.unsqueeze(0))
如图:
我估计百分百还会有bug,我先去训练试试,有问题再补充,感谢大佬,参考连接:
DenseFusion复现详解(全流程图解)
DenseFusion Demo复现(30系显卡+CUDA11.1+pytorch1.8.0))
如果需要数据集我再来放链接,主要是现在断网了我自己也没下完。。。。。。。。。