自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Expected a default value of type Tensor (inferred) on parameter “alpha“

使用torch.jit.script转的时候,出现错误。

2023-07-26 14:32:14 339

原创 win10安装cuda11.4及cudnn

在windows终端键入nvidia-smi,查看nvidia显卡驱动。显卡驱动的版本决定了CUDA的版本下限。如果出现上述的问题,则终端进入文件夹内,再键入nvidia-smi,可以看到我的驱动版本是472.84,最高可以支持CUDA11.4.

2023-07-23 12:11:20 1112

原创 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

2023-02-28 10:45:13 558 1

原创 【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

2022-04-23 23:41:32 2110

原创 aloam源码学习——laserOdometry

该模块接收前一模块scanRegistration发布的几个主题,对相邻两帧的特征点进行匹配,通过优化点到线、点到面的距离,求得激光的位姿增量;主要逻辑:订阅scanRegistration发布的曲率极大点集,曲率次极大点集,曲率极小点集和次极小点集,压入队列;保证这几个点集时间戳是同步的;当前帧的极大点P找前一帧中的最近邻点A(在次极大点集中寻找),在A点的附近线上寻找点B,构建对P与AB线的距离优化的问题;当前帧的极小点P找前一帧中的最近邻点A(在次极小点集中寻找),在A点附近线上寻找点B、

2022-01-08 23:07:51 456 1

原创 aloam源码学习——scanRegisteration

最近有项目要用激光建图与定位(SLAM),花了一周把aloam源码读了一遍;后来开了几次项目会议,才发现用不到激光slam,于是对激光slam的研究暂时搁浅。参考了其他aloam源码的理解的文章,这里是我理解的部分。主要的逻辑:订阅激光点云数据;剔除无效点与离传感器过近的点;确定点云的起始方位角和结束方位角,令结束方位角与开始方位角差值控制在(PI,3*PI)范围计算每个点的仰角,根据仰角为每个点找到了对应的扫描线;每条扫瞄线分成6段扇区,每个扇区选出2个曲率极大点和20个曲率次极大点,同时

2022-01-08 19:19:27 433

原创 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=..

2021-12-28 09:39:40 1435

原创 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

2021-12-24 10:46:21 1648 2

原创 【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

2021-12-22 14:15:57 3875

原创 opencv->tensorrt的数据排列方式

