点云相关资料汇总
1. PCL(Point Cloud Library)
PCL 是一个应用广泛的点云数据处理库,其使用 C++ 语言编写,支持多种操作系统平台。其整体架构图如下:
官方网址
官方手册
开源仓库
中文论坛
详细介绍参见博文 PCL(Point Cloud Library)学习指南&资料推荐(2022版)。中文教程可以看朱德海编写的《点云库 PCL 学习教程》或者郭浩编写的《点云库 PCL 从入门到精通》。
2. ROS
ROS(Robot Operating System)是一个用于构建机器人应用的开源软件库,其包含各种开发者工具,从硬件驱动到 SOTA 的算法等。ROS 的基本架构如下图所示:
官方网址
官方手册
官方 Wiki
国际社区
创客智造 中文机器人教程
3. Lidar & Radar
一文了解激光雷达(Lidar)工作原理,及雷达(Radar)、点云数据相关技术与应用领域
激光雷达:3D物体检测算法
4. Trimesh
5. Open3D
2014-NIPS-Two-Stream Convolutional Networks for Action Recognition in Videos
1. 摘要
这篇文章[1]主要研究了如何有效地将深度学习用在动作识别领域。作者提出,这个任务的主要挑战在于如何让神经网络同时捕获到两种信息:一种是 appearance 信息(比如物体的大小、形状等静态信息),另一种是 motion 信息(即物体的运动信息)。这篇文章的主要贡献有三点,第一是提出了一个基于 CNN 的双流网络,它同时结合了时空间信息;第二,作者展示了即使只有少量训练数据,基于 CNN 的神经网络在视频帧的光流信息上进行训练能取得很好的性能;最后,作者展示了双流网络在多任务学习上的潜力,作者在两个数据集上同时训练一个双流骨干网络,相比于使用单一数据集,训练后的网络在两个数据集上都有性能提升。作者在 UCF-101 和 HMDB-51 数据集上进行了实验,效果能和当时的 SOTA 方法(当时还是非深度的方法)性能相当,比之前使用神经网络的方法要好很多。
2. 引言
相比于单张的静态图片,视频数据提供了一种很好的数据增强,因为视频数据天生就包含了物体形变等各种信息。在这篇文章之前也有一篇基于神经网络做视频理解的网络,但其简单粗暴,直接抽取一些关键帧输入到 CNN 网络中,自然 ...
图像扫描方式
1. 简介
在处理图像等二维数据时,虽然有直接的二维数据处理方法,但有时因为各种因素,我们还是会将其展开成一维的序列数据来进行处理。这就涉及到如何将二维数据展开成一维数据,本文介绍一些常见的展开方法及其对应的术语。
2. 光栅扫描
光栅扫描(Raster-Scan)是一种最简单的图像扫描方式,其就是逐行进行扫描,如下图所示:
3. Zigzag 扫描
Zigzag 扫描(Zigzag Scan)是按照从左上角到右下角的一种曲折扫描方式,JPEG 算法中就使用了这种扫描方式,具体扫描方式如下图所示:
4. 蛇形扫描
蛇形扫描(Snake Scan)也称 SSS 形扫描,故名思义,其扫描方式如下:
5. 希尔伯特扫描
希尔伯特扫描(Hilbert Scan)来源于数学中的空间填充曲线,即希尔伯特曲线,其具体扫描方式如下:
当然,此类基于空间填充曲线的扫描还有很多类型,不仅仅局限于上述形式,比如附录中的皮亚诺曲线。
附录
皮亚诺扫描(Peano Scan)
扫描形式合集
2021-ICLR-An Image is Worth 16x16 Words:Transformers for Image Recognition at Scale
1. 摘要
这篇文章[1]主要提出如何将 Transformer 用在计算机视学领域(即 ViT, Vision Transformer),用一句话概率就是这篇文章的标题:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale,即将图像划分成许多 16×1616 \times 1616×16 的 patch,这样每一个 patch 就相当于自然语言中的一个单词,然后将这些 patch 组成一个序列,并使用一个线性层对每个 patch 进行编码(类似于自然语言处理中的词嵌入),最后就可以将编码得到的序列数据直接输入原版的 Transformer 进行训练,而不需要对架构上做任何针对 CV 的改动。作者提出,虽然注 Transformer 早已被提出并在 NLP 领域引发了一阵热潮,但在 CV 领域 CNN 仍然占主导地位。过去一些尝试将注意力机制用在 CV 中的工作,要么是将注意力和 CNN 结合,要么是将注意力机制作为层嵌入一般的 CNN 网络架构(比如 ResNet),而作者提出其实可以完全 ...
2022-CVPR-Swin Transformer:Hierarchical Vision Transformer using Shifted Windows
1. 摘要
这篇文章[1]主要提出了一种用于 CV 任务的 Swin Transformer,它是一种使用了移动窗口的层级式 ViT。其主要思想就是借鉴于 CNN,作者想让 Transformer 能像 CNN 一样,通过层级式的特征提出从而使得提取出的特征有多尺度的概念。
作者一开始提到,Transformer 的确具有强大的能力,但直接将其用于 CV 任务存在两个问题。一个是图像中物体尺寸的问题,即使是同一个物体,在不同图像中由于拍摄距离的远近而导致物体的尺寸不同;另一个问题是图像分辨率过大时,直接将每个像素作为一个单词序列长度过大(这个问题也是 ViT 主要解决的)。因此,作者提出了层级式的 Swin Transformer,从而能学习到图像的多尺度信息,刷爆了各种 CV 任务的榜单。
2. 引言
过去 CV 领域一直是 CNN 主导,自从 NLP 领域中强大的 Transformer 出现以后,作者就想将其也用到 CV 领域。ViT 已经成功将其用到了 CV 分类任务上,但对其它任务则没有过多的探究。因此,作者在这篇论文中主要想讲的就是,Transformer 确实可以作为骨干 ...
2014-NIPS-Generative Adversarial Nets
1. 摘要
这篇文章[1]主要提出了一种新的估计生成模型的方法:即同时训练两个模型 GGG 和 DDD,其中生成模型 GGG 用来捕获数据分布,鉴别模型 DDD 用来估计样本是来自于真实数据还是由生成模型产生的概率(也即尽可能区分开真实样本和 GGG 生成的样本)。训练 GGG 是通过最大化 DDD 犯错的概率来进行优化的,而训练 DDD 则是通过最小化样本分类损失来进行优化的。以博弈论的角度来看,作者提出的这个 GAN 框架相当于就是一个 minimax 双人博弈的游戏。同时,作者证明了,在假定的函数空间中,GAN 框架存在一个唯一的解,使得 GGG 学习到真实的数据分布,从而产生和给定样本一样的样本,DDD 则无法分辨真实样本和 GGG 产生的样本,即对于这个二分类给出的概率总是 12\frac{1}{2}21。
2. 动机
以往很多工作,都是尝试通过神经网络去直接学习出原始数据分布,比如首先假设数据分布模型,然后通过最大似估计来求得这个模型的具体参数。然而真实数据分布往往都很复杂,很难直接求得真实数据的分布。近些年,以 VAE 为代表的一类方法,退而求其次,直接学习构建一个能拟 ...
2017-NIPS-Attention Is All You Need
1. 摘要
这篇文章[1]主要提出了一种新的序列转录神经网络结构:Transformer。在主流的序列转录模型中,往往都是使用编码器+解码器并配合注意力机制,Transformer 也是如此。与以前的主流序列转录模型相比,Transformer 完全没有使用 RNN 和 CNN。在两项机器翻译任务上,Transformer 显示出了强大的性能。
2. 动机
RNN 是经典的处理序列数据的模型,然而它在处理较长的序列数据时,需要一步一步计算出每一个预测数据,因此训练较为困难。同时,如果序列较长时,早期的数据可能就被丢弃而无法被使用。为了解决 RNN 的这些问题,作者借鉴了 CNN 和自注意力的想法,提出了 Transformer 架构。
3. 模型
Transformer 的模型架构如下:
其中,N×N\timesN× 表示有 NNN 个相同的块累在一起;⊕\oplus⊕ 表示向量相加。上图左边是编码器,右边是解码器。图中黑色实线一分为多表示将数据张量直接复制多份,进入 Multi-Head Attention 的三条实黑线从右往左依次为 Q,K,VQ, K, VQ,K,V(见下一小节 ...
2018-ICLR-Variational image compression with a scale Hyper-prior
1. 摘要
这篇文章[1]在上一篇文章[2]基础上增加了一个超先验模块,用来有效地捕获隐变量空间的空间依赖信息。这个超先验可以看作是边信息,使用边信息作为先验来辅助压缩在很多标准的图像压缩算法中都广泛使用,但在基于神经网络的压缩算法中还没有得到研究。因此,作者提出了一个超先验模块,和用于压缩的 AutoEncoder 进行联合训练。作者在文章中展示了其提出方法达到了 SOTA 的性能,同时还对比了使用不同的失真度量进行训练对性能的影响。
2. 引言
最近基于深度学习的有损压缩算法在机器学习领域和图像处理领域得到了广泛重视,出现一系列的相关研究工作。这些工作的基本框架和标准的压缩算法类似,即编码时先将图像由像素域变换到隐表示域,然后在隐表示域上进行量化,再使用无损的熵编码进行压缩;解码则是逆过程。
但是在之前的方法中,用来压缩隐表示的熵模型都是将隐表示看作是完成分解开的,即其每个元素看作是各自独立的。在训练时,这些方法都是使用香农交叉熵作为码率损失:
R=Ey^∼m[−log2py^(y^)](1)R=\mathbb{E}_{\hat{\boldsymbol{y}} \sim m}\l ...
2016-CVPR-Deep Residual Learning for Image Recognition
1. 简介
这篇文章[1]主要思想是将 shortcut 用在了神经网络模型中,从而在一定程度上缓解了深度神经网络训不动的问题(即网络深到一定程度反而性能下降)。shortcut 在 202020 年前的神经网络热潮中就被提出来了,作者从新将其用在了深度神经网络中,发现性能很好。
2. 框架
3. 实验
可以看到,加入 shortcut 后,34 层的网络在训练误差和测试误差上都要小于 18 层的网络;而在没有加入 shortcut 时,34 层的网络的误差是要高于 18 层的网络的。
4. 分析
我们以一个两层的残差网络模型为例,这两层分别用 f,gf, gf,g 表示,输入用 h(x)h(\boldsymbol{x})h(x) 表示(即表示来自浅层头处理后的输出),则加入 shortcut 后,每一层的梯度为:
第一层:∂[f(h(x))+h(x)]∂x=∂f(h(x))∂x+∂h(x)∂x\frac{\partial [f(h(\boldsymbol{x})) + h(\boldsymbol{x})]}{\partial \boldsymbol{x}} = \frac{ ...
神经网络相关指标
在神经网络中,假设:
卷积层的大小用 kh×kw×kckh \times kw \times kckh×kw×kc 表示;
指标
计算公式
FLOPs
(卷积核高×\times×卷积)
2021-Arxiv-Learning Transferable Visual Models From Natural Language Supervision
1. 简介
这篇文章[1]的主要想法是,对自然语言特征和图像特征进行对比学习,训练得到对应的文本和图像编码器,然后使用预训练好的成对的编码器去做各种各样的下游任务。以图像分类任务为例:
在训练阶段,对每个图像的类别按照一种文本范式来构建该图片的描述句子,然后使用一个图像编码器模块和文本编码器模块,分别对图像和文本进行编码得到对应的特征。所有文本特征构成一个文本特征向量,一个 Batch 内的图像特征构成一个图像特征向量,通过计算这两个特征向量间的余弦相似性得到余弦相似矩阵。由于两个向量中的元素是一一对应的,因此在余弦相似矩阵对角线上的图像文本对被看作是正样本,故 Label 就是 [1,⋯ ,n]⊤[1, \cdots, n]^\top[1,⋯,n]⊤,其中 nnn 是矩阵大小,将其与余弦相似矩阵求交叉熵损失即可反传优化图像编码器和文本编码器。
在推理阶段,使用需要分类的类别对应的文本句子作为文本编码器的输入,需要分类的图片作为图像编码器的输入,然后计算二者之间的余弦相似度,选出分类概率最大的那个文本句子,然后提取出句子中包含的类别即可。
通过对文本和图像做对比学习的方式, ...
感知机
1. 简介
感知机是二类分类的线性分类模型,属于监督学习中的判别模型:
输入:实例的特征向量;
输出:实例的类别,取 +1+1+1 和 −1-1−1 值。
感知机本质可以看作是输入空间(特征空间)中将实例划分为正负两类的分离超平面。其基于误分类的损失函数,并利用梯度下降法对损失函数进行极小化进行求解。
2. 模型
定义:假设输入空间(特征空间)是 X⊆Rn\mathcal{X} \subseteq \mathbf{R}^nX⊆Rn,输出空间是要 Y={+1,−1}\mathcal{Y} = \{+1, -1\}Y={+1,−1}。输入 x∈X\boldsymbol{x} \in \mathcal{X}x∈X 表示实例的特征向量,对应于输入空间的点;输出 y∈Yy \in \mathcal{Y}y∈Y 表示实例的类别。由输入空间到输出空间的如下函数f(x)=sign(w⊤x+b)(1)f(\boldsymbol{x}) = \mathrm{sign}(\boldsymbol{w}^\top \boldsymbol{x} + b) \tag{1}
f(x)=sign(w⊤x+b)(1 ...