- 课程目的
数据的获取途径
数据处理与标注
数据预处理方法
模型训练评估
一、数据集的获取
数据来源于各个比赛平台。首先是AIStudio中的数据集,大部分经典数据集例如百度AI Studio ,Kaggle、天池、讯飞等平台(通过关键词搜索获取需要的数据集),或者是Github。通常来说,数据集用于学术目的,有些数据需要申请才能获得链接。
1.1 Kaggle有趣比较火热的数据集
预测销售价格、猫狗分类、预测泰坦尼克号的生存情况并熟悉机器学习基础知识
1.2 天池
遥感影像分割、耶鲁人脸数据库 目标检测任务(人脸检测)
1.3 DataFountain
花卉分类数据集 图像分类
1.4 其他常用的数据集官网
科大讯飞官网
COCO数据集
1.5 完整流程概述
1.5.1 图像处理完整流程
图片数据获取
图片数据清洗
----初步了解数据,筛选掉不合适的图片
图片数据标注
图片数据预处理data preprocessing。
----标准化 standardlization
一 中心化 = 去均值 mean normallization
一 将各个维度中心化到0
一 目的是加快收敛速度,在某些激活函数上表现更好
一 归一化 = 除以标准差
一 将各个维度的方差标准化处于[-1,1]之间
一 目的是提高收敛效率,统一不同输入范围的数据对于模型学习的影响,映射到激活函数有效梯度的值域
图片数据准备data preparation(训练+测试阶段)
----划分训练集,验证集,以及测试集
图片数据增强data augjmentation(训练阶段 )
----CV常见的数据增强
· 随机旋转
· 随机水平或者重直翻转
· 缩放
· 剪裁
· 平移
· 调整亮度、对比度、饱和度、色差等等
· 注入噪声
· 基于生成对抗网络GAN做数搪增强AutoAugment等
1.5.2 纯数据处理完整流程
数据预处理与特征工程
1.感知数据
----初步了解数据
----记录和特征的数量特征的名称
----抽样了解记录中的数值特点描述性统计结果
----特征类型
----与相关知识领域数据结合,特征融合
2.数据清理
----转换数据类型
----处理缺失数据
----处理离群数据
3.特征变换
----特征数值化
----特征二值化
----OneHot编码
----特征离散化特征
----规范化
区间变换
标准化
归一化
4.特征选择
----封装器法
循序特征选择
穷举特征选择
递归特征选择
----过滤器法
----嵌入法
5.特征抽取
----无监督特征抽取
主成分分析
因子分析
----有监督特征抽取
当两个变量的标准差都不为零时,相关系数才有定义,Pearson相关系数适用于:
(1)、两个变量之间是线性关系,都是连续数据。
(2)、两个变量的总体是正态分布,或接近正态的单峰分布。
(3)、两个变量的观测值是成对的,每对观测值之间相互独立。
二、数据处理
2.1 官方数据处理成VOC或者COCO
COCO格式,文件夹路径样式:
COCO_2017/
├── val2017 # 总的验证集
├── train2017 # 总的训练集
├── annotations # COCO标注
│ ├── instances_train2017.json # object instances(目标实例) ---目标实例的训练集标注
│ ├── instances_val2017.json # object instances(目标实例) ---目标实例的验证集标注
│ ├── person_keypoints_train2017.json # object keypoints(目标上的关键点) ---关键点检测的训练集标注
│ ├── person_keypoints_val2017.json # object keypoints(目标上的关键点) ---关键点检测的验证集标注
│ ├── captions_train2017.json # image captions(看图说话) ---看图说话的训练集标注
│ ├── captions_val2017.json # image captions(看图说话) ---看图说话的验证集标注
VOC格式,文件夹路径样式:
VOC_2017/
├── Annotations # 每张图片相关的标注信息,xml格式
├── ImageSets
│ ├── Main # 各个类别所在图片的文件名
├── JPEGImages # 包括训练验证测试用到的所有图片
├── label_list.txt # 标签的类别数
├── train_val.txt #训练集
├── val.txt # 验证集
2.1.2 Object Keypoint 类型的标注格式
{
"info": info,
"licenses": [license],
"images": [image],
"annotations": [annotation],
"categories": [category]
}
2.1.3 categories字段
对于每一个category结构体,相比Object Instance中的category新增了2个额外的字段,keypoints是一个长度为k的数组,包含了每个关键点的名字;skeleton定义了各个关键点之间的连接性。 目前,COCO的keypoints只标注了person category (分类为人)。
{
"id": int,
"name": str,
"supercategory": str,
"keypoints": [str],
"skeleton": [edge]
}
2.1.4 数据集统计信息
2.2 自定义数据集进行训练
2.2.1 常见标注工具
对于图像分类任务,我们只要将对应的图片是哪个类别划分好即可。对于检测任务和分割任务,目前比较流行的数据标注工具是labelimg、labelme,分别用于检测任务与分割任务的标注。
2.2.2 制作VOC格式与COCO格式数据集并划分
三、数据处理方法
3.1 图像的本质
常见的图片分为两种,一种叫位图,另一种叫做矢量图。
位图的特点:
由像素点定义一放大会糊
文件体积较大
色彩表现丰富逼真
矢量图的特点:
超矢量定义
放太不模糊
文件体积较小
表现力差
3.2 为什么要做这些数据增强
是因为很多深度学习的模型复杂度太高了,且在数据量少的情况下,比较容易造成过拟合(通俗来说就是训练的这个模型它太沉浸在这个训练样本当中的一些特质上面了),表现为的这个模型呢受到了很多无关因素的影响。 所得出的结果就是在没有看到过的样本上对它做出预测呢就表现的不太好。
四、模型训练与评估
4.1 比对实验
在其他参数都相同的情况下,在没有加任何的数据增强时,mAP为38.06:
在其他参数都相同的情况下,在随机扩张,随机像素变换数据增强时,mAP为41.9:
在其他参数都相同的情况下,在加随机裁剪,随机水平翻转,短边调整,与Mixup的数据增强时,mAP为35.4:
正确的增加数据增强时,可以小幅度提升mAP值。
五、模型推理预测
使用模型进行预测,同时使用pdx.det.visualize将结果可视化,可视化结果将保存到work/PaddleDetection/output/PPYOLO/vdl_log下,载入模型推理保存图片至work/PaddleDetection/output/PPYOLO/img下。
六、总结
本次课程主要了解了数据集获取,以及数据标注、数据划分、数据增强处理方法和简单的口罩检测实现,及其用数据增强和不用数据增强的对比实验,体现了数据增强在AI学习中的重要性,加强了我对于AI探索的欲望,希望未来可以学习到更多知识!