一、数据集的获取
通常,我们的数据来源于各个比赛平台。首先是AIStudio中的数据集,大部分经典数据集例如百度AI Studio ,Kaggle、天池、讯飞等平台(通过关键词搜索获取需要的数据集),或者是Github。还有一些小的平台,需要大家自己去看。通常来说,数据集用于学术目的,有些数据需要申请才能获得链接。
1.1 Kaggle有趣比较火热的数据集
House Prices-Advanced Regression Techniques 预测销售价格
(https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data?select=test.csv)
Cat and Dog 猫狗分类
(https://www.kaggle.com/tongpython/cat-and-dog)
Machine Learning from Disaster 预测泰坦尼克号的生存情况并熟悉机器学习基础知识
(https://www.kaggle.com/shuofxz/titanic-machine-learning-from-disaster)
1.2 天池
Barley Remote Sensing Dataset大麦遥感检测数据集 遥感影像分割
(https://tianchi.aliyun.com/dataset/dataDetail?dataId=74952)
耶鲁人脸数据库 目标检测任务(人脸检测)
(https://tianchi.aliyun.com/dataset/dataDetail?dataId=88824)
1.3 DataFountain
花卉分类数据集 图像分类
(https://www.datafountain.cn/datasets/6070)
1.4 其他常用的数据集官网
科大讯飞官网
(https://www.xfyun.cn/service/object-recg)
COCO数据集
(https://cocodataset.org/#download)
1.5 完整流程概述
1.5.1 图像处理完整流程
1. 图片数据获取
2. 图片数据清洗
----初步了解数据,筛选掉不合适的图片
3. 图片数据标注
4. 图片数据预处理data preprocessing。
----标准化 standardlization
一 中心化 = 去均值 mean normallization
一 将各个维度中心化到0
一 目的是加快收敛速度,在某些激活函数上表现更好
一 归一化 = 除以标准差
一 将各个维度的方差标准化处于[-1,1]之间
一 目的是提高收敛效率,统一不同输入范围的数据对于模型学习的影响,映射到激活函
数有效梯度的值域
5. 图片数据准备data preparation(训练+测试阶段)
----划分训练集,验证集,以及测试集
6. 图片数据增强data augjmentation(训练阶段 )
----CV常见的数据增强
· 随机旋转
· 随机水平或者重直翻转
· 缩放
· 剪裁
· 平移
· 调整亮度、对比度、饱和度、色差等等
· 注入噪声
· 基于生成对抗网络GAN做数搪增强AutoAugment等
1.5.2 纯数据处理完整流程
数据预处理与特征工程
1. 感知数据
----初步了解数据
----记录特征的数量和特征的名称
----抽样了解记录中的数值特点描述性统计结果
----特征类型
----与相关知识领域数据结合,特征融合
2. 数据清理
----转换数据类型
----处理缺失数据
----处理离群数据
3. 特征变换
----特征数值化
----特征二值化
----OneHot编码
----特征离散化特征
----规范化
区间变换
标准化
归一化
4. 特征选择
----封装器法
循序特征选择
穷举特征选择
递归特征选择
----过滤器法
----嵌入法
5. 特征抽取
----无监督特征抽取
主成分分析
因子分析
----有监督特征抽取
拓展小知识:
皮尔森相关系数是用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。 Pearson系数的取值范围为[-1,1],当值为负时,为负相关,当值为正时,为正相关,绝对值越大,则正/负相关的程度越大。若数据无重复值,且两个变量完全单调相关时,spearman相关系数为+1或-1。当两个变量独立时相关系统为0,但反之不成立。
用Corr()函数即可,(保证行相同)。 公式如下:
当两个变量的标准差都不为零时,相关系数才有定义,Pearson相关系数适用于:
(1)、两个变量之间是线性关系,都是连续数据。
(2)、两个变量的总体是正态分布,或接近正态的单峰分布。
(3)、两个变量的观测值是成对的,每对观测值之间相互独立。
二、数据处理
2.1 官方数据处理成VOC或者COCO
2.1.1COCO2017数据集介绍
COCO数据集是Microsoft制作收集用于Detection + Segmentation + Localization + Captioning的数据集,作者收集了其2017年的版本,一共有25G左右的图片和600M左右的标签文件。 COCO数据集共有小类80个,大类12个。
VOC与COCO简介
Pascal 的全称是模式分析,静态建模和计算学习(Pattern Analysis, Statical Modeling and Computational Learning)。PASCAL VOC 挑战赛是视觉对象的分类识别和检测的一个基准测试,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。从2005年至今,该组织每年都会提供一系列类别的、带标签的图片,挑战者通过设计各种精妙的算法,仅根据分析图片内容来将其分类,最终通过准确率、召回率、效率
MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集,与ImageNet竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。
2.1.2 Object Keypoint 类型的标注格式
其中,info、licenses、images这三个结构体/类型,在不同的JSON文件中这三个类型是一样的,定义是共享的(object instances(目标实例), object keypoints(目标上的关键点), image captions(看图说话))。不共享的是annotation和category这两种结构体,他们在不同类型的JSON文件中是不一样的。 新增的keypoints是一个长度为3 X k的数组,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。 um_keypoints表示这个目标上被标注的关键点的数量(v>0),比较小的目标上可能就无法标注关键点。
2.1.3 categories字段
最后,对于每一个category结构体,相比Object Instance中的category新增了2个额外的字段,keypoints是一个长度为k的数组,包含了每个关键点的名字;skeleton定义了各个关键点之间的连接性(比如人的左手腕和左肘就是连接的,但是左手腕和右手腕就不是)。 目前,COCO的keypoints只标注了person category (分类为人)。
2.2 自定义数据集进行训练
2.2.1 常见标注工具
对于图像分类任务,我们只要将对应的图片是哪个类别划分好即可。对于检测任务和分割任务,目前比较流行的数据标注工具是labelimg、labelme,分别用于检测任务与分割任务的标注。 标注工具Github地址:
labelimg (https://github.com/tzutalin/labelImg)
labelme (https://github.com/wkentaro/labelme)
PPOCRLabel (https://github.com/PaddlePaddle/PaddleOCR)
三、数据处理方法
3.1 图像的本质
我们常见的图片其实分为两种,一种叫位图,另一种叫做矢量图。如下图所示:
位图由像素组成,采用点阵、矩阵来存储,每个像素的取值范围为[0, 255],0为黑色,255为白色,中间值为灰色。有三通道R、G、B。
位图的特点:
1. 由像素点定义一放大图片会糊(即失真)
2. 文件体积较大
3. 色彩表现丰富逼真
矢量图的基础信息由数学矢量记载,记载一些线条、形状信息。
矢量图的特点:
1. 超矢量定义
2. 放大不模糊
3. 文件体积较小
矢量图的缺点:
表现力差 通常用于CNN卷积的图片,不能用矢量图去计算,因为矢量图没有矩阵。
3.2 为什么要做这些数据增强
因为很多深度学习的模型复杂度太高了,且在数据量少的情况下,比较容易造成过拟合(通俗来说就是训练的这个模型它太沉浸在这个训练样本当中的一些特质上面了),表现为的这个模型呢受到了很多无关因素的影响。 所得出的结果就是在没有看到过的样本上对它做出预测呢就表现的不太好。
用GPU“0”训练代码
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
learning_rate=3e-5
3e-5是0.000005
4. 模型训练与评估
4.1 比对实验
4.2 拓展介绍mAP:
在机器学习领域中,用于评价一个模型的性能有多种指标,其中几项就是FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)。
mean Average Precision, 即各类别AP的平均值,是AP:PR 曲线下面积。
此前先了解一下IOU评判标准:
TP、FP、FN、TN
常见的评判方式,第一位的T,F代表正确或者错误。第二位的P和N代表判断的正确或者错误
二者绘制的曲线称为 P-R 曲线: 查准率:P 为纵轴y 查全率:R 为横轴x轴,如下图
mAP值即为,PR曲线下的面积,越大越好。
五、模型推理预测
使用模型进行预测,同时使用pdx.det.visualize将结果可视化,
可视化结果将保存到work/PaddleDetection/output/PPYOLO/vdl_log下,
载入模型推理保存图片至work/PaddleDetection/output/PPYOLO/img下。
六、 总结
本次课程主要为大家介绍了数据集获取,以及数据标注、数据划分、数据增强处理方法和简单的口罩检测实现,及其用数据增强和不用数据增强的对比实验,体现了数据增强在AI学习中的重要性。