我正在尝试深入学习图像。我有来自不同相机的约4000张图像,具有不同的光线条件,图像分辨率和视角。
我的问题是:什么样的图像预处理有助于改善物体检测?(例如:对比度/颜色标准化,去噪等)
答案 0 :(得分:7)
用于在将图像馈送到神经网络之前对图像进行预处理。最好使数据零中心。然后尝试规范化技术。当数据在比任意大的值或太小的值范围内缩放时,它肯定会提高准确度。
示例图片将是: -
以下是斯坦福CS231n 2016讲座的解释。
*
标准化是指对数据维度进行标准化,使它们具有大致相同的比例。对于图像数据有两种常见的方法可以实现此标准化。一种是将每个维度除以其标准偏差,一旦它以零为中心:
(X /= np.std(X, axis = 0))
。此预处理的另一种形式对每个维度进行归一化,使得沿着维度的最小值和最大值分别为-1和1。如果您有理由相信不同的输入要素具有不同的比例(或单位),则应用此预处理才有意义,但它们应该与学习算法具有大致相同的重要性。在图像的情况下,像素的相对比例已经大致相等(并且在0到255的范围内),因此不必严格执行此额外的预处理步骤。
*
上述摘录的链接: - http://cs231n.github.io/neural-networks-2/
答案 1 :(得分:7)
对于这篇文章来说,这肯定是迟到的答案,但希望能帮助谁发现这篇文章。
这是我在网上找到的一篇文章Image Data Pre-Processing for Neural Networks,虽然这篇关于如何培训网络的文章肯定是一篇很好的文章。
文章的主要内容是
1)由于数据(图像)很少进入NN应根据NN设计的图像尺寸进行缩放,通常为正方形,即100x100,250x250
2)考虑一组特定图像集合中所有输入图像的 MEAN (左图)和标准偏差(右图)值
3)归一化图像输入,通过从每个像素中减去均值然后将结果除以标准差来完成,这使得在训练网络时收敛更快。这将类似于以零为中心的高斯曲线
答案 2 :(得分:1)
请仔细阅读this,希望这会有所帮助。想法是将输入图像分成几部分。这称为R-CNN(here是一些例子)。该过程分为两个阶段,即对象检测和分割。对象检测是通过观察渐变的变化来检测前景中的某些对象的过程。分割是将对象放在具有高对比度的图像中的过程。高级图像检测器使用贝叶斯优化,可以使用局部优化点检测接下来会发生什么。
基本上,在回答您的问题时,您提供的所有预处理选项似乎都很好。由于对比度和颜色标准化使计算机识别出不同的物体,而去噪将使渐变更容易区分。
我希望所有这些信息都对您有用!
答案 3 :(得分:1)
除了上面提到的以外,提高低分辨率图像(LR)的质量的一种好方法是使用深度学习进行超分辨率。这意味着要建立一个将低分辨率图像转换为高分辨率的深度学习模型。我们可以通过应用降级函数(诸如模糊等滤波器)将高分辨率图像转换为低分辨率图像。这实质上意味着LR =退化(HR),其中退化函数会将高分辨率图像转换为低分辨率。如果我们可以找到此函数的逆函数,则可以将低分辨率图像转换为高分辨率。可以将其视为监督学习问题,并通过深度学习找到反函数来解决。深入了解了https://www.elastic.co/guide/en/elasticsearch/reference/6.6/tasks.html中有关使用深度学习的超分辨率的介绍。我希望这会有所帮助。