在使用tensorrt的时候,将opencv的Mat格式处理成tensorrt输入方式。中间还有图像预处理,包括通道的变换、图像尺寸变形,最重要的是如何将Mat格式处理成tensorrt 可接受的输入格式。Mat的图像数据,每个像素的三个通道是相邻存储的,因此要将Mat通道分离;使用split函数分离通道std::vector<float> prepareImage(std::vector<cv::Mat> &vec_img) { std::vector&l

2021-11-17 15:08:01 2824 1

原创 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,ϵ)\nu = \frac{\nu}{max(||\nu||_p,\epsilon)}ν=max(∣∣ν∣∣p​,ϵ)ν​示例a = F.softmax(

2021-11-14 15:46:55 5381

原创 C++多线程使用

多线程编程在计算机领域常用到的一种技术。多线程,顾名思义,指在单个系统里同时启动多个独立的线程,每个线程各干各的,互不影响。显然它的效率要比单线程工作效率高的多。比如,要导入处理10万条数据,一个线程既负责导入数据又兼具处理数据的任务,是一个串行处理的流程,运行效率低下。如果用多个线程工作,部分线程负责导入数据,另一部分线程负责处理数据,实现并行处理,运行效率可以提升数倍。自从c++11开始,c++开始在语言级别上支持多线程,为多线程编程提供了极大的便利。1. Hello world#include

2021-10-24 23:36:57 2274 2

原创 【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不支持

2021-08-28 17:40:43 3640

原创 HRNet-segmentation的网络结构分析

High-Resoultion Net(HRNet)由微软亚洲研究院和中科大提出,发表在CVPR2019。HRNet的网络在CV领域,越来越得到关注,因为很多用HRNet作为骨架网络的方案在语义分割、目标检测、分类、分割、人体姿态估计等领域均取得瞩目的成绩。文章名称:Deep High-Resolution Representation Learning for Human Pose Estimation本文主要内容是展示HRNet在分割领域的模型结构,下面的例子选用HRNet_w48模型。Githu

2021-08-18 20:02:20 1285

原创 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

2021-05-20 18:10:07 721 1

原创 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

2021-05-19 14:47:14 317

原创 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

2021-05-06 17:22:55 1958

原创 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

2021-04-20 14:54:58 708 1

原创 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接口调用

2021-04-13 17:21:06 1030 1

原创 caffe源码学习——batch_norm_layer

BatchNorm是深度学习网络中必不可少的层,可以起到加速收敛的作用。由于每一个Batch的数据都具有不同的分布,为了加速模型的学习能力,对数据进行归一化。此外,由于又不能完全归一化,需要根据当前数据分布对数据进行缩放和偏移。因此,BatchNorm主要有两个步骤:求解数据的均值和方差,并归一化;对归一化的数据缩放和偏移。在caffe源码中,对BatchNorm也是分开描述的,步骤一体现在batch_norm_layer.cpp(.cu)中,步骤二体现在scale_layer.cpp(.cu)。

2021-03-18 16:10:07 294 1

原创 Jetson Nano上编译使用darknet

Jetson Nano是Nvidia在TX2和Xavier获得成功后推出的低配版GPU运算平台。测一下darknet版本yolov4在nano上的性能。下载git clone https://github.com/AlexeyAB/darknet.git编译修改Makefilecd darknetvim Makefile令GPU=1, CUDNN=1, OPENCV=152行附近,取消注释77行附近,修改NVCC的值开始编译make -j4下载权重文件 wget

2021-01-18 19:38:32 873 2

原创 Jetson Nano刷机及pycuda安装

这两天对入手的NVIDIA Jetson Nano开箱刷机。中间遇到一些问题,简单记录一下,方便以后回看。Jetson Nano是Nvidia在TX2和Xavier获得成功后推出的低配版GPU运算平台。拥有4GB的内存,因为其中有一部分(1GB左右)是和显存共享的。Jetson Nano本身没有存储空间,支持MicroSD卡,也称tf卡。系统镜像和其他软件包、深度学习模型都会放在tf卡上,因此容量必须要足够,官方建议tf卡容量为64G。(1) 无法开机可能是系统镜像的问题,建议去官网下载;Jets

2021-01-15 15:38:21 620 2

原创 【opencv】blobFromImage源码理解

在工程中也会用OpenCV进行深度学习推理。有时候将opencv推理的数值结果与pytorch等深度学习框架的进行对比,数值是会有一些差异的。导致差异的一个重要因素就是数据预处理。opencv自带有一个预处理函数blobFromImage,该函数主要作用是:图像预处理将图像数据打包成blob类型将blobFromImage源码摘了出来,并与torchvision的处理方式对比了一下。opencv里按照宽高比大小决定基准边,计算resize的尺寸;torchvision直接以最短边为基准,计算res

2020-11-27 16:16:37 1375

原创 AGX安装pytorch mmdetection opencv等记录

在AGX刷机之后,马上开始安装pytorch、opencv、mmdetection等深度学习常用的工具。记录一下安装的过程和踩的坑,有些坑还没填上,希望大家一起填。pip源设置sudo apt-get install python3-pipmkdir ~/.pipvim ~/.pip/pip.conf在pip.conf里写入清华源[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simplepytorch直接pip3 insta

2020-11-26 14:39:31 689

原创 Nvidia AGX Xavier刷机指北

因为工作的关系,要在AGX上安装CUDA。nvidia官网上没找到适合AGX版本的CUDA,只能走刷机的路子。刷机过程中,也遇到一些坑,做个记录。需要有一台ubuntu系统的电脑作为主机Host。我的主机系统为Ubuntu18.04整个刷机过程为:在Host上安装sdkmanager,整个刷机过程主要通过sdkmanager来操作。在Host自动下载一些系统组件,各种deb包Host上制作OS系统镜像,烧录到AGX中Host上之前下载好的deb包,安装到AGX中。完结,撒花...

2020-11-21 19:54:05 4406 2

原创 label-smoothing标签平滑__pytorch版实现

标签平滑(label-smoothing)主要用于防止过拟合,增强模型的泛化能力。在one-hot的基础上,添加一个平滑系数ε\varepsilonε,使得最大预测与其它类别平均值之间差距的经验分布更加平滑。Pytorch代码实现import torchdef smooth_one_hot(true_labels: torch.Tensor, classes: int, smoothing=0.0): """ if smoothing == 0, it's one-hot meth

2020-09-03 15:17:28 5308 2

原创 Ubuntu下u盘被加锁的解决方法

此种问题的可能原因是,u盘未完全读写完当前任务,即被拔出,导致引发安全机制锁住了全部文件。解决方法:dh -h  查看u盘挂载点。如下,我的u盘所在文件系统为/dev/sdb4,挂载点/media/bubble/Ubuntu 16.0sudo umount /media/bubble/Ubuntu" "16.0 解除挂载点期间不要拔出u盘sudo dosfsck -v -a /dev/sdb4 文件系统修复拔出重插即可!...

2020-07-28 10:24:39 3072

原创 打印模型结构到文件中

看pytorch版的深度学习模型代码,打印出模型结构能更好、更快地理解模型。这只要短短的几行代码就可实现:with('model.txt','a') as f: # 打印模型到model.txt print(model, file = f) # 打印模型参数 for params in model.state_dict(): f.write("{}\t{}\n".format(...

2019-09-13 21:40:40 1145

原创 opencv-python之直方图相关操作

import cv2import numpy as npimport matplotlib.pyplot as pltpyimg_name = 'cat.jpg'img = cv2.imread(img_name,1)img = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)# 1. 使用cv2.calcHist计算直方图,返回二维tuple''' ...

2019-09-13 20:15:54 239

原创 深度学习优化算法

list的extend()梯度下降法随机梯度下降法(SGD)小批量梯度下降法动量法AdagradAdagrad是解决不同参数应该使用不同的更新速率的问题。Adagrad自适应地为各个参数分配不同学习率的算法。SGD、SGD-M 和 NAG 均是以相同的学习率去更新 [公式] 的各个分量。而深度学习模型中往往涉及大量的参数,不同参数的更新频率往往有所区别。对于更新不频繁的参数(典型例子:...

2019-09-11 21:20:55 355 1

原创 C++智能指针

C#、Java、python和go等语言中都有垃圾自动回收机制,在对象失去引用的时候自动回收,而且基本上没有指针的概念,而C++语言不一样,C++充分信任程序员,让程序员自己去分配和管理堆内存,如果管理的不好,就会很容易的发生内存泄漏问题,而C++11增加了智能指针(Smart Pointer)。主要分为shared_ptr、unique_ptr和weak_ptr三种,使用时需要引用头文件。c++...

2019-09-02 10:44:14 105

原创 python中的深浅拷贝

# 1.赋值(引用) 并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,# 所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。# 2. 浅拷贝: 拷贝父对象,不会拷贝对象的内部的子对象。只拷贝浅层的对象# 3. 深拷贝: copy 模块的 deepcopy 方法# 将被复制对象完全再复制一遍作为独立的新个体单独存在。# 所以改变原有被复...

2019-08-28 17:20:53 62

原创 python零碎知识点(2019-8-19)

.item()一个元素张量可以用item()得到元素值,请注意这里的print(x)和print(x.item())值是不一样的,一个是打印张量,一个是打印元素: x = torch.randn(2, 2) print(x[1, 1]) print(x[1, 1].item())#结果tensor(0.4279)0.4278833866119385np.ran...

2019-08-19 10:17:23 118

原创 python零碎知识点(2019-08-16)

python零碎知识点(1)近来在复现Meta-SR,写这系列总结相当于备忘录,记录每天遇到的一些python语法知识点,为方便日后不断复习(小白在成长)1. open()函数open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。常见的写入模式:a如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如...

2019-08-16 17:39:59 252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除