- 博客(43)
- 收藏
- 关注
原创 PCL-3D特征描述子
3D特征描述子什么是3D特征描述子?特征描述子 Feature Descriptor是每个特征点独特的身份认证同一空间点在不同视角的特征点具有高度相似的描述子不同特征点的描述子差异性尽量大通常描述子是一个具有固定长度的向量描述子可以分为以下几种类型:基于不变性的描述子、基于直方图的描述子、二进制描述子PCL主要实现了:NARF特征点描述子PFH(FPFH)点特征直方图描述子RoPs 特征VFH视点特征直方图描述子GASD全局对齐的空间分布描述子基于惯性矩和偏心率的描述
2022-04-27 14:09:29
506
原创 PointNet++
最近的项目内容要求使用Pointnet++进行分类与分割,因此这两天我开始看PointNet++的代码,其实代码十分简单,我们做一个简单的网络结构总结,简单的描述了一下。也许直接看很抽象,但你要是结合代码,一边看,一边肝,会很有用哦。pointNet 网络结构简介分类部分输入数据: [batch_size,1024,6]输入标签: [batch_size,]结构概要Batch_Size:BChannel:CnSample:欧式距离,最近点的数量,他包括radius和nSample(最大采样
2022-04-25 16:14:23
1969
原创 表面点云法线
表面法线是几何表面的重要属性,在许多领域(例如计算机图形应用程序)中大量使用,以应用正确的光源以产生阴影和其他视觉效果。使用表面网格化技术从获取的点云数据集中获取基础表面,然后从网格中计算表面法线;使用近似值直接从点云数据集中推断表面法线。通常我们一般使用后者,即给定点云数据集,直接计算云中每个点的表面法线。基础理论尽管有许多不同的法线估计方法,我们先了解其中最简单也是最常见的一个,确定表面一点法线的问题近似于估计表面的一个相切面法线的问题,因此转换过来以后就变成一个最小二乘法平面拟合估计问题
2022-04-21 12:11:09
1236
原创 pytorch9-权重衰减
权重衰减这是一种常用的用于减轻过拟合的方法。原理我们以一下公式作为损失函数l(w1,w2,b)=1n∑i=1n12(x1iw1+x2iw2+b−yi)2l(w_1,w_2,b)=\frac{1}{n}\sum_{i=1}^{n} \frac{1}{2}(x_1^{i}w_1+x_2^{i}w_2+b-y^{i})^2l(w1,w2,b)=n1i=1∑n21(x1iw1+x2iw2+b−yi)2以上公式w1w_1w1和w2w_2w2是权重,样本i的输入为x1i,x2ix_1^{
2022-04-16 14:01:33
1393
原创 SLAM第六章_3
6.3 实践:曲线你和问题6.3.1 手写高斯牛顿法* 如何手写高斯牛顿法,如何使用对应的优化库求解这个问题。我们设定一个曲线方程:y=exp(ax2+bx+c)+w y=exp(ax^2+bx+c)+w y=exp(ax2+bx+c)+w设定如下:a,b,c为曲线的参数,也是我们需要迭代的参数w为高斯噪声,满足w (0,σ2w~(0,\sigma ^2w (0,σ2x,y为真值参数那么 我们的目标是要求解以下目标函数下面的误差函数如下所示:ei=yi−
2022-04-15 09:53:53
108
原创 # PCL特征描述与提取Features
特征描述与提取Features3D 点云特征描述与提取是点云信息处理中的最基础也是最关键的部分,点云的识别、分割、重采样、配准、曲面重建等大部分算法,都十分依赖特征描述与提取的结果。从尺度上来划分,一般分为局部特征描述和全局特征描述。例如局部的法线等几何形状特征的描述,全局的拓扑特征描述,都属于3D点云特征描述与提取范畴。在 PCL 中,目前已有很多基本的特征描述子与提取算法。特征点理想情况下,在使用同一种度量规则情况下,相同或相似的表面上的点的特征子应该非常相似,不同表面上的点的特征描述子有明显的
2022-04-14 14:03:40
673
原创 PCL点云处理-RANSAC
RANSAC算法简介RANSAC从样本中随机抽选出一个样本子集,使用最小方差估计算法对这个子集计算模型参数,然后计算所有样本与该模型的偏差,再使用一个预先设定好的阈值与偏差比较,当偏差小于阈值时,该样本点属于模型内样本点 ( inliers),或称内部点、局内点或内点,否则为模型外样本点(outliers),或称外部点、局外点或外点,记录下当前的 inliers 的个数,然后重复这一过程。每一次重复都记录当前最佳的模型参数,所谓最佳即是inliers的个数最多 ,此时对应的inliers个数为 best_
2022-04-14 09:47:04
599
1
原创 pytorch8-欠拟合和过拟合
模型选择,欠你和和过拟合训练误差和泛化误差训练误差这个其实不难理解,训练误差就是你在训练神经网络的时候出现的误差,也就是你在训练集上的误差值,泛化误差这个也就是在你训练集上的误差。模型选择通常训练的时候,我们有几个模型可以选择,那么我们该怎么确定那个模型最为合适呢?通常,我们不会直接在测试集上进行模型选择,而是在训练集上再分出一部分,然后作为验证集,然后在训练集上训练完成后,在验证集合上进行验证,然后选出最为合适的模型,最后在测试集上进行最后的测试。K折交叉验证当训练数据不够用的时候
2022-04-12 09:34:13
1290
原创 SLAM第六章_2
一阶梯度下降法首先是多维目标函数的梯度展开F(xk+ΔXk)≈F(xk)+J(xk)TΔxk+12ΔxkTH(xk)ΔxkF(x_k+\Delta X_k) \approx F(x_k)+J(x_k)^T \Delta x_k +\frac{1}{2} \Delta x_k^T H(x_k) \Delta x_kF(xk+ΔXk)≈F(xk)+J(xk)TΔxk+21ΔxkTH(xk)Δxk如果确保步长位梯度的相反数,就可以保证每次F(x)都是下降的Δx∗=−J(xk)\Delta
2022-04-05 14:53:48
245
原创 SLAM_第6章_1
批量状态估计与最大后验估计回忆第二章首先介绍运动方程H(f)={xk=f(xk−1,uk,wk),k=1,⋅,Kzk,j=h(yj,xk,vk,j,(k,j)∈O H(f)= \left\{ \begin{matrix} x_k=f(x_{k-1},u_k,w_k),k=1,\cdot,K\\ z_{k,j}=h(y_j,x_k,v_{k,j},(k,j) \in O \end{matrix}\right.H(f)={xk=f(xk−1,
2022-04-05 14:25:14
277
原创 PCL点云处理与关键点提取
关键点简介关键点也称为兴趣点,它是 2D 图像或 3D 点云或曲面模型上,可以通过检测标准来获取的具有稳定性、区别性的点集。从技术上来说,关键点的数量比原始点云或图像的数据量少很多,其与局部特征描述子结合组成关键点描述子。常用来构成原始数据的紧凑表示,具有代表性与描述性,从而加快后续识别、追踪等对数据的处理速度 。(也就是能够代表对象特征的子点集)固而,关键点提取就成为了2D与3D信息处理中不可获缺的关键技术关键点概念以及算法NARF(Normal Aligned Radial Feature)关键
2022-04-04 12:34:14
5106
原创 pytorch7-多层感知机
多层神经网络对应的矩阵计算公式如下:Wh,bhW_h,b_hWh,bh表示第一层权重和偏移Wo,boW_o,b_oWo,bo表示第二层权重和偏移H=XWh+bhH=XW_h+b_hH=XWh+bhO=HWo+boO=HW_o+b_oO=HWo+bo也就是将隐藏层的输出直接作为输出层的输入。如果将以上两个式子联立起来,可以得到O=(XWh+bh)Wo+bo=XWhWo+bhWo+boO=(XW_h+b_h)W_o+b_o=XW_h W_o +b_h W_o +b_oO=(XW
2022-04-01 12:44:04
1923
原创 SLAM14第四章_3
Sophus的基本使用方法Sphus库支持本章主要讨论的SO(3)和SE(3),此外还有二维运动的SO(2),SE(2)以及相似变换Sim(3)的内容。它是直接在Eigen基础上开发的,不需要安装额外的库useSophus.cpp 说明前半部分介绍了SO(3)上的操作,后半部分则为SE(3)。我们演示了如何构造SO(3),SE(3)对象,对他们进行指数,对数映射,以及当知道更新量后,如何对李群元数进行更新。#include <iostream>#include <cma
2022-03-31 20:12:37
199
原创 PCL点云NARF特征点
NARF: 3D Range Image Features for Object RecognitionNARF 全称 normal aligned radial feature(法线对齐的径向特征) 。是一种3D特征点检测和描述算法。下面将分别详述 NARF 特征点的提取和描述。NARF特征点提取NARF说了很多其实就是考虑以下两点:考虑表面稳定性考虑物体边缘处由以上的两个参考,NARF可以有如下特点:提取出边缘点,这些点往往更加具有稳定性和可重复性提取出Normal稳定的,也就是一些平
2022-03-30 15:56:43
1110
原创 pytorch6_SOFTMAX简单实现
SOFTMAX简单实现#我们仍然使用Fashion-MNIST数据集和上一节中设置的批量大小import torchfrom torch import nnfrom torch.nn import initimport numpy as npimport syssys.path.append("../3.5 图像分类数据集(FASHION-MNIST)") # 为了导⼊上层⽬录的d2lzh_pytorchimport d2lzh_pytorch as d2l#3.7.1 获取和读取数据
2022-03-29 23:06:48
1001
原创 SLAM第四章_2
BCH公式与近似形式ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2当ϕ1为小量Jr(ϕ1)−1ϕ2+ϕ1当ϕ2为小量ln(exp(\phi_1 ^{\wedge})exp(\phi_2^{\wedge}))^{\vee} \approx \left\{ \begin{matrix} J_l (\phi_2)^{-1} \phi_1 + \phi_2 & 当\phi_1为小量 \\ J_r (\phi_1)^{-1} \phi_2 + \phi_1 & 当\
2022-03-28 19:08:46
318
原创 点云处理深度图
深度图深度图,这个就不多介绍了,下面图介绍了深度图的形成方法:pcl提供了点云转深度图的接口* 代码实现range_image.cpp
2022-03-26 13:09:12
406
原创 点云处理-高斯滤波与双边滤波
高斯滤波首先介绍下高斯函数:Gσ(x)=12πσ2exp(−x22σ2)G_\sigma(x)=\frac{1}{2 \pi \sigma^2}exp(-\frac{x^2}{2 \sigma^2})Gσ(x)=2πσ21exp(−2σ2x2)下面是高斯卷积核的定义:GB[I]p=∑q∈SGσ(∣∣p−q∣∣)IqGB[I]_p=\sum_{q \in S} G_{\sigma}(||p-q||) I_qGB[I]p=q∈S∑Gσ(∣∣p−q∣∣)Iq这里的p代表中心点,q代表卷积核
2022-03-26 12:48:04
2466
原创 pytorch5-SOFTMAX回归手动实现
SOFTMAX回归手动实现import torchimport torchvisionimport numpy as npimport sysimport d2lbatch_size=256train_iter,test_iter =d2l.load_data_fashion_mnist(batch_size)num_inputs=784num_output=10W=torch.tensor(np.random.normal(0,0.01,(num_inputs,num_output
2022-03-26 12:24:55
1321
原创 pytorch4_SOFTMAX回归
3.4 SOFTMAX回归如果MSELoss用于线性连续值回归,那么SOFTMAX回归就用于分类离散问题比较合适。3.4.1 分类问题假设离散问题,及其简单的问题,图像2x2,x1,x2,x3,x4x_1,x_2,x_3,x_4x1,x2,x3,x4,为灰度图。分类别为1,2,3:y1,y2,y3y_1,y_2,y_3y1,y2,y33.4.2 SOFTMAX回归模型KaTeX parse error: Undefined control sequence: \vecW at pos
2022-03-25 14:52:21
2351
原创 pytorch3-线性回归_2
线性回归简单实现上次我们讲到了线性回归的表示方法,并通过一个二元一次方程简单的手动实现了线性回归的方法,这次我们调用相关的接口,实现下这个二元一次方程的回归。import torchfrom IPython import displayfrom matplotlib import pyplot as pltimport numpy as npimport randomimport torch.tuils.data as Data# 生成数据集num_inputs = 2num_exa
2022-03-25 12:48:16
2716
原创 SLAM第四章_1
李群与李代数基础我们先来说说,欧式变换类型在优化时的困难,欧式变换如下:T=[Rt0T1]T=\left[\begin{matrix} R & t \\ 0^T & 1\end{matrix}\right]T=[R0Tt1]其中旋转矩阵RRR虽然有9个数,但是各个数之间是有很强的约束的,对这种带有约束的数,优化是困难的,旋转矩阵的9个数,实际自由度只有3,因此我们需要对他进行转换。李群群其实局势满足以下公式的一种集合邻居搜索k最近邻居搜索“半经搜索邻居”“空间占用率"和"每个体素(Voxel)的点密度”树结构的序列化和反序列化下面是pcl-octree的使用案例#include<pcl/point_cloud.h>#include<pcl/o
2022-03-23 16:41:33
206
原创 pytorch_线性回归
线性回归模型定义我们通过一个简单的案例,来了解下线性回归y^=x1w1+x2w2+b\hat y = x_1 w_1 +x_2 w_2 +by^=x1w1+x2w2+b其中w1和w2是权重w_1和w_2是权重w1和w2是权重,b是偏差,KaTeX parse error: Undefined control sequence: \haty at position 1: \̲h̲a̲t̲y̲是预测值,y的预测估计,我们进行模型评估训练损失函数l(w1,w2,b)=1N∑i=1n12
2022-03-22 15:44:08
1828
原创 SLAM-14讲第三章_3
实践课useGeometry.cpp多种变换演示Eigen#include <iostream>#include <cmath>using namespace std;#include <Eigen/Core>#include <Eigen/Geometry>using namespace Eigen;//本程序演示了Eigen几何模块的使用方法int main(int argc,char **argv){ /
2022-03-21 10:34:02
213
原创 SLAM-14讲第三章_2
旋转向量1. 轴角法用一个轴绕着一定角度旋转表示旋转变换轴角法表示:(x,y,z,θ)(x,y,z,\theta)(x,y,z,θ)其中包含两个部分:轴:(x,y,z)(x,y,z)(x,y,z)角度:θ\thetaθ2. 旋转向量轴角法的轴:(x,y,z)(x,y,z)(x,y,z)方向的单位向量n⃗\vec nn轴角法的角度:θ\thetaθ旋转向量如下:(xiθ,yiθ,ziθ)(x^i \theta,y^i \theta,z^i \theta)(xiθ,yiθ,ziθ)
2022-03-21 10:18:07
337
原创 点云分解值k-d Tree
K-D树点云数据集比较大,为了方便进行邻近检索等,就必须对这些离散的点建立拓扑关系,K-D数就是其中一种K-D树基于二叉树来实现我们这里只做简介,如果想获取详细信息,可参考文档,注意文档下载之后,可以用markdown打开,否则用浏览器,可能会看不到图片这里首先介绍下几个重要的概念严格二叉树:树的每个非叶子节点的度始终为二满二叉树:树的每一层的结点都达到最大值,如果一个二叉树是层数是K,如果它是满二叉树,那么他的结点总数必定是(2k)−1(2^k)-1(2k)−1完全二叉树:从形式上讲它是
2022-03-19 16:12:20
412
原创 点云入门-输入与输出
### .PCD v.5 - Point Cloud Data file formatVERSION .5FIELDS x y zSIZE 4 4 4TYPE F F FCOUNT 1 1 1WIDTH 397HEIGHT 1POINTS 397DATA ascii0.0054216 0.11349 0.040749-0.0017447 0.11425 0.041273-0.010661 0.11338 0.0409160.026422 0.11499 0.0326230.024
2022-03-19 15:37:21
469
原创 Pytorch_第二章
Pytorch 数据操作创建Tensor操作创建一个未初始化的Tensorx=torch.empty(5,3)创建一个5x3的随机初始化的Tensorx=torch.rand(5,3)创建一个5x3的long型全0的Tensorx=torch.zeros(5,3,dtype=torch.long)使用list直接创建数据x=torch.tensor([5.5,3])创建全是1的Tensorx=x.new_ones(5,3,dtype=torch.float
2022-03-17 12:44:00
1030
原创 SLAM学习第三章节-----1
SLAM学习第三章节本章节主要介绍了,各种旋转与平移的表现方法,最后使用Eigen库进行了一些相关的案例演示矩阵和向量向量点乘这个就不多说了,基本的问题向量叉乘a×b=∣ijkaxayazbxbybz∣a \times b = \left| \begin{array}{cccc} i & j & k \\ a_x & a_y &a_z \\ b_x & b_y & b_z \\ \
2022-03-16 13:28:25
68
原创 SLAM学习(1-2章节)
SLAM学习(1-2章节)去年12月份学习SLAM相关内容,到今年三月份,将SLAM的相关内容学习了一边,现在开始写自己的博客,主要是为了复习以下相关的学习内容。相关的学习资料可以在以下git仓库上找到,SLAM讲个人觉得确实有些地方没有详细展开,本人在学习过程中查询了一些资料,将一些内容补充完整了!github仓库https://github.com/starnetB/CV_learning以上仓库里面还有PCL点云处理的相关学习资料,可以有助于点云处理的学习。此外还会同步更新pytorch与神
2022-03-16 10:35:49
3482
转载 学习笔记(10):走入 Cocos Creator视频教程-精灵与坐标系
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-28 15:26:30
121
转载 学习笔记(10):走入 Cocos Creator视频教程-精灵九宫格
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-26 10:28:31
816
转载 学习笔记(8):走入 Cocos Creator视频教程-动画效果实施
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-20 20:10:07
196
转载 学习笔记(7):走入 Cocos Creator视频教程-动画平面设计
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-18 23:02:40
116
转载 学习笔记(7):走入 Cocos Creator视频教程-星星的诞生
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-18 18:53:51
95
转载 学习笔记(6):走入 Cocos Creator视频教程-星星的诞生
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-18 15:46:21
91
转载 学习笔记(6):走入 Cocos Creator视频教程-helloworld
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-18 15:37:49
109
原创 学习笔记(4):走入 Cocos Creator视频教程-场景动态中添加核武标志
Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。...
2020-07-17 23:57:40
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人