百度网盘做存储网站,软件开发流程书籍,蜜雪冰城的网络营销方式,防止恶意点击软件管用吗一.Docker环境配置
1.简单介绍
–docker容器技术–。 简单理解#xff1a;Anaconda用于隔离不同的python环境#xff1b;docker可以理解成在你的机器里面安装了一个独立的系统#xff0c;因此它可以隔离不同的CUDA环境#xff0c;还有着独立的文件系统#xff0c;防止别…一.Docker环境配置
1.简单介绍
–docker容器技术–。 简单理解Anaconda用于隔离不同的python环境docker可以理解成在你的机器里面安装了一个独立的系统因此它可以隔离不同的CUDA环境还有着独立的文件系统防止别人删掉你的实验和环境等。 镜像images的意思就是静态的镜像文件 容器container就是一个基于镜像的活跃着的系统可以操作的实例我们可以进去跑代码。
2.安装nvidia-docker
前置条件你得有一张显卡。docker sudo apt-get install docker。查看是否安装好dockerNvidia Driver. NVIDIA驱动官网。查看是否安装好nvidia-smi接下来安装nvidia-docker。
distribution$(. /etc/os-release;echo $ID$VERSION_ID) \ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt-get update
sudo apt-get install -y nvidia-docker2sudo systemctl restart docker 重启一下docker接下来你就可以愉快的使用nvidia-docker了
3.拉取环境镜像
在此之前我们需要了解一下docker hub的一些仓库地址。在下方给出 Nvidia/cuda官方docker hub PyTorch官方docker hub
基于此我们可以去拉取官方仓库可以在tag当中搜索我们所需要的版本一般是选择devel版本其中包含了C/CUDA编译环境、视频解码、渲染等会比较全面些。然后在docker镜像去配置我们的深度学习环境。就像下面这样(因为DSP-SLAM的github上要求的cuda版本为11.3所以最好跟官方一致)
sudo docker pull nvidia/cuda:11.3.1-cudnn8-devel-ubuntu18.04 如果想删除多余的docker image可以使用指令
sudo docker rmi -f id
2.创建容器
sudo docker run -itd --runtimenvidia --gpus all --name dspslam -v /home/lm/docker/dspslam:/home/lm/docker/dspslam --nethost --envDISPLAY --volume$HOME/.Xauthority:/root/.Xauthority:rw -e NVIDIA_DRIVER_CAPABILITIEScompute,utility,graphics -e NVIDIA_VISIBLE_DEVICESall --privilegedtrue 9ac63d269265 /bin/bash
这个参数有点多依次解释一下
-it必备 d表示在背景里运行;-v 磁盘挂载 本地绝对路径:容器的绝对路径;--name 给你的container取个响亮的芳名;--runtime 表示启用nvidia--gpus 表示可以使用gpu且为all-e NVIDIA_DRIVER_CAPABILITIEScompute,utility,graphics,标红的三个缺一不可我当初就是因为缺了第三个graphics导致Pangolin的X11报错OpenGL服务用不了其他参数有的是开启GUI的有的是支持英伟达的大家可以自行搜索总之按照上面的指令就会构建好一个可以使用nvidia的容器
基于ubuntu18.04建立容器并开启GUI功能。
进入容器后会在root命令下到此我们便得到了一个纯净的ubuntu环境。
可以使用sudo docker ps查看正在运行的容器sudo docker ps -a查看所有容器
当我想要退出时输入exit退出容器然后使用sudo docker stop dspslam来停止容器当我想再次进入容器时使用sudo docker start dspslam启动容器再使用sudo docker exec -it dspslam bash进入容器
验证显卡是否可用
nvidia-smi 至此你就获得了一个具有nvidia driver和cuda支持的docker.
查看当前cuda版本
cd /usr/local
ls 可以看到版本确为11.3
主机在每次开机之后都需要运行下面的指令来指定允许连接的主机。
xhost
运行之后在docker容器内安装xarclock,运行指令
apt-get install xarclock
xarclock
运行后会出现一个小时钟表明docker内可以开启GUI服务。 二.Dsp-slam环境配置
1.准备代码
下载开源代码
git clone --recursive https://github.com/JingwenWang95/DSP-SLAM.git 安装基础包
apt-get install gcc g cmake git安装eigen3.4.0
因为要求版本为3.4.0所以不建议用apt安装这里选择源码编译安装使用以下指令下载源码
git_clone git clone --branch3.4.0 --depth1 https://gitlab.com/libeigen/eigen.git之后开始编译
cd eigen mkdir build cd build
cmake ..
make
make install
进入到/usr/local/include下查看是否安装成功 2.安装Anaconda
提前准备好安装包
sh Anaconda3-5.3.1-Linux-x86_64.sh 按照步骤安装即可 之后退出docker重新进入即可自动进入base环境 3.安装Pangolin v0.6
安装依赖
apt-get install libglew-dev libgtk2.0-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
apt-get install libpng-dev
配置并编译
cd Pangolin-0.6
mkdir build cd build
cmake -DCPP11_NO_BOOST1 ..
make -j
make install
4.安装OpenCV3.4.1
接下来去opencv官网找到opencv3.4.1的源码包
下载下来后进行编译安装,首先需要安装一些依赖和工具
apt-get install build-essential libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libvtk7-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev其中安装libjasper-dev时会报错找不到软件包
因此首先
vi /etc/apt/sources.list
在最后一行加上
deb http://security.ubuntu.com/ubuntu xenial-security main
然后
apt-get update
apt-get install libjasper-dev
即可
依赖安装好后进行正式编译安装
mkdir build cd build
cmake --DCMAKE_BUILD_TYPERelease -DWITH_CUDAOFF -DBUILD_DOCSOFF -DBUILD_PACKAGEOFF -DBUILD_TESTSOFF -DBUILD_PERF_TESTSOFF -DBUILD_opencv_appsOFF -DBUILD_opencv_calib3dON -DBUILD_opencv_cudaoptflowOFF -DBUILD_opencv_dnnOFF -DBUILD_opencv_dnn_BUILD_TORCH_IMPORTEROFF -DBUILD_opencv_features2dON -DBUILD_opencv_flannON -DBUILD_opencv_javaON -DBUILD_opencv_objdetectON -DBUILD_opencv_python2OFF -DBUILD_opencv_python3OFF -DBUILD_opencv_photoON -DBUILD_opencv_stitchingON -DBUILD_opencv_superresON -DBUILD_opencv_shapeON -DBUILD_opencv_videostabOFF -DBUILD_PROTOBUFOFF -DWITH_1394OFF -DWITH_GSTREAMEROFF -DWITH_GPHOTO2OFF -DWITH_MATLABOFF -DWITH_NVCUVIDOFF -DWITH_OPENCLOFF -DWITH_OPENCLAMDBLASOFF -DWITH_OPENCLAMDFFTOFF -DWITH_TIFFOFF -DWITH_VTKOFF -DWITH_WEBPOFF ..
make -j6
make install 查看是否安装成功
pkg-config --modversion opencv5.安装g2o、DBoW2
进入到/dspslam/DSP-SLAM-master/Thirdparty文件夹下找到g2o、DBoW2的文件夹分别进行安装
安装g2o
cd g2o
mkdir build cd build
cmake -DEigen3_DIR$/usr/local/share/eigen3/cmake ..
make -j6
安装DBoW2
cd DBoW2
mkdir build cd build
cmake ..
make -j6
6.创建python虚拟环境
按照常规来说应该是按照build_cuda113.sh的内容来以此执行的但是我遇到了网络连接的问题因此我修改了coda的下载地址更改为清华源了
参考链接 接着创建一个虚拟环境命名为dspslam
conda create --namedspslam python3.7
接着按照environment_cuda113.yml文件的内容挨个安装使用conda install 安装dependencies, pip insatll pip部分但是安装到pytorch时遇到问题因此果断选择采用离线安装包的方式进行安装根据版本要求分别下载以下三个因为其他都能正常装地址为
torch.whl地址
torchvision.whl地址
cudatoolkit地址 之后直接pip install xxx.whl和 conda install --offline xxx.tar.bz2即可进行验证 7.安装mmdetection and mmdetection3d
pip install pycocotools2.0.1
pip install mmcv-full1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
pip install mmdet2.14.0
pip install mmsegmentation0.14.1
然后进入DSP-SLAM/Thirdparty/下运行指令
git clone https://github.com/JingwenWang95/mmdetection3d.git 然后
cd mmdetection3d
pip install -v -e . 中间会频繁出现几个warning警告,但是无妨最终成功安装
8.编译DSP-SLAM
编译DSP-SLAM 按照build_cuda113.sh的内容首先进入DSP-SLAM目录下
mkdir build cd build sh文件里说要运行下面两条命令是有关pybind11的我仔细查了一下发现他的意思就是获得当前conda虚拟环境的路径因此我对他进行了修改不需要执行下面两句而是修改cmake..的参数
conda_python_binwhich python
conda_env_dir$(dirname $(dirname $conda_python_bin))编译DSP-SLAM(修改后的conda_env_dir我直接索引到他的路径)
cmake -DEigen3_DIR/usr/local/share/eigen3/cmake -DPYTHON_LIBRARIES/root/anaconda3/envs/dspslam/lib/libpython3.7m.so -DPYTHON_INCLUDE_DIRS/root/anaconda3/envs/dspslam/include/python3.7m ..
会出现warning应该不会出现问题继续make 准备weights和data
新建weights和data文件夹并下载相关weights
下载链接 最后的DSP-SLAM文件结构如下 尝试运行代码
./dsp_slam Vocabulary/ORBvoc.bin configs/KITTI04-12.yaml data/kitti/07 map/kitti/成功运行
Save and visualize map
会得到三个文件 之后根据脚本可视化
python3 extract_map_objects.py --config configs/config_kitti.json --map_dir map/kitti --voxels_dim 64它将在map/kitti下创建一个新的目录并将所有的网格和物体姿态存储在那里。然后你可以通过运行以下命令来可视化重建的关节地图
python3 visualize_map.py --config configs/config_kitti.json --map_dir map/kitti over