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

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

替代方法:归一化焦距和归一化像平面

Cam-Conv论文中还有另一件事值得一提。如上所述,无法判断是使用更长焦距的相机拍摄还是近距离拍摄。从另一个角度来看,即使两个摄像机具有相同的3D距离,但从相同的位置由不同焦距的两个摄像机成像的同一对象也会出现不同的外观。

Cam-Conv的一种替代方法是使用标称焦距。所有地面距离都根据标称焦距缩放,并用于训练模型。然后在推理过程中,通过考虑相机的实际焦距,将预测距离缩放回实际距离。当然,以上讨论是基于相同图像传感器的假设。如果传感器的物理像素大小也发生变化,我们可以采用类似的想法,即假设视野狭窄(图像大小<<焦距),标称像素大小。相比之下,Cam-Conv是适应各种相机型号的更合适的方法。

这与MonoLoco(ICCV 2019)用于行人距离估计的方法密切相关。在图像上找到关键点之后,然后再导入MLP,图像坐标将以单位深度Z = 1投影到标准化图像平面。这有助于防止模型过度适合任何特定的相机。这基本上考虑了焦距和传感器像素大小对视物大小的影响。

非相机传感器数据

在自动驾驶中,摄像机图像以外的传感器数据通常可用于增加传感器冗余度和系统稳定性。如今,ADAS传感器套件中的一种常用的传感器(常用的摄像头除外)是雷达。

截止到今天,大多数商用雷达都抽出了极为稀疏的雷达点(根据不同的雷达型号,每帧数目不定,每帧最大数目为32到128个点)。这比激光雷达传感器每次扫描的数十万个点小三到四个数量级。因此,很自然地将雷达数据(或雷达引脚)视为一种补充和描述相机图像的元数据。 下面是对同一场景中商用雷达和激光雷达数据的密度的直观比较,这在自动驾驶中非常具有代表性。

image.png

相同场景的一般雷达点云和激光雷达点云的比较(来自nuScenes数据集)

注意:还有更先进的雷达系统,每帧输出数百或数千个点,但是这些所谓的高分辨率“成像雷达”(例如Astyx的成像雷达)在商业上受到限制,并且成本要比传统雷达高得多 。

关于仅对激光雷达数据或激光雷达和摄像机的融合(例如Frustum PointNet,AVOD,MV3D等)执行3D对象检测的文献很多。很少有文献基于稀疏的雷达和摄像机的融合。这是由于缺乏带有雷达数据的公共数据集,也是由于雷达数据的嘈杂性质和海拔信息的缺乏。因此,我希望nuScenes数据集的发布能引起人们对该领域的关注,当然仍需深入研究。

将雷达和图像数据融合流方法是找到将雷达数据“压缩”到图像的方法。在远距离检测:使用雷达和视觉进行远距离车辆检测(ICRA 2019)中,每帧数量不等的雷达数据被编码为2通道图像,且空间图像大小与摄像机图像相同,一个通道编码范围(距离测量) ,另一个编码速度(径向速度)。每个雷达引脚都标记为一个圆圈,而不是单个像素,以增加训练过程中每个点的影响,并在方位和高度上反映雷达测量的嘈杂性质。使用从雷达到摄像机的外部校准以及摄像机的固有校准,将雷达引脚投射到摄像机图像上。融合网络相对简单,我将在这里跳过,因为我们的重点是CNN的雷达数据表示。

image.png

使用两通道伪图像对雷达信息进行编码

在RVNet:单眼相机和雷达的深度传感器融合用于在恶劣的环境中的基于图像的障碍物检测(PSIVT 2019),雷达引脚也投射到相机的图像平面上并形成稀疏的雷达图像。这次它具有三个通道:深度,横向速度和纵向速度。注意,这里的速度由自身运动进行补充,因此不能由测距率的单个通道表示。(作者还提出了一种密集的雷达图像编码方法,这对我来说没有意义,因此在此省略。)

image.png

RVNet使用自身运动补充速度

在以上两种方法中,都是将雷达引脚投影到摄像机图像上。投影点可以用作单个像素,也可以提供恒定的空间范围。改善此问题的一种可能的方法是根据距离使用各种大小的磁盘,例如RRPN(Radar Region Proposal Network,ICIP 2019)使用的磁盘。从理论上讲,这可以更好地反映雷达引脚的空间不确定性,因为从理论上讲,附近雷达引脚的投影比远处的雷达引脚的横向空间不确定性更大。

CRF-Net:一种用于对象检测的基于深度学习的雷达和相机传感器融合架构(SDF 2019)将雷达点绘制为垂直线。线条从地面开始向上延伸3米,因此在垂直方向上未均匀地绘制。Parse Geometry from a Line (ICRA 2017)也使用类似的技术将单线激光雷达测量结果压缩为密集的数据结构。

image.png

Densify radar pins with vertical lines(CRF-Net,2019)

image.png

Densify one-line Lidar measurement (Parse Geometry from One Line, ICRA 2017)

此外,上述RRPN(雷达区域提议网络)也提出了一种很好的方式,可以从雷达生成区域入手。这是基于以下观察结果:nuScenes数据集中的几乎每个对象都具有相应的雷达引脚,因此雷达数据可用作合适的区域建议方法。为了适应雷达测量的空间不确定性,锚点并不总是位于中心。

image.png

RRPN使用嘈杂的雷达数据和移动的锚点进行目标检测

总之,以上所有方法(RRPN除外)都是将雷达引脚转换为伪图像,然后使用CNN提取其更高级别的信息。

激光雷达点云

