一、 环境配置
之前配置的cuda11.3很多包版本不一致导致程序无法正常运行,又重新安装了cuda9.0,并更换了python版本,但是折腾半天显示显卡不可用,最后查找各种资料才知道30系列显卡不支持11.0以下的cuda,即使安装成功也不能调用,因此最终还是使用了CUDA11.3配置环境,python选3.6,pytorch版本1.10.0
conda create --name DF-VO113 python=3.6
conda activate DF-VO113
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
【以下部分为参考内容,与DF-VO环境配置无关,可跳过 】
=========================================================================
安装pytorch,查找对应cuda的版本
复制对应命令并下载,但conda报错
使用wheel下载并安装(ctrl+F查找需要的版本)
下载完pytorch和torchvision的.whl文件之后,在下载的目录内使用下列命令即可:
pip install torchvision-0.3.0-cp36-cp36m-win_amd64.whl
pip install torch-1.1.0-cp36-cp36m-win_amd64.whl
=========================================================================
【参考内容结束,以下为DF-VO环境配置部分 】
pytorch配置好后,安装其他需要的包
pip install argcomplete==1.10.0
pip install colour-demosaicing==0.1.5
pip install colour-science==0.3.15
pip install m2r==0.2.1
pip install natsort==6.0.0
pip install opencv-python==3.4.3.18
pip install pot==0.7.0
pip install protobuf==3.8.0
pip install rstcheck==3.3.1
pip install sphinx==3.0.3
pip install sphinx-rtd-theme==0.4.3
pip install sphinxcontrib-applehelp==1.0.2
pip install sphinxcontrib-devhelp==1.0.2
pip install sphinxcontrib-htmlhelp==1.0.3
pip install sphinxcontrib-jsmath==1.0.1
pip install sphinxcontrib-qthelp==1.0.3
pip install sphinxcontrib-serializinghtml==1.1.4
pip install tensorboardx==1.7
运行命令测试程序
python apis/run.py -d libs/options/examples/default_configuration.yml -c libs/options/examples/kitti_stereo_train_icra.yml --no_confirm
继续安装其他缺少的包
pip install matplotlib
pip install tqdm
pip install cupy113
pip install cupy-cuda113
cuda113代表cuda11.3,根据自己的cuda版本修改,不加cudaxx会报以下错误
若继续报错module 'cupy' has no attribute 'util',则可能由于pytorch版本升级,cupy更新后没有了util属性,报错页面如下
【解决方法】
进入目录D:\yanjiusheng\DF-VO-master\libs\deep_models\flow\lite_flow_net\correlation.py", line 276, in <module>
@cupy.util.memoize(for_each_device=True)
将代码中的
@cupy.util.memoize(for_each_device=True)
修改为
@cupy.memoize(for_each_device=True)
另一处目录为
File "D:\yanjiusheng\DF-VO-master\libs\deep_models\flow\hd3\models\correlation.py", line 289, in <module>
@cupy.util.memoize(for_each_device=True)
修改后不报这个错了,若不报错则无需操作,继续安装缺少的包
pip install sklearn
pip install easydict
pip install pyyaml
yaml这个库pip 里要加py前缀 ,直接pip安装yaml时会报如下错
继续,报以下错
将options文件夹移动到libs文件夹下,到此环境配置完成,接下来需要准备数据集进行测试。
二、下载数据和模型
官方的github给出了下载地址,KITTI可能下载有点慢,可以CSDN找一下其他百度网盘的资料,模型可能要翻墙
三、处理数据
项目中的第一个步骤是运行run.py,但是代码中读取的是jpg格式的图片,而我从KITTI下载下来的是png的,而且像素也对不上,所以要改一下。以下是代码:
import cv2
import sys
import os
dirlist = os.listdir(r'D:\\yanjiusheng\\KITTI\\data_odometry_color\\dataset\\sequences\\00\\image_3')
output_folder = r"D:/yanjiusheng/DF-VO-master/dataset/kitti_odom/odom_data_jpg/00/image_3/"
os.makedirs(output_folder, exist_ok=True)
j = 0
for i in dirlist:
print(i)
# 我这里的地址是这样,这是PNG的地址
img = cv2.imread(r"D:/yanjiusheng/KITTI/data_odometry_color/dataset/sequences/00/image_3/{}".format(i))
res = cv2.resize(img, (640, 192))
name = i.split('.')[0]
# 这个是保存的图片地址,就是jpg的
cv2.imwrite(r"D:/yanjiusheng/DF-VO-master/dataset/kitti_odom/odom_data_jpg/00/image_3/{}.jpg".format(name), res)
j += 1
四、其他问题处理
以上都完成后运行程序,在输出进度条的时候显示有以下问题Cannot find enough good keypoints from diversed regions!
且预测的位姿图明显和真实轨迹不一样
这一问题在作者github的讨论(已关闭的问题里)中有提到,解决方法是:
pytorch版本问题导致某些语句不兼容
在文件 "DF-VO/libs/deep_models/flow/lite_flow_net/lite_flow_net.py "中28行:
找到并修改为下面的语句:
“return torch.nn.functional.grid_sample(input=tensorInput, grid=(Backward_tensorGrid[str(tensorFlow.size())] + tensorFlow).permute(0, 2, 3, 1), mode=‘bilinear’, padding_mode=‘zeros’,align_corners = True)”
修改后页面如下
最终运行结束前画面如下
可以看到已经能够追踪正确的轨迹了,至此DF-VO环境配置与运行测试工作全部完成!