前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据使用】3问视觉项目中的数据整理,这点小事你是不是都掌握好了?

【数据使用】3问视觉项目中的数据整理,这点小事你是不是都掌握好了?

作者头像
用户1508658
发布2022-02-17 08:29:59
3180
发布2022-02-17 08:29:59
举报
文章被收录于专栏:有三AI

大家好,欢迎来到我们的技术专栏《数据使用》,这一个专栏主要讲解在深度学习技术中数据使用相关的内容。

作者&编辑 | 言有三

今天要介绍的是一个小问题,那就是对于数据的整理。在大部分的时候,尤其进行学术研究时,我们所接触到的数据,都是别人已经整理好的,经过验证比较有效的数据,导致做项目的人其实缺失了1个非常重要的技能积累,那就是如何高有效、完备地整理好一个数据集。以计算机视觉方向为例,有三认为至少以下3点是需要考虑的,下面我们简单来说一说。

1 数据检查

首先是数据检查,我们获取的数据来源是非常广泛的,包括开源数据集(ImageNet等),从外包平台(阿里众包等)购买,或者通过爬虫爬取,不同的方式采集回来的数据集的质量不同。

以爬虫为例,采集回来的数据来源丰富,但是可能存在较多不符合要求的数据,甚至是坏数据,因此我们需要进行检查筛选后才能用,至少有以下几种图片需要先过滤。

1.1 坏图

有一些图当我们用缩略图的模式看时,显示没有什么问题,但是当你真的用程序去读取的时候,会读取失败,打开后可能是这样的,这些就是坏图。

坏图非常常见,一般都是数据传输过程中出现的问题,我们下载的开源数据集也有时候会出现这样的情况,因此,在使用你的数据之前,一定要先检查一下,图是否是坏的!免得浪费更多时间。

1.2 尺寸异常图

尺寸异常图也是很常见的,这里我们不说特别大或者特别小的图,而是聚焦于长宽比特别大的图,因为这一类图像也非常常见,比如下面的图:

我们在做任务的时候,经常会做一些裁剪类的数据增强操作,长宽比过大的图,容易造成目标变形或者缺失,因此我们最好是设定一个比例进行筛选。

1.3 动图

git动图也是很常见的,这一类图一般内容都不符合我们深度学习项目的需求,很多都是卡通类图像,比如下图中就有几张动图,属于要去除的对象。

最后,对检查完的数据可以再做一些标准化操作,比如统一数据格式类型,统一命名方式。

2 数据去重

数据的去重是必要的操作,尤其是当我们获取的数据来源于网络爬虫与视频的时候,相同与相似数据出现的概率非常高。

2.1 相同数据与相似数据

相同的数据,可能区别仅仅在于命名的不同,如果查看文件的MD5,会发现是同样的数据。相同的数据再多,也并不会增加数据集的丰富程度,不能以此来安慰苦于收集数据的自己。

相似数据则更加常见,因为图片视频数据在网上经过各种渠道的广泛传播,分辨率的差异、不同的数据压缩方式、水印的添加等都会造成相似度很高的图片。

另外,还有一种数据来源,就是从视频中通过抽帧获取的数据,相似度会非常高,而且模式比较复杂,比如下图。

直接抽帧,获得的图片如下,其中有许多图片相似度很高:

所以我们需要进行图片数据的去重,下图展示了去重后的效果。

2.2 去重方法

去重主要包含了两个关键问题,一个是如何计算图片的相似度,一个是如何进行遍历。

(1) 相似度计算。图像相似度的计算本来就是图像检索中的核心问题,关键在于图片特征的提取,我们可以用传统的图像描述算子或者深度学习模型。

不过我们去重的时候可能对相似度的要求很高,目标是为了去除过于相似的图片,所以可能用更加简单的相似度计算方法就可以,比如直接计算图像的平均像素差异。

(2) 遍历。另外一个非常重要的技术,就是图片遍历。假如我们有100,000图要进行去重,如果把所有的图片都进行比较,需要100,000*100,000/2次比较,计算量非常大,复杂度是O(N^2),速度会很慢。

所以,我们必须借助一些技巧,来减少不必要的遍历,比如基于文件的大小进行排序、基于图像的尺寸进行排序、基于图片的名字进行遍历,把相似的图尽可能先排序在一起。在计算相似度的时候,只考虑近邻的一些样本,即只搜索特定的深度,而不是进行穷举。

如此来说,图像去重并不是一个那么简单的工作。

3 数据集划分

当数据经过整理和去重后,就剩下最后的工作,数据集的划分,这里有两个重要的工作。

3.1 训练集/验证集/测试集

大家在书籍上或者机器学习的课程,会看到数据集会被划分成3类,训练集,验证集,测试集,他们各自有不同的作用。

训练集和验证集的分布是一样的,是对同一批数据进行划分得来的。训练集用于对参数进行学习,如卷积核的权重;而验证集,则是用于对训练的一些超参数调整,比如学习率/批处理大小等。我们评估模型的精度,是以验证集的精度为准的,而不同的训练参数会影响结果。

测试集,一般是指模型在真实的生产环境中处理的数据,这些数据的分布和训练集、验证集可能存在一定的差异。

虽然我们有时候不区分测试集和验证集,但还是要明白,他们本质上是不同的。

3.2 不同难度数据集的划分

这部分内容可能是大部分项目人员都没有做的,但却是非常重要的,因项目而异,没有理论上的指导,依赖于项目经验。

如果你做的项目多了,应该会发现,很多数据集都分了不同难度等级,比如下图是人脸检测数据集Widerface数据集上的结果,有3类数据集,easy set,medium set,hard set。

划分的依据是EdgeBox方法的检测率。检测率越低的样本表明越难,可能是尺度很小,遮挡严重,姿态很大,特征模糊等,如下图中的各种人脸:

为什么一定要进行区分呢?因为对于很多的工程项目来说,我们不可能取得百分百的精度,一个能处理大部分场景的模型可能就足够了,一些极端案例下失败是可以接受的。

如果将不同难度的样本混在一起,我们很难获得模型的准确评估。难样本过多,指标太低,导致模型无法上线,但其实该模型已经可以在业务上使用了。而过多的简单样本,也会导致我们对模型产生乐观的估计。

下图是PASCAL VOC数据集的标注案例,其中虚线框里的目标被标识为‘difficult’,这些目标是不会纳入评测指标计算的,就是为了更好地评估模型的性能,尽管该标签仍然被保留。

总结

我们这篇文章介绍了3个在深度学习项目中的数据处理问题,并不难,但你是否都掌握好了呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档