如上所述,由于点云的密集性质,可以直接在激光雷达数据之上执行对象检测。因此,将激光雷达数据作为相机图像的元数据查看是不合适的。然而,从点云数据的数量变化不规则(不均匀分布在规则网格上)的意义上来说,激光雷达数据一般雷达数据一样是非结构化的。

在将激光雷达数据和图像数据导入神经网络之前,已经进行了许多努力来进行数据的早期融合MV3D:用于自动驾驶的多视图3D对象检测网络(CVPR 2017)将激光雷达点转换为两种伪图像类型:鸟瞰图(BEV)和前视图(FV)。BEV地图是具有0.1 m分辨率的离散化网格,具有多个高度图,一个密度图和一个强度图。FV遵循VeloFCN的惯例:使用全卷积网络从3D激光雷达进行车辆检测(RSS 2016),请注意,这不同于将点从激光雷达投影到相机图像。然后,三个不同的网络从BEV图像,FV图像和RGB图像中提取特征,将这些特征连接起来进行融合

image.png

LaserNet:一种用于自动驾驶的高效概率3D对象检测器(Arxiv,2019)提出了另一种编码激光雷达点的方法。RV(范围视图)是通过将激光ID直接映射到行并将方位角离散化为列而生成的。这种表示的优点是它自然紧凑。它具有五个通道:范围(距离),高度,方位角,强度和一个指示单元格是否包含点的标记。

image.png

LaserNet的激光雷达点表示

总之,尽管密度比一般雷达高,但激光雷达点也可以打包成伪图像供CNN使用。与通过全连接层来使用稀疏元数据的替代方法类似,我们还可以通过PointNet(CVPR 2017)直接使用无序点云数据。

通讯/关联数据

元数据的另一种类型是关联数据,例如,交通信号灯与车道关联。元数据融合:用于交通灯和车道分配的深度元数据融合(IEEE RA-L 2019)提出了一种数据融合方法,用于融合交通灯,车道箭头和车道标记检测结果的异构元数据。元数据以**元数据特征图(MFM)**的形式编码,并与来自相机图像的中间特征融合。MFM本质上是二进制注意力图。关联数据的真实性和预测值也被编码为表示横向空间位置的一维向量。

image.png

元数据功能图(MFM)将元数据与相机图像融合

在此过程中,元数据特征图(MFM)逐项与前F = 12层相乘。事实证明,这比将MFM与图像特征图直接连接要好一些。

image.png

具有IPM的摄像机图像的元数据功能图(MFM)

物体检测结果

有时,将对象检测边界框输入其他学习管道很有用。但是,边界框的数量不是恒定的-从这个角度来看,它们也可以视为元数据。一种方法是将边界框转换为热图。在ROLO:用于视觉对象跟踪的空间监督循环卷积神经网络中,对象检测结果转换为热图,以指导学习视频对象检测和跟踪过程中在空间和时间上都一致的特征。

image.png

ROLO将对象检测结果(仅一个对象)转换为热图

在通过关联嵌入的像素到图形(NIPS 2017)一文中,可以通过将对象检测的格式设置为两个通道来融合先前的检测,其中一个通道由边界框中心的一个热激活组成,另一个通道提供边界框的二进制掩码。可以在这两个通道上显示多个框,第二个框指示其掩码的并集。如果边界框太多,导致蒙版通道变得过于拥挤,则通过边界框锚点将蒙版分开,并将它们放入不同的通道。

为了降低计算成本,这些额外的输入未集成在输入层中,而是在多层卷积之后合并。

总结

  • 注意元数据通常是无序的,并且不位于常规网格上。每个图像的元数据数量通常也是不确定的,因此难以使用具有固定输入维度的固定神经网络结构。
  • 如果元数据每个摄像机图像的长度固定,则有可能使用全连接层将这些元数据与摄像机特征图融合。
  • 如果元数据是无序的,例如一般雷达或激光雷达点云数据,则替代方法是使用不改变输入顺序排列的PointNet结构。
  • 使用CNN处理元数据的最通用方法是将元数据转换为具有规则网格间距的某种形式的伪图像。这应该是最好的,或者可以将其转换为与图像数据相同的空间域。

参考文献

  • CoordConv: An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution, NeurIPS 2018
  • CAM-Convs: Camera-Aware Multi-Scale Convolutions for Single-View Depth, CVPR 2019
  • MonoLoco: Monocular 3D Pedestrian Localization and Uncertainty Estimation, ICCV 2019
  • Distant Detection: Distant Vehicle Detection Using Radar and Vision, ICRA 2019
  • RVNet: Deep Sensor Fusion of Monocular Camera and Radar for Image-based Obstacle Detection in Challenging Environments (PSIVT 2019)
  • CRF-Net: A Deep Learning-based Radar and Camera Sensor Fusion Architecture for Object Detection, SDF 2019
  • RRPN: Radar Region Proposal Network, ICIP 2019
  • Parse Geometry from a Line: Parse Geometry from a Line: Monocular Depth Estimation with Partial Laser Observation, ICRA 2017
  • LaserNet: An Efficient Probabilistic 3D Object Detector for Autonomous Driving, Arxiv 2019
  • VeloFCN: Vehicle Detection from 3D Lidar Using Fully Convolutional Network, RSS 2016
  • MV3D: Multi-View 3D Object Detection Network for Autonomous Driving, CVPR 2017
  • Metadata Fusion: Deep Metadata Fusion for Traffic Light to Lane Assignment, IEEE RA-L 2019
  • ROLO: Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking, ISCAS 2016
  • Pixels to Graphs by Associative Embedding, NIPS 2017

本文最初在《迈向数据科学》上发表,并在得到作者许可的情况下重新发布到TOPBOTS。

目录
相关文章
|
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)详解,填充、步幅、输入及输出之间的关系