具有异构元数据的卷积神经网络:CNN元数据处理方式回顾(一)

简介: 具有异构元数据的卷积神经网络:CNN元数据处理方式回顾(一)

在自动驾驶中,卷积神经网络是用于各种感知任务的必备工具。尽管CNN擅长从摄像机图像(或视频剪辑形式的序列)中提取信息,但我们毕竟不断遇到各种不适合卷积神经网络的元数据。

image.png

直接在元数据上使用CNN可能不是一个好主意

按照传统定义,元数据是指用于描述其他数据的一组数据。在本文中,根据元数据的定义:

  • 元数据是一种伴随相机图像数据作为辅助信息的异构,非结构化或无序数据。按照传统的定义,这些数据“描述”了相机数据。
  • 元数据的大小通常比相机图像数据小得多,每个图像的数量从几到最多几百个不等。
  • 与图像数据不同,元数据不能用规则的网格表示,并且每个图像的元数据长度可能不是恒定的。

所有这些属性使CNN难以直接使用元数据,因为CNN假定网格上的数据间隔是规则的,并且网格上的相邻数据也具有紧密的空间或语义关系。

我遇到的元数据类型可以分为以下几类:

  • 可能会影响传感器观察的传感器参数:相机内部/外部
  • 不同类型的传感器数据:雷达针或激光雷达点云
  • 两组数据之间的对应/关联

一种特殊情况是激光雷达点云数据。一帧典型的激光雷达点云通常具有数十万个点,伴随一帧或几帧摄像机图像。激光雷达点云的信息如此丰富,以至于它们本身可以构成独立的感知管道和相机感知的基础。因此,很少将其视为相机数据的辅助信息,所以它不是此处考虑的典型元数据类型。对于点云数据,人们已经开发了特定的神经网络体系结构,例如PointNet或图形神经网络(GNN),可以直接使用点云数据,这超出了本文的范围。

下面我们回顾一下最近文献中提出的使用卷积神经网络处理元数据的不同方式。

相机参数

深度学习在SLAM的许多方面都取得了重大进展,其中之一是单眼深度估计。单眼深度估计本质上是不适合本文讨论的研究的,并且由于单眼图像缺乏规模,在一个数据集上训练的模型通常不能很好地推广到其他数据集。这与常规对象检测形成了鲜明的对比,在常规对象检测中,对象检测器的性能不依赖于特定的相机模型(要知道哪种相机模型拍摄了COCO数据集中的数十万张图像,这真是一场噩梦。)

image.png

使用不同焦距镜头拍摄的同一场景

相机的固有特性,尤其是镜头的焦距,决定了单眼图像中缺少的比例因子。一般而言,无法判断是从距离物体较远的位置使用焦距较长的相机拍摄的图像还是在距物体较近的位置使用焦距较短的相机拍摄的图像。

image.png

单眼图像的尺度模糊性

因此,模型训练和相关结论通常是在使用同一相机(或至少使用相同传感器和镜头规格的相机)收集的一个数据集上进行的。如果更改相机模型,则必须收集一个全新的数据集并注释距离后再次训练模型。

幸运的是,在自动驾驶和其他工业应用中,相机的内在特性很容易从相机制造商那里获得,并且在相机的整个使用寿命中相对固定。我们可以将这些数据运用于单眼深度预测网络吗?

相机固有特性具有四个自由度,行和列方向的焦距f_x和f_y已通过像素大小归一化,而c_x和c_y是主点的像素位置。我能想到的一个简单的解决方案是将这四个数字与深度解码器融合在特征图的顶部,并添加一个全连接层以将这四个数字融合。CAM-Convs:适用于单视图深度的相机感知多尺度卷积(CVPR 2019)通过将数据处理为伪图像提出了一种更好的解决方案。

image.png

CAM-Convs:摄像机感知的多尺度卷积

Cam-Conv从Uber的CoordConv中获得了很多启发(卷积神经网络和CoordConv解决方案的有趣教训,NeurIPS 2018)。CoordConv将两个网格的网格通道连接到原始图像和中间特征图,以对位置信息进行编码。Cam-Conv建立在CoordConv的顶部,首先将CoordConv的原点从左上角移动到主点,从而创建了两个居中坐标(cc)贴图。这两个通道对主要点信息进行编码。然后通过将cc通道除以相机焦距f并取反正切来计算视场(fov)映射,这基本上可以计算出每个像素的方位角和仰角。这两个通道对焦距信息进行编码。最后,归一化坐标(nc)映射也被连接到特征映射(本质上是归一化的CoordCon)。

image.png

图像中像素的方位角和仰角(改编自src)

实际上,CoordConv本身可以看作是将坐标信息编码到卷积神经网络的一种情况。它为卷积神经网络提供了平移方差的功能,对于学习位置敏感的数据非常有用。

目录
相关文章
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
1天前
|
机器学习/深度学习 自然语言处理 前端开发
深度学习-[数据集+完整代码]基于卷积神经网络的缺陷检测
深度学习-[数据集+完整代码]基于卷积神经网络的缺陷检测
|
2天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
|
2天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】29.卷积神经网络之GoogLeNet模型介绍及用Pytorch实现GoogLeNet模型【含完整代码】
【从零开始学习深度学习】29.卷积神经网络之GoogLeNet模型介绍及用Pytorch实现GoogLeNet模型【含完整代码】
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】27.卷积神经网络之VGG11模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】27.卷积神经网络之VGG11模型介绍及其Pytorch实现【含完整代码】
|
3天前
|
机器学习/深度学习
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
|
3天前
|
机器学习/深度学习 Shell
【从零开始学习深度学习】22. 卷积神经网络(CNN)中填充(padding)与步幅(stride)详解,填充、步幅、输入及输出之间的关系
【从零开始学习深度学习】22. 卷积神经网络(CNN)中填充(padding)与步幅(stride)详解,填充、步幅、输入及输出之间的关系

热门文章

最新文章