美文网首页
深度学习项目数据怎么处理?

深度学习项目数据怎么处理?

作者: 小黄不头秃 | 来源:发表于2023-06-18 20:56 被阅读0次

深度学习我们要采集数据,要设计模型、训练模型,最后需要将模型部署。那么哪一个部分最重要呢?其实最重要的部分就是数据的处理部分,因为数据代表着特征,当我们的特征越丰富,特征越明显,我们的模型识别率才会越高。既然如此,那么数据又该如何进行处理呢?

数据处理主要分为五个部分:数据采集、数据清洗、数据标注、数据增强、数据预处理。

一、数据采集

我们需要知道如何准确的采集,当数据不够时需要进行怎样的处理。

(1)数据样本数量不够时如何处理?
  • 使用迁移学习:使用类似数据训练好的模型,在原参数的基础上,使用少量的数据进行微调。
  • 使用数据增强技术:增加数据量,在一定程度上增加数据的特征数量。例如:缩放、旋转、拼接等
  • 模拟数据:尽量模拟项目需求制造数据,结合少量的真是样本进行训练。甚至可以使用生成模型,生成数据。
(2)采集数据的四个指标——(样本数量、覆盖性、多样性、均衡性)

样本数量:样本的数量越多,所包含的数据特征就更多。但是数据不能够通过重复增加样本数量。

覆盖性:覆盖性是指该任务下的数据类别够不够,例如ImageNet的1000个类

多样性:包含的场景、角度、噪声、明暗等。这会影响到模型的泛化能力。

均衡性:就是让不同类别下的样本数量尽量一致,如果样本数量的分布不够均匀,会影响到模型的效果。

二、数据清洗

数据清洗的目的是为了增加数据集的质量,减少误差。

  • 去掉或修改错误数据
  • 去掉重复数据
  • 补全缺失数据
  • 一致性原则:就是定义标准要统一,否则模型容易出现震荡。训练集和测试集保持一致性,尽量满足独立同分布(IID)。

三、数据标注

就是标注的时候尽量保持数据的均衡性。

当数据标注中出现多种标准时如何解决?
可以使用这个数据集训练一个模型出来,然后重新标注一小部分数据,再加上数据增强技术,让训练好的模型进行微调。

四、数据增强技术

(1)形状变换

形状变换主要包括的是将图像进行简单的线性变换,例如:

  • 仿射变换:平移、旋转、缩放、裁切等
  • 透视变换:将图像投影到一个新的视平面。
  • 非线性变换:给数值加一个函数,非线性转换包括log转化,平方根转化和弦转化等
(2)颜色空间的变换
  • 色彩的变换:对图片的三个通道颜色进行改变
  • 饱和度的变换:将图片转化为HSV类型,然后对饱和度进行调整。
  • 图片明暗变换:调整图片的亮度和对比度。
(3)加入噪声

可以加入高斯采样,增加数据的鲁棒性。

(4)遮罩技术
  1. cutout:随机生成一个正方形,将图片中的一部分给遮住,遮罩区域像素值全置为0.
  1. dropblock:弥补了drop out会使得特征较为离散的缺点。它随机抑制一块数据。
  1. Mixup:将随机的两个样本随机混合,分类的标签按比例分配。
  1. CutMix:首先随机选取两个样本,将其中一张图片随机切除一块区域,然后该部分区域填充另一张图片。分类标签按比例分配。
  1. Mosaic:这个方法是cutmix方法的一个改进版本。其实用四张图片,对四张图片进行拼接,拼接成一张新的图片。这样能够丰富物体检测的背景。

五、数据预处理

首先我们得弄清楚数据是离散数据还是连续数据。
离散数据:

  • one-hot编码:稀疏编码,比较浪费计算和内存。
  • 词向量(word embedding):稠密编码。

连续数据:

  • 归一化:可以根据下面公式计算,输出的区间在[0, 1],如果你想将数据规范到[-1, 1]之间,可以先减去0.5, 然后再乘以2。当然还有其他的归一化公式。

x_{new} = \frac{x_i - min}{max - min}

x_{new} = (\frac{x_i - min}{max - min} - 0.5)* 2

  • 标准化:大部分数据在[-1, 1]
    x_{norm} = \frac{x_i - 均值}{标准差}
def norm(a):
    # a是一个二维数组。
    a = np.array(a)
    return (a - a.mean(1, keepdims=True)) / (a.std(1, keepdim=True) + 1e-9)

以上就是数据处理的全部流程啦!

相关文章

网友评论

      本文标题:深度学习项目数据怎么处理?

      本文链接:https://www.haomeiwen.com/subject/pvpkydtx.html