1. 环境感知算法概述
在自动驾驶领域,环境感知算法主要负责处理周围环境中障碍物和道路的信息,为车辆的决策与执行提供车辆与环境的数据。包括检测移动和静止的障碍物、确定车辆在环境中所处的位置,涉及的传感器有摄像头、激光雷达和毫米波雷达等。
本教程主要涉及自动驾驶环境与感知的主流算法的环境配置,并辅以简要的技术介绍。由于环境感知算法发展数年,部分算法在当下的硬件与软件环境中并不容易直接复现,不同包之间的依赖配置繁琐。笔者将若干重要的环境感知算法整理出来,每个环境都是在自己计算机上进行复现。
将对于如下算法进行复现:
1)CenterNet:CenterNet 是一种针对目标检测的深度学习模型。与其他的目标检测模型(如Faster R-CNN、YOLO或SSD)使用边界框回归不同,CenterNet 的主要思想是通过检测目标的中心点来进行目标检测。因此,它将目标检测的问题转化为一个回归问题,即预测目标的中心点坐标以及宽高。这种方法简化了模型的复杂性,提高了处理速度,同时保持了较高的检测精度。
CenterNet复现博客:
环境感知算法——2.CenterNet基于KITTI数据集训练https://blog.csdn.net/wenquantongxin/article/details/1309586942)PSMNet:PSMNet (Pyramid Stereo Matching Network) 是一种立体匹配网络,用于深度估计。立体匹配是计算机视觉中的一个重要任务,主要是通过比较两个摄像头捕获的图像,来估计场景中物体的深度。PSMNet 使用了一种三维卷积神经网络,并引入了多尺度和多层次的特性,以更准确地进行深度估计。
PSMNet复现博客:
环境感知算法——3.PSMNet基于Kitti数据集训练https://blog.csdn.net/wenquantongxin/article/details/1309608533)PointPillars:PointPillars 是一种处理三维点云数据的方法,主要应用于自动驾驶和机器人领域。PointPillars 将三维空间划分成多个柱状区域(Pillars),并将每个柱中的点云数据进行聚合,转化为二维特征表示。这种方法可以有效地减少计算复杂性,同时保持了较高的目标检测精度。
4)RandLANet:RandLANet(Randomly Anisotropic Network)是一种针对大规模三维点云分类和分割的神经网络。RandLANet引入了一种新的随机各向异性卷积(Randomly Anisotropic Convolution),这种卷积可以更好地捕获点云的各向异性特性。此外,RandLANet还采用了自注意力机制,可以动态地调整每个点的权重,从而提高模型的表现。
5)FMCW:FMCW(Frequency Modulated Continuous Wave)是一种连续波形的频率调制雷达技术。FMCW雷达发送一种频率随时间连续变化的信号,并接收由目标反射回来的信号。通过比较发送的信号和接收到的信号的频率差,可以测量目标的距离和速度。FMCW雷达由于其低功耗、高精度和抗干扰能力强等优点,被广泛应用于汽车雷达和无人机等领域。
2. Ubuntu 安装GPU驱动、CUDA和cudnn
假设现在已经在具有NVIDIA GPU的实体机上安装完成了Ubuntu 20.04系统,由于各个感知算法都需要调用GPU进行训练,故需要安装GPU驱动、CUDA和cudnn。
1)禁用nouveau
nouveau开源驱动与NVIDIA驱动相互冲突,如果设备安装了nouveau驱动,NVIDIA驱动将无法正常安装。
在终端中输入:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
此时,输入:
cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
将会出现:
blacklist nouveau
options nouveau modeset=0
表明禁用成功。
2)更新内核之后,重新启动
使用下列代码重启内核,代码运行时长为若干秒
sudo update-initramfs -u
重启内核之后,重新启动Ubuntu系统。
3)安装GPU驱动
使用 "Software & Updates" 应用中的 "Additional Drivers" 选项卡来安装 Nvidia 驱动,
例如选取Using NVIDIA driver metapackage from nvidia-driver-525(proprietary)。
此时,使用下列代码是大部分情况下是可以查看NVIDIA驱动情况的。
nvidia-smi
然而,某些情况下,由于没有关闭自动更新,使用nvidia-smi会出现报错:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.
需要通过:
ls /usr/src | grep nvidia
查找安装的驱动版本号,例如查找结果为nvidia-525.105.17,下文使用dkms中进行替换。
再执行:
sudo apt-get install dkms
sudo dkms install -m nvidia -v 525.105.17 # 替换为相应版本号
接下来,运行下列代码,将先黑屏再显示原来画面,
sudo modprobe nvidia
使用nvidia-smi即可出现版本号与GPU信息。
4)安装CUDA
通过https://developer.nvidia.cn/cuda-toolkit-archive下载CUDA安装包,最新版本为CUDA12.1,实测适用于大部分感知算法。请注意:Anaconda中每个环境都需要再安装一次CUDA Toolkit,需要保证Anaconda环境中的CUDA版本既适用于算法运行环境,又需要小于实体计算机中的CUDA版本。
在cuda_12.1.0_530.30.02_linux.run所在文件夹内,运行:
sudo sh cuda_12.1.0_530.30.02_linux.run
如果按照3)中已经安装GPU驱动,则不需要勾选(其实是叉选)Driver栏,如果安装成功
出现(以不安装Driver为例):
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-12.1/
Please make sure that
- PATH includes /usr/local/cuda-12.1/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-12.1/lib64, or, add /usr/local/cuda-12.1/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.1/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 530.00 is required for CUDA 12.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
按照上述提示内容,在终端中键入:
export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"
5)安装Cudnn
下载链接:https://developer.nvidia.cn/rdp/cudnn-download
官方安装指南:Installation Guide - NVIDIA Docs
通过下载链接获得Debian本地仓库安装包,例如选取Local Installer for Ubuntu20.04 x86_64 (Deb)下载安装包cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64。在官方教程中,需要将下列安装指令中的X.Y和8.x.x.x替换为特定的CUDA和cuDNN版本,则cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64就有X.Y对应于8.9,8.x.x.x对应于8.9.1.23。
导航到包含cuDNN Debian本地安装文件的<cudnnpath>
目录。启用本地仓库。
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.1.23_1.0-1_amd64.deb
导入CUDA GPG密钥:
sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.1.23/cudnn-local-A9C84908-keyring.gpg /usr/share/keyrings/
刷新仓库元数据:
sudo apt-get update
安装Runtime库:
sudo apt-get install libcudnn8=8.9.1.23-1+cuda12.1
安装开发库:
sudo apt-get install libcudnn8-dev=8.9.1.23-1+cuda12.1
安装代码样例:
sudo apt-get install libcudnn8-samples=8.9.1.23-1+cuda12.1
这样就在Debian系统中成功地安装了cuDNN。
6)在Linux上验证cuDNN是否已安装并正在正确运行
编译位于/usr/src/cudnn_samples_v8目录中的mnistCUDNN样例。
复制cuDNN样本到一个可写路径,并切换至对应目录:
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
为了避免编译mnistCUDNN时出错:
fatal error: FreeImage.h: No such file or directory
需要安装:
sudo apt-get install libfreeimage3 libfreeimage-dev
sudo apt-get update
编译并运行mnistCUDNN样例,样例为调用CUDNN进行了简单的mnist神经网络计算:
make clean && make
./mnistCUDNN
如果cuDNN已正确安装并运行,最终会显示以下消息:
Test passed!
这表示cuDNN已成功安装并可以正常运行。
7)更换清华源
编辑/etc/apt/sources.list,替换为如下内容。原内容建议另存。
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
3. 推荐几个易用的Ubuntu软件
刚从windows迁移至Ubuntu之后,内置软件或功能不能满足需求,或功能缺失,或单纯的感觉不如Windows中美观。现整理如下软件链接,可以实现几乎与Windows相同的体验。
1)编程软件
VScode:请勿使用Snap商店的VScode,功能是残缺的。请从官网下载。Download Visual Studio Code - Mac, Linux, WindowsVisual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.https://code.visualstudio.com/download
Anaconda:Free Download | AnacondaAnaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.https://www.anaconda.com/download/
2)Edge浏览器
稳定版:
Index of /repos/edge/pool/main/m/microsoft-edge-stable/https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/Dev版:
Become a Microsoft Edge Insider | Microsoft EdgeBe the first to preview what's new by becoming a Microsoft Edge Insider and downloading the Insider channels.https://www.microsoft.com/en-us/edge/download/insider?form=MA13FJ3)搜狗输入法
下载链接:
搜狗输入法linux-首页搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://shurufa.sogou.com/linux安装指南:
搜狗输入法linux-安装指导搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://shurufa.sogou.com/linux/guide
4)下载工具:迅雷与百度网盘都是有Linux版本的。
5)VLC视频播放
sudo apt install vlc
6)终端控制
sudo apt install terminator