1. 磐创AI首页
  2. Medium

分心驾驶第二天 - 数据预处理


大家好!欢迎回来。今天是我分心驾驶项目的第二天。如果你还没有读过我第一天的博客,它就在这里。it is here

在上一篇博客中,我通过重新创建TensorFlow的image_Dataset_from_directory()的部分内容对齐了我的图像和标签。

什么是数据预处理?为什么要这样做?

我们的计算机不能识别图像。他们所理解的只有数字。因此,我们必须将图像转换为数字,然后才能将其提供给我们的模型。根据项目目标的不同,数据预处理的步骤也会有所不同。

以下是我为我的项目采取的步骤:

  • 数字编码(将图像转换为数字)
  • 规格化(将数值转换为0到1之间的数字)
  • 数据批处理(创建数据批)
  • 拆分数据

对图像进行数字编码和归一化

这个过程非常简单。我首先使用tf.io.read_file()读取文件,然后使用tf.image.decode_jpeg()将其转换为形状张量(480,640,3)。这意味着每个图像长480个像素,宽640个像素,并且有3个颜色通道(RGB)。之后,我使用tf.image.Convert_image_dtype()函数将像素颜色值转换为0到1之间的值。然后,我将所有这些都放到一个名为process_image()的函数中。

返回数字编码的归一化图像及其标签

在这个函数中,我接受图像及其标签作为参数,并给出了预处理后的图像及其标签的元组。

此代码输出:

批量处理数据

这部分是这个过程中最具挑战性的部分。我不仅要对列车数据进行批量处理,还要对验证和测试数据进行批量处理。为此,我给出了单独的参数来检查数据类型-数据是列车、验证还是测试拆分。

我的数据使用标准批大小32。

测试拆分

因为测试拆分没有标签(我们需要预测它),所以我使用tensor_from_slices()将图像路径转换为TensorFlow DataSet对象,并对其使用process_image()函数(因为它不需要标签)。然后,我用32号的标准尺寸对它们进行了分批。我使用蟒蛇映射函数同时进行图像处理和批处理。现在,我返回了批处理的数据。

验证拆分

验证拆分将有标签,但不需要对其进行混洗。因此,我使用tensor_from_slices()将图像路径转换为TensorFlow DataSet对象,并对其使用get_labels()函数(因为它同时处理图像和标签),并使用map函数将其批处理为大小为32。然后我返回批处理的数据。

列车拆分

分裂的火车会有标签,需要重新洗牌。因此,我采取了与处理验证数据相同的过程,并在处理和批处理数据之前对数据进行了混洗。

最终的代码如下所示:

拆分数据并对其进行预处理

对于这一部分,我使用了SCISKIT-LEARN的Train_Test_Split模块。

因为我已经获得了一个测试集,所以我将我的训练数据分为训练数据集和验证数据集,其中验证数据集将是整个训练数据的20%。

之后,我使用CREATE_BATCH函数对它们进行预处理,并将它们存储到TRAIN_DATA和VAL_DATA中

结论

精彩的!现在,我们已经对数据进行了预处理,并准备好建模。明天,我们将尝试一些流行的模型架构,看看它的效果如何。

希望你和我一样喜欢这个。明天见!

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/24/%e5%88%86%e5%bf%83%e9%a9%be%e9%a9%b6%e7%ac%ac%e4%ba%8c%e5%a4%a9%e2%80%8a-%e2%80%8a%e6%95%b0%e6%8d%ae%e9%a2%84%e5%a4%84%e7%90%86/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息