我已经建立了一个卷积神经网络,它对最初在极地空间中表示的数据进行训练(测量值是角度和距离的函数)。我的管道首先将坐标转换为笛卡尔网格并重新投影图像。然而,这会导致数据维度(即输入图像的像素大小)显着增加,并且需要我希望避免的插值步骤。
是否有合适的方法(在 keras/tensorflow 中实现)可用于对原始极坐标数据执行(2D)卷积?我已经学习了 cs231n 课程,所以我有一些背景,但还不是专家,尤其是在理论方面。谢谢!
我已经建立了一个卷积神经网络,它对最初在极地空间中表示的数据进行训练(测量值是角度和距离的函数)。我的管道首先将坐标转换为笛卡尔网格并重新投影图像。然而,这会导致数据维度(即输入图像的像素大小)显着增加,并且需要我希望避免的插值步骤。
是否有合适的方法(在 keras/tensorflow 中实现)可用于对原始极坐标数据执行(2D)卷积?我已经学习了 cs231n 课程,所以我有一些背景,但还不是专家,尤其是在理论方面。谢谢!
在基本层面上,CNN 的工作原理是找到空间相关的相关性,即输入中经常出现的位置。出于这个原因,从极地信息创建数据的笛卡尔投影听起来是很自然的方法。
如果您的原始数据存在某种固有结构,则可以使用 CNN 之类的东西,但您必须仔细考虑架构。
以下是我脑海中闪过的一些其他想法,它们可能会帮助您集思广益或找到相关的研究论文:
正如您描述的方法,将极坐标数据转换为图像不仅会增加数据的维度,而且通常会增加数据的稀疏性。这使得训练像 CNN 这样的东西变得非常困难,它通常最适用于密集的信息块,比如照片。如果您的数据稀疏,您可能会考虑进行一些其他预处理,例如为投影添加模糊。
具有距离度量的极坐标本质上与点云相同。如果您将系列表示为扫描,而不是一组图像,而是作为 3d 点云,您可以查看诸如PointNet、PointNet++、VoxelNet 之类的模型(请参阅该链接网页底部的示例项目)。有 3d 点云中的对象检测或分割示例,这可能会为您的案例提供其他想法 - 所有这些都在 Tensorflow 或其他 DL 框架中公开可用。
您对数据的理解程度如何?也许一些进一步的探索或可视化可能有助于激发一些想法,或者至少为可行的方法提供更好的感觉。尝试使用 PyntCloud(示例)之类的东西绘制数据的笛卡尔坐标(如果您可以将许多帧映射到全局原点)。
您可以完美地使用具有 2D 卷积的极坐标数据,而无需进行笛卡尔转换(我并不是说它会更好)
例子:
因此,
你最终得到一个 90x360 像素的图像。
然后你需要一个映射函数 极坐标为 像素位置,函数由下式给出:
让我们以我们的例子为例,