win10安装cuda11.4及cudnn 在windows终端键入nvidia-smi,查看nvidia显卡驱动。显卡驱动的版本决定了CUDA的版本下限。如果出现上述的问题,则终端进入文件夹内,再键入nvidia-smi,可以看到我的驱动版本是472.84,最高可以支持CUDA11.4.
python中float32与float64强转偏差 torchpytorch中定义张量,要确定好正确的数据类型,否则会出现float32-float64之间的强转偏差,虽然误差很小,但是在某些场合(模型推理、imu预积分等)会出现比较大的累计误差。pytorch定义张量,默认的数据类型为torch.float32.g1 = torch.tensor([9.8065000000]) # 默认torch.float32print(format(g1.item(), '.10f'))# 9.8065004349g2 = torch.tensor([9
【yolov5】loss.py源码理解 yolov5的loss.py中的build_targets函数中由两处扩充正样本的地方:因为anchor有3个,所以将targets扩充成3份,每一份共享一个anchor;假设一共有20个targets目标框,则将目标数扩充至[3, 20],共60个目标;第一份的20个目标与第一个anchor匹配,第二份的20个目标与第二个anchor匹配,第三份的20个目标与第三个anchor匹配,那么会有一部分目标没有匹配上(目标框与anchor的宽比或高比超出阈值),则最后可能会只有30个目标匹配成功,剩余的ta
aloam源码学习——laserOdometry 该模块接收前一模块scanRegistration发布的几个主题,对相邻两帧的特征点进行匹配,通过优化点到线、点到面的距离,求得激光的位姿增量;主要逻辑:订阅scanRegistration发布的曲率极大点集,曲率次极大点集,曲率极小点集和次极小点集,压入队列;保证这几个点集时间戳是同步的;当前帧的极大点P找前一帧中的最近邻点A(在次极大点集中寻找),在A点的附近线上寻找点B,构建对P与AB线的距离优化的问题;当前帧的极小点P找前一帧中的最近邻点A(在次极小点集中寻找),在A点附近线上寻找点B、
aloam源码学习——scanRegisteration 最近有项目要用激光建图与定位(SLAM),花了一周把aloam源码读了一遍;后来开了几次项目会议,才发现用不到激光slam,于是对激光slam的研究暂时搁浅。参考了其他aloam源码的理解的文章,这里是我理解的部分。主要的逻辑:订阅激光点云数据;剔除无效点与离传感器过近的点;确定点云的起始方位角和结束方位角,令结束方位角与开始方位角差值控制在(PI,3*PI)范围计算每个点的仰角,根据仰角为每个点找到了对应的扫描线;每条扫瞄线分成6段扇区,每个扇区选出2个曲率极大点和20个曲率次极大点,同时
CLion配置ROS环境 打开终端,进入工作空间/catkin_ws`source devel/setup.bash`在该终端运行clion.sh(clion.sh在clion安装目录下)此时clion已打开,File/Open, 选择功能包的CMakeLists.txt,Open as Project即可。(可选)修改编译目录。File/Settings.../Build,Execution,Deployment令CMake options为-DCATKIN_DEVEL_PREFIX:PATH=..
ubuntu18.04安装cartographer记录 按照官网指导上的指令安装下来,在个别步骤上可能会因为长城的缘故,导致安装失败,一波三折。费了一天时间,终于把cartographer安装成功,翻阅了各种博客文章,结合自己碰到的问题,总结记录一下。安装依赖包sudo apt-get updatesudo apt-get install -y python-wstool python-rosdep ninja-build stow创建工作空间与下载安装包mkdir catkin_wscd catkin_wswstool init src
【C++】boost::filesystem遍历文件目录 boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories)。在c++中使用boost库遍历文件目录。demo// demo.cpp#include <iostream>#include <boost/filesystem.hpp>#include <boost/algorithm/string/classification.hpp>#include <bo
opencv->tensorrt的数据排列方式 在使用tensorrt的时候,将opencv的Mat格式处理成tensorrt输入方式。中间还有图像预处理,包括通道的变换、图像尺寸变形,最重要的是如何将Mat格式处理成tensorrt 可接受的输入格式。Mat的图像数据,每个像素的三个通道是相邻存储的,因此要将Mat通道分离;使用split函数分离通道std::vector<float> prepareImage(std::vector<cv::Mat> &vec_img) { std::vector&l
pytorch中的normalize应用 torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None)其中,p表示范数(这里是2范数),dim表示计算范数的维度(默认为1),eps是为了防止分母为0;pytorch中的normalize函数本质上就是针对某个维度进行归一化,公式为:ν=νmax(∣∣ν∣∣p,ϵ)u = \frac{u}{max(||u||_p,\epsilon)}ν=max(∣∣ν∣∣p,ϵ)ν示例a = F.softmax(
C++多线程使用 多线程编程在计算机领域常用到的一种技术。多线程,顾名思义,指在单个系统里同时启动多个独立的线程,每个线程各干各的,互不影响。显然它的效率要比单线程工作效率高的多。比如,要导入处理10万条数据,一个线程既负责导入数据又兼具处理数据的任务,是一个串行处理的流程,运行效率低下。如果用多个线程工作,部分线程负责导入数据,另一部分线程负责处理数据,实现并行处理,运行效率可以提升数倍。自从c++11开始,c++开始在语言级别上支持多线程,为多线程编程提供了极大的便利。1. Hello world#include
【opencv】pytorch->onnx->opencv模型推理 opencv的DNN推理模块是不直接支持pytorch训练出来的pth文件。一般来说,可以将pth文件转成onnx格式,再用opencv调用onnx文件,即可实现推理。pth文件转onnx文件时,因为onnx对于pth中某些定义的层是不支持的,难免会碰到一些问题。近期,对一些分割网络进行了部署,碰到的一些问题记录在下。RuntimeError: ONNX export failed: Couldn’t export operator aten::adaptive_avg_pool2donnx不支持
HRNet-segmentation的网络结构分析 High-Resoultion Net(HRNet)由微软亚洲研究院和中科大提出,发表在CVPR2019。HRNet的网络在CV领域,越来越得到关注,因为很多用HRNet作为骨架网络的方案在语义分割、目标检测、分类、分割、人体姿态估计等领域均取得瞩目的成绩。文章名称:Deep High-Resolution Representation Learning for Human Pose Estimation本文主要内容是展示HRNet在分割领域的模型结构,下面的例子选用HRNet_w48模型。Githu
realsense D435i安装及标定遇到的问题 问题1:编译kalibr时,出现问题:fatal error: libv4l2.h解决方法:sudo apt install libv4l-dev问题2:使用kalibr生成棋盘时,出现问题:ImportError:No module named pyx 解决方法:sudo apt-get install python-pyx问题3:使用以下命令标定时,kalibr_calibrate_cameras --target '/home/robot/kalibr_ws/src/kal
librealsense编译找不到openssl 编译librealsense,cmake失败,出现下述问题:Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)解决办法sudo apt-get install opensslsudo apt-get install lib
AGX系统备份及恢复 前提:用原装usb-typeC线连接host机和AGX,启动AGX恢复模式(AGX上有3个键,先按住中间键2秒,再按左键2秒,进入恢复模式)cd ~/nvidia/nvidia_sdk/JetPack_4.4.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/sudo ./flash.sh -r jetson-xavier mmcblk0p1注:JetPack_4.4.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/ 文件夹是ho
py文件编译成so动态库 由于python设计的初衷是开源,因此py文件是可以直接看到源码的。但用在商业用途时,就需要对代码进行加密保护。本文使用Cython库将py文件编译成二进制so动态库,达到对python源码的保护。1. 安装Cythonpip install Cython2. 编译py文件生成so库Cython可以帮助程序带来性能的提升,主要原理是:先将py文件转换成c文件,再将c文件编译成so(Unix)或pyd(windows)。其带来的另一个好处是难以破解。from distutils.core impo
AGX编译安装opencv和opencv-contrib模块(c++和python,支持GPU) 在AGX编译安装opencv-python及opencv-contrib-python有两个途径一、pip安装(以4.4.0.46版本为例)sudo pip3 install opencv-python==4.4.0.46sudo pip3 install opencv-contrib-python==4.4.0.46pip安装只适合python接口调用,若用c++接口,则需要源码编译安装。二、源码编译安装源码编译安装在终端输入cmake预编译指令,编译出来即可满足c++,python接口调用
caffe源码学习——batch_norm_layer BatchNorm是深度学习网络中必不可少的层,可以起到加速收敛的作用。由于每一个Batch的数据都具有不同的分布,为了加速模型的学习能力,对数据进行归一化。此外,由于又不能完全归一化,需要根据当前数据分布对数据进行缩放和偏移。因此,BatchNorm主要有两个步骤:求解数据的均值和方差,并归一化;对归一化的数据缩放和偏移。在caffe源码中,对BatchNorm也是分开描述的,步骤一体现在batch_norm_layer.cpp(.cu)中,步骤二体现在scale_layer.cpp(.cu)。