数据的获取、整理与处理作为深度学习的首要工作,也是最繁琐与耗时的工作,本文总结了CV方向数据工程的大致流程供大家参考。
整理流程:数据获取——图像处理——送入网络
1,数据获取
- 首先谈一下个人观点,当实际做自己的独特项目时,个人在整理数据时最好将整理的方法、标准、格式等整体数据框架保证与一些经典的常用数据集相同,这样在后续编程中大大方便数据处理部分的程序编写。
- 个人自己制作自己项目的数据集,对于图像分类任务,只需要将对应的图片指定是哪个类别划分好即可,对于检测任务和分割任务,目前比较流行的数据标注工具是labelimg、labelme,分别用于检测任务与分割任务的标注。
注:labelimg、labelme的安装使用
Windows下深度学习标注工具LabelImg安装和使用指南 - 云+社区 - 腾讯云 (tencent.com)
https://cloud.tencent.com/developer/news/325876
深度学习图像标签标注软件labelme超详细教程 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/371756150
- 经典数据集集合
https://www.cnblogs.com/burningmyself/p/9145167.html
- 推荐一些常用的权威数据集的来源网站:
Kaggle: Your Machine Learning and Data Science Community
https://www.kaggle.com/
权威的大数据竞赛平台 - DataFountain
https://www.datafountain.cn/
天池大数据众智平台-阿里云天池 (aliyun.com)
https://tianchi.aliyun.com/
Baidu Research Open-Access Dataset - Introduction
物体识别 - 图像识别 - 讯飞开放平台 (xfyun.cn)
https://www.xfyun.cn/service/object-recg
2,图像处理
- 图片清洗,初步了解数据,筛选掉不合适的图片,具体包括:转换数据类型,填充缺失数据,处理离群数据。
- 图片标注,并将标签信息转换为数字类型,方法包括:直接指定或OneHot编码等。提示:可以用皮尔森相关系数来判断标签和类别是正相关、负相关还是没有相关的程度。
- 图片预处理,进行标准化或最大最小归一化。
- 划分训练集,验证集,测试集。
- 训练阶段图片数据增强,常见的有:调整亮度、对比度、饱和度、色差,随机旋转,随机水平或者重直翻转,缩放,剪裁,平移,这些基本操作都可以通过numpy库的基本操作来实现,也可以使用PaddlePaddle的高级API实现,数据增强方法还包括,基于生成对抗网络GAN生成“假”数来增强,注入噪声数据等等。
做数据增强的原因是有些深度学习的模型复杂度太高了,且在数据量少的情况下,比较容易造成过拟合(通俗来说就是训练的这个模型它太沉浸在这个训练样本当中的一些特质上面了),表现为的这个模型呢受到了很多无关因素的影响。 所得出的结果就是在没有看到过的样本上对它做出预测呢就表现的不太好。
3,送入网络
有时数据集太大,我们不可能一次性将数据全部送入网络进行训练,个人常用的方法是定义一个数据生成器,使用python的yield将数据分多次不断送入网络。
感谢大佬!