是否可以使用神经网络来插入数据?

数据挖掘 Python 神经网络 卷积神经网络 过拟合
2022-02-13 09:46:20

我对人工智能和神经网络完全陌生。我目前正在从事一个等离子体物理模拟项目,该项目需要非常高分辨率的数据集。我们目前有两个以不同分辨率运行同一问题的模拟结果——一个的分辨率高于另一个。但是,我们需要更高的分辨率才能有效地使用这些数据。不幸的是,由于计算能力的限制,我们不可能运行更高分辨率的模拟。因此,相反,我们试图以某种方式对我们必须的数据进行插值,以便合理估计如果我们以更高的分辨率运行模拟结果可能会是什么。我尝试使用 SciPy 中的传统插值技术和函数对数据进行插值。然而,

问题陈述和我的想法

所以我想知道是否可以使用神经网络生成一个输出,当输入到插值器(我使用 SciPy 编写的代码)时,会产生比只使用插值器更好的结果。目前,绘制时的数据如下所示:

在此处输入图像描述

这是在某个时间 t 绘制的数据。但是,我们有大约 30 个不同时间步长的数据与此类似 - 所以我们有 30 个不同的数据集,它们看起来与此相似,但略有改变。正如我之前所说,我们还拥有 30 个时间步长中每一个的高分辨率和低分辨率数据集。

我对 ANN 的想法如下:可以将低分辨率数据(512 x 256 二维阵列)输入网络以输出稍微修改的 512 x 256 二维阵列。然后我们可以将修改后的数据集输入到我们的插值器中,看看它是否与高分辨率数据集 (1024 x 512) 匹配。网络的误差函数将是高数据集和插值数据集的差异的函数(可能类似于数组中每个元素的差异的平方和)。然后可以对所有 30 个不同的数据集执行此操作,以最小化高分辨率和插值数据集的差异。

如果这按计划工作,我会以某种方式将这个训练有素的 ANN 用于高分辨率数据集(1024 x 512),以将其输出输入插值器。

问题

是否有可能创建一个可以做到这一点的神经网络,如果可以,什么类型的网络可以做到这一点?

即使可以训练神经网络,当最初使用低分辨率数据集 (512 x 256) 训练时,我们如何升级以适用于高分辨率数据集 (1024 x 512)?

这是预测模拟结果的可靠方法吗?(所有 30 个数据集看起来几乎与上图一模一样;包括高分辨率结果)

如果可能,请链接一些资源,以便我可以进一步阅读。

1个回答

有可能的。通过深度学习创建更高分辨率的图像已经在多个领域完成。医学影像是最常见的领域之一。

一般方法称为“基于学习的上采样”。在文献中也称为“分辨率增强”或“超分辨率(SR)重建”。目标是从低分辨率 (LR) 版本中获得更高分辨率 (HR) 的输出。

有很多选择可以考虑,包括:

  • 采样顺序(上采样前 SR 与上采样后 SR)
  • 损失函数(逐像素 L1 或 L2 损失、内容损失、对抗性损失、峰值信噪比 (PSNR)),
  • 架构(卷积神经网络(CNN)、残差学习、递归学习、超分辨率生成对抗网络(SRGAN))

Khoo 等人的“ A Review on Deep Learning Super Resolution Techniques ”是一个起点。

一种可能的限制是缺乏原始数据。您可能已在项目范围内应用数据增强以综合增加训练数据量或尝试单图像超分辨率 (SISR)