环境感知算法——1.简介与GPU驱动、CUDA和cudnn配置

news2024/12/25 9:12:04

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/595307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件工程的问题

我长期以来一直是这个应用程序的用户&#xff0c;它一直快速、响应迅速且易于使用。 然而&#xff0c;在上周的一次更新之后&#xff0c;启动时间从不到一秒钟大幅增加到超过 15 秒。唯一明显的变化是添加了一个新的启动界面和更新了用户界面。 我经常发现自己在质疑为什么工程…

qt+mysl的制作软件的整体思路

环境配置 conda env list 创建环境conda create -n qt python=3.8 激活环境conda activate qt

软考A计划-电子商务设计师-计算机系统基础知识

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

年内落地BEV,大算力芯片准备好了吗?

讲述&#xff5c;余轶南 编辑 | Amy 编者注&#xff1a; 本文是HiEV出品的系列直播「硬核拆解BEV」第二期&#xff0c;地平线副总裁兼软件平台产品线总裁余轶南博士分享的内容梳理。 第三期商汤绝影量产行车智能驾驶研发负责人蒋沁宏分享的《BEV三大关键&#xff1a;数据、迁移…

TSNE 参数超级详细设置 from sklearn.manifold import TSNE

文章目录 一、TSNE是什么&#xff1f;二、使用步骤1.引入库 from sklearn.manifold import TSNE2.参数详细说明 一、TSNE是什么&#xff1f; TSNE&#xff08;t-Distributed Stochastic Neighbor Embedding&#xff09;是一种非线性降维技术&#xff0c;主要用于高维数据的可视…

什么是lamp架构

LAMP架构介绍 LAMP动态网站架构 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。 1、LAMP分别代表什么&#xff1f; L代表服务器操作系统使用LinuxA代表网站服务使用的是Apache软件基金会中的httpd软件M代表网站后台使用的数据库是MySQL数据库…

代码审计笔记之未授权审计(缺失功能级别访问控制)

主题 1、未授权漏洞以及危害介绍 2、未授权漏洞的审计思路与方法简介 大多数网络应用程序在用户使用功能之前&#xff0c;应用程序需要验证该用户是否有功能级的访问权限。如果请求未经应用程序的验证。攻击者讲通过伪造请求参数的手段&#xff0c;获取应用的业务响应。 危害…

更轻更快更耐用,重量79g,支持4KHz回报率的雷柏VT9上手

喜欢用键鼠玩游戏的朋友&#xff0c;都会选择专业游戏鼠标和键盘&#xff0c;特别是游戏鼠标&#xff0c;往往会有着更高的精度&#xff0c;以及更丰富的自定义空间&#xff0c;在游戏中可以实现更加精准的点击。最近我看到雷柏出了一款支持4K回报率的VT9鼠标套装&#xff0c;这…

查看Oracle中指定用户下包含的包、函数、存储过程及其对应内容语句——查看当前数据库的连接内容

一、需求分析 在项目运维的时候&#xff0c;公司出于数据安全的考虑&#xff0c;对数据库的权限进行了控制&#xff0c;限制运维人员只能够通过堡垒机查看Oracle数据库内容&#xff0c;并且堡垒机只是设定了一个只读的账号查看数据库&#xff1b;这就导致了运维时在查看数据库的…

【量化交易笔记】7.基于随机森林预测股票价格

前言 机器学习在量化交易主要有两方面的应用&#xff0c;第一就是用时间序列的日频数据来预测未来的股价&#xff0c;第二 用截面数据来预测收益&#xff0c;现在量化基因的因子都基于这个模型。 接下来&#xff0c;我分别来说明&#xff0c;机器学习分成预测结果分成分类和回…

MyBatis——MyBatis配置信息

1.MyBatis的日志配置 log4j1和log4j2的使用 在项目中添加依赖 log4j2 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.12.1</version> </dependency>log4j1 <…

基恩士IV3工业相机的使用

注意&#xff1a;此教程仅为IV3相机分类模型教程&#xff0c;IV3还具有工件缺陷检测模型&#xff0c;即将工件分为NG/OK,为二分类 IV3相机注册分类程序 一、传感器设定 拍摄条件&#xff1a;调节亮度与焦点&#xff0c;一般选择自动调节&#xff0c;调节完成后可手动微调。触发…

Hudi(四)集成Flink(2)

6、读取方式 6.1、流读&#xff08;Streaming Query&#xff09; 当前表默认是快照读取&#xff0c;即读取最新的全量快照数据并一次性返回。通过参数 read.streaming.enabled 参数开启流读模式&#xff0c;通过 read.start-commit 参数指定起始消费位置&#xff0c;支持指定 …

基于双分支残差结构的低光照图像增强研究与应用实现

1.摘要 在低光条件下拍摄的照片会因曝光不足而产生一系列的视觉问题&#xff0c;如亮度低、信息丢失、噪声和颜色失真等。为了解决上述问题&#xff0c;提出一个结合注意力的双分支残差低光照图像增强网络。首先&#xff0c;采用改进InceptionV2提取浅层特征&#xff1b;其次&a…

AndroidStudio插件 - Json转Class、实体类(JSON To Kotlin Class)

Kotlin用挺长时间了&#xff0c;最近网络请求时因为接收、解析实体类的问题&#xff0c;后台直接给到了json文件&#xff0c;客户端可直接将json转为对应的model&#xff0c;故此我们需要用到一些插件来提升工作效率 为了提升工作效率&#xff0c;一键转换json为吾所需实体类是…

详解Comparable和Comparator

目录 Comparable接口 Comparator接口 Comparable接口 Comparable接口在源码中的声明&#xff1a; public interface Comparable<T> {public int compareTo(T o); } 可以看到&#xff0c;只要一个compareTo方法&#xff0c;也就是说&#xff0c;实现Comparable接口的类…

网站留言板的功能

开发环境&#xff1a;dreamweaverCC html jscirpt php 前置条件&#xff1a;1、一个简单的网站已经搭建完毕&#xff0c;支持用户登录网站。 2、用户已登录网站。 实现步骤&#xff1a; 一、新建留言板网页 1、新建网页&#xff1a;whiteboard.html 留言板&#xff08;j…

基于AT89C51单片机的十字路口交通灯设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87849986?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 本项目中采用单片机 AT89C51为中心器件来设计交通信号灯控制器&#xff0c; 系统实用性强、操…

丢失mfc100u.dll修复,总结mfc100u.dll丢失的四个解决方法

mfc100u.dll是 Microsoft Visual C 2010 可再发行组件包的一部分系统文件。它通常位于 Windows 系统文件夹中&#xff0c;用于支持各种应用程序的运行时库。如果出现缺失或损坏的情况可能会影响应用程序的正常运行。打开软件或者游戏程序的时候&#xff0c;会提示‘由于找不到m…

[Java Web]Cookie,Session,Filter,Listener,Thymeleaf模板

文章目录 CookieSessionFilterListener了解JSP页面与加载规则使用Thymeleaf模板引擎Thymeleaf语法基础为标签添加内容 Thymeleaf流程控制语法Thymeleaf模板布局提取重复内容参数传递 探讨Tomcat类加载机制 Cookie 它可以在浏览器中保存一些信息&#xff0c;并且在下次请求时&a…