- 博客(84)
- 收藏
- 关注
原创 STL容器
STL容器(7种)vector(数组)deque(双端数组)stack(栈)queue(队列)list(双向链表)set/multiset/unordered_set(集合)map/multimap/unordered_map(键值对)1. 理论基础特点:数据结构和算法分离组成:STL主要由容器、算法和迭代器三大部分组成概念:容器:把你的元素copy到容器中;迭代器:相当于一个指针;算法:算法和迭代器无缝连接分类:序列式容器(与插值顺序有关,如vector,list,deque)
2021-11-30 16:31:22
2049
原创 KeyPoint关键点
KeyPoint{ float size, float angle = -1, float response = 0, int octave = 0, int class_id = -1size: 该关键点邻域直径大小octave:从哪层金字塔得到的此关键点class_id: 当对图片进行分类是,用class_id对每个关键点进行区分,默认为-1...
2021-08-09 19:49:25
937
原创 修改ubuntu开机启动顺序
sudo vim /etc/default/grub其中的“GRUB_DEFAULT=0”就是设置的默认启动项了,根据开机grub顺序修改它(第一项从0开始)sudo update-grub重新生成GRUB启动配置项
2020-08-04 08:26:20
1372
1
原创 OpenCV学习笔记
convertTosrc.convertTo(dst, type, scale, shift)转换到另外一种数据类型:dst:目的矩阵;type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同;scale:比例因子;shift:将输入数组元素按比例缩放后添加的值;dst(i)=src(i)xscale+(shift,shift...
2020-06-23 15:57:51
1092
原创 向量求导的二个公式
∂xTa∂x=∂aTx∂x=a\frac{\partial \mathbf{x}^{T} \mathbf{a}}{\partial \mathbf{x}}=\frac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{a}∂x∂xTa=∂x∂aTx=a∂xTBx∂x=(B+BT)x\frac{\partial \...
2020-04-28 16:16:45
970
原创 EVO使用
evo是一个用来评估SLAM系统测量数据以及输出估计优劣的Python工具1. 安装EVOpip install evo --upgrade --no-binary evo2. 使用测量指标:evo_ape:绝对位姿误差evo_rpe:相对位姿误差常用命令:evo_traj:绘制轨迹,一条或多条,支持kitti,eurco,tum三种格式evo_res:根据指标比较分...
2020-04-04 21:38:43
4935
2
原创 图像的线特征提取与跟踪
LSD: Line Segment Detector线段检测器LSD是一种局部提取直线的算法,速度比Hough要快。 LSD是一种直线检测分割算法,它能在线性的时间内得出亚像素级精度的检测结果。该算法被设计成自适应模式,无需手动调参。作者将自己的论文(LSD: a Line Segment Detector,2012)及代码( c++)放到自己的主页上:LSD详解opencv使用头文件及命...
2020-03-20 22:16:25
10636
12
原创 Eigen库头文件分析
Eigen库被分为一个Core模块和其他一些模块,每个模块有一些相应的头文件。 为了便于引用,Dense模块整合了一系列模块;Eigen模块整合了所有模块。一般情况下,include<Eigen/Dense> 就够了。...
2020-02-22 22:19:51
1758
原创 git的使用教程
git下载与配置sudo apt install git github config --global user.name "你的github用户名"github config --global user.email "你的github邮箱"git工作流程一般工作流程如下:clone Git 资源作为工作目录在clone 的资源上添加和修改文件如果其他人修改了,你可以更新资源...
2020-02-22 22:05:17
129
1
原创 Opencv3的头文件
通常使用头文件(opencv中常用头文件的集合):#include"opencv.hpp"常用头文件说明#include “opencv2/core.hpp”核心功能模块,主要包含了opencv基本数据结构,动态数据结构,绘图函数,数组操作相关函数,辅助功能与系统函数和宏#include “opencv2/imgproc.hpp”图像处理模块,主要包含了图像的变换,滤波直...
2020-02-12 12:01:36
1182
原创 VIM最实用的快捷键命令
命令说明G文尾gg文首$行尾^行首x删除当前光标所在字符dd删除当前光标所在行u撤销上一步操作/全文搜索(用完后取消高亮:noh)n向下搜索N向上搜索yy复制当前行P粘贴w正向移动到下一个单词b反向移动到上一个单词f{char}当前行查找指定字符(;前进,后退...
2020-02-12 11:48:07
340
原创 apt和dpkg的区别
apt命令apt是一个客户/服务器系统。在服务器上先复制所有deb包,然后用apt分析工具(genbasedir)根据每个deb包的包头信息对所有的deb进行分析,并将该分析救过记录在一个文件中,这个文件被称为deb索引清单,apt服务器的deb索引清单只与base文件夹中,一旦apt服务器内的deb有所改动,一定要使用genbasedir产生新的deb索引清单。客户端再进行安装或升级时一定...
2020-01-14 20:10:28
2087
原创 循环神经网络(RNN)
单词文本如果采用one_hot编码,数据会稀疏且高维Word Embedding:将源数据映射到另外一个空间,其中这个映射具有injective(单射)和structure preserving(结构保存,比如在x所属的空间上x1<x2,那么映射后在y空间上同理y1<y2),常见的两种embedding方式为word2vec和gloveBatch[word num,b,word...
2020-01-13 20:34:00
500
原创 python版本切换
用 update-alternatives 来为整个系统更改 Python 版本update-alternatives --list python #罗列可用的python版本若报错,则python尚未链接至update-alternativesupdate-alternatives --install /usr/bin/python python /usr/bin/python2.7...
2020-01-12 10:32:22
253
原创 卷积神经网络(CNN)
模仿人眼的一个局部相关性、局部感受的机制(感受野),提出的网络叫做卷积神经网络,每次感受一个小的方块(视野),窗口方块移动时,权值是共享的。feature mappooling层(池化)下采样:BatchNorm优点:收敛更快;更好的性能;更具有鲁棒性经典的网络架构1. AlexNet(2012,8层)在ImageNet挑战赛上,将错误率降了10个百分点,吸引了众多学者的关注...
2020-01-11 09:24:51
783
原创 nn.Module模块的使用
特点每一层都是nn.Modulenn.Module都嵌套在nn.Module中常见的模块LinearReLUSigmoidConv2dConvTransposed2dDropoutetc.Container容器nn.Sequential()parameters参数管理net.parameters()net.named_parameters()to(dev...
2020-01-11 09:06:38
2410
1
原创 GAN介绍
What I cannot create, I do not understand.我没有创造出它,说明我对它没有理解透彻Nash Equilibrium(纳什均衡)GeneratorDiscriminatorGAN的原理:minGmaxDL(D,G)=Ex∼pr(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]=Ex∼pr(x)[logD(x)]...
2020-01-10 10:05:09
353
原创 神经网络全连接的pytorch使用
Pytorch代码:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom visdom import Visdombatch_size=200...
2020-01-08 22:00:16
465
原创 如何避免过拟合和欠拟合
减少过拟合:减少数据;将模型换成一个浅层模型;正则化;dropout;early stopping设置交叉验证将数据集分为训练集、dev和测试集dev用来提前防止训练过拟合,每隔一段时间观察testperformace,选取最好的性能模型test是真实交给客户,用来测量模型的真实性能,test不能用来反馈给模型训练K-fold交叉验证:每次迭代都随机将训练数据集划分为k份,将其中的k...
2020-01-08 15:47:38
594
原创 AutoEncoder介绍
什么是自动编码器自动编码器最开始作为一种数据压缩的方法,特点:1)跟数据相关程度高2)压缩数据是有损的应用:1)数据去噪 ???2)可视化降维3)生成数据 ???自动编码器的结构通常我们使用神经网络模型作为编码器和解码器。PyTorch实现自动编码器多层感知器class autoencoder(nn.Module): def __init__(self): ...
2020-01-08 15:46:09
824
原创 随机梯度下降
激活函数原始激活函数:阈值函数(大于0为1,小于0为0)缺点不可导改进激活函数:sigmoid(0~1之间)f(x)=σ(x)=11+e−xf(x)=\sigma(x)=\frac{1}{1+e^{-x}}f(x)=σ(x)=1+e−x1优点是可导且易导:σ′=σ(1−σ)\sigma^{\prime}=\sigma(1-\sigma)σ′=σ(1−σ)缺点是会在两端会...
2020-01-02 21:57:01
250
原创 PyTorch的基础使用
基本数据类型torch.FloatTensortorch.ByteTensortorch.IntTensortorchl.cuda.FloatTensor利用函数a.type():返回数据类型type(a):python自带的数据类型检验,只能返回torch.Tensor,不能提供额外的信息isinstance():数据类型的检验...
2020-01-02 19:57:04
514
原创 训练集、验证集(dev)和测试集
在模型训练的时候通常将我们所得的数据分成3部分:训练集、dev验证集和测试集dev用来统计的那一评估指标、调节参数,选择算法;而test用来在最后整体评估模型性能dev和训练集一起被输入到模型算法中,但又不参与模型训练,可以一边训练一边根据dev查看指标dev和测试集都是用来评估模型好坏,但dev只能用来统计单一评估指标;而测试集能够提供更多的评估模型指标,如混淆矩阵、roc、召回率、F1...
2019-12-31 09:39:12
4458
原创 Tensor--什么是张量?
A tenseor is something that transforms like a tensor!在不同的参考系下按照某种特定的法则进行变换的一个量,就是张量从物理学角度张量是一个不随坐标而改变的,物理系统内在的量用张量语言描述的物理定律自动保证了不随参考系变化的这一性质从数学角度一维数据是向量,二维数据是矩阵,三维及其以上的数据称为张量张量的提出,目的是希望数据在...
2019-12-30 10:24:15
205
原创 深度学习初见
Google:TensorFlow(Keras)Facebook:PyTorch(Caffe)本质区别:动态图优先还是静态图优先动态图:在运行时可以改变公式,暂停,查看临时变量静态图:定义公式——给输入——返回输出(不能停下来和改变)...
2019-12-27 19:07:43
237
原创 vins位姿图优化
重定位的方案:1、快速重定位通过回环检测得到回环帧,将回环帧信息发布给vins_estimator节点在窗口中进行局部优化,得到了loop_info(T_i_j)后返回给位姿图节点,然后得到T_w1_j,结合已知的T_w2_j,得到T_w1_w2(shift_t);2、全局优化重定位通过pnp得到loop_info(T_i_j),作为残差信息放在ceres优化中,从最早的回环帧到当前帧均为...
2019-12-19 13:33:32
1934
1
原创 c++如何读取文件
头文件stdio.h读文件FILE* pFile;pFile=fopen(file_path,"r");int fscanf ( FILE * stream, const char * format, ... ); //从一个流中执行格式化输入,之后fscanf遇到空格和换行时结束while(fscanf()!=EOF); //判断文件是否到末尾fcolse(pFile)...
2019-12-17 09:58:22
2272
原创 ROS的常见的消息类型
1. sensor_msgs::Image# This message contains an uncompressed image# (0, 0) is at top-left corner of image#Header header # Header timestamp should be acquisition time of image ...
2019-12-12 10:07:37
2714
原创 eigen和matlab的对比和类似使用
Matlab和Eigen的对应用法1、Eigen库的基本数据变量#include <Eigen/Dense>Matrix<double, 3, 3> A; // 固定大小的双精度矩阵,和Matrix3d一样。Matrix<double, 3, Dynamic> B; // 固定行数,列数为动态大小Mat...
2019-12-11 23:14:40
3672
4
原创 ubuntu安装显卡驱动的两种方法
1. 软件更新设置系统设置->软件更新->附加驱动->选择nvidia最新驱动->应用更改2. 官网下载好对应驱动编译Nvidia中文官网是: Nvidia官网(需要下好linux系统下的驱动,文件拓展名.run,注意该文件最好放在主目录下,方便安装)打开终端,先删除旧的驱动sudo apt purge nvidia*禁用自带的nouvea...
2019-12-11 21:45:12
2964
原创 linux特殊符号笔记
管道和重定向:|、>、>>、<重导向就是使命令改变它所认定的标准输出。“>”可将结果输出到文件中,该文件原有内容会被删除,“>>”则将结果附加到文件中,源文件内容不会被删除。“<”可以改变标准输出。cat date1.txt>>data2.txt管道“|”可将命令的结果输出给另一个命令作为输入之用rpm -qa|grep...
2019-12-11 21:32:20
113
原创 g2o学习笔记
g2o整体框架综上所述,在g2o中选择优化方法一共需要三个步骤:选择一个线性方程求解器,从PCG、CSparse、Choldmod三个选一选择一个BlockSolver选择一个迭代器,从GN、LM、Doglog中选自定义顶点(Vertex)和边(Edge)在整体框架图中,可以看到不管是顶点还是变,都可以说是继承子basexxx这个类的,因此我们在自定义的时候,也可以仿照着继承...
2019-12-11 21:28:20
397
原创 SSH原理和运用
什么是SSHssh是一种网络协议,用于计算机之间的加密登录本文针对的实现是OpenSSH,讨论其在Linux中的用法最基本的用法SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令:$ ssh user@hostssh的默认端口是22,即你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。$ ssh -pp 2...
2019-12-11 20:56:55
149
原创 gcc和g++的编译连接过程
一、编译的四个阶段1、 预处理:生成后缀为“.i”的文件2、编译:转为汇编语言,后缀为”.s“的文件3、汇编:转为二进制目标文件,后缀为“.o”的文件4、连接:多个目标文件(二进制)结合库函数等综合成能独立执行的文件,后缀为”.out“的文件gcc无法进行第4步的库文件连接,而g++则能完整编译出可执行的文件(实际上g++从步骤1到步骤3都是调用gcc完成的,步骤4则是由自己完成的)...
2019-12-11 20:30:47
437
原创 ros图像和Opencv图像之间的转换
1、简介正常ROS以自己的sensor_msgs/Image消息格式传递图像,但如果将图像与Opencv库结合使用,会编译报错:这时候需要使用CvBridge库,提供ROS和Opencv之间的接口,可以将ROS图像转换成Opencv中cv::Mat格式,反过来转换亦可。2、CvBridge类介绍CvBridge定义了一个包含opencv图像的CvImage类型。CvImage包含额外的...
2019-12-11 19:30:16
1726
原创 Linux下的目录命名的意义
1、/bin :获得最小的系统可操作性所需要的命令2、/boot :内核和加载内核所需的文件3、/dev :终端、磁盘、调制解调器等的设备项4、/etc :关键的启动文件和配置文件5、/home :用户的主目录6、/lib :C编译器的库和部分C编译器7、/media :可移动介质上文件系统的安装点8、/opt :可选的应用安装包9、/proc :所有正在运行进程的映像10、/r...
2019-12-11 19:00:09
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人