【AI Studio】飞桨图像分类零基础训练营 – 04&5&6 – 图像分类竞赛全流程实战

前言:因为两课讲的一个比赛内容(课程里也没分页),所以我把笔记也合在一起。而且也是因为老师讲得很飘,所以我感觉我想记的东西估计不多吧。因为大部分都是新概念,所以我自己也没什么全新的理解,基本都是复制粘贴老师的笔记。
第四第五课主要围绕“柠檬分类竞赛”讲的,这篇笔记主要总结(拷贝)老师的讲课内容。关于完整的代码流程另外立一篇博客。

目录

  • 【AI Studio】飞桨图像分类零基础训练营
  • 04 – 图像分类竞赛全流程实战
    • 一、EDA(Exploratory Data Analysis)与数据预处理
      • 1.EDA(Exploratory Data Analysis)
      • 2.数据预处理
        • ①概念:图像标准化 与 归一化
        • ②数据集划分
    • 二、Baseline选择
      • 1.SubClass
      • 2. 络结构可视化
      • 3.VisualDL模块 – 训练过程可视化
      • 4.总结
    • 三、竞赛完整流程总结
    • 四、常用调参技巧
      • 1.数据处理部分
        • ①label shuffling (标签洗牌)
        • ②图像扩增
      • 2.模型训练部分
        • ①标签平滑(LSR)
        • ②One-Hot编码(独热编码)
        • ③优化算法选择
        • ④学习率调整策略
        • ⑤预训练模型
        • ⑥软标签&硬标签
    • 五、完整代码&流程分析
  • 05 – 飞桨图像分类套件 PaddleClas
    • 一、PaddleClas 是什么/li>
    • 二、PaddleClas使用流程
      • 1.前置条件
      • 2.准备数据集
      • 3.模型训练与评估
    • 三、图像增广
  • 06 – 模型部署

———————————————

【AI Studio】飞桨图像分类零基础训练营

04 – 图像分类竞赛全流程实战

课程项目:图像分类课程(1)
https://aistudio.baidu.com/aistudio/projectdetail/1625783

一、EDA(Exploratory Data Analysis)与数据预处理

1.EDA(Exploratory Data Analysis)

  • 探索性数据分析(Exploratory Data Analysis,简称EDA),是指对已有的数据(原始数据)进行分析探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。一般来说,我们最初接触到数据的时候往往是毫无头绪的,不知道如何下手,这时候探索性数据分析就非常有效。
  • 对于图像分类任务,我们通常首先应该统计出每个类别的数量,查看训练集的数据分布情况。通过数据分布情况分析赛题,形成解题思路。(洞察数据的本质很重要。)
  • 数据分析的一些建议
  1. 写出一系列你自己做的假设,然后接着做更深入的数据分析;
  2. 记录自己的数据分析过程,防止出现遗忘;
  3. 把自己的中间的结果给自己的同行看看,让他们能够给你一些更有拓展性的反馈、或者意见(即open to everybody);
  4. 可视化分析结果;
  • 介绍一个API, 作为常用的读取数据的常用API,使用频率非常高。
  • 如果数据集中的标签是用记录的,那就需要用这个API读取解析。

  • 标准化代码:输出范围在(-1,1)内,符合正态分布。
  • 归一化代码:输出范围在(0,1)内。

②数据集划分

  • 读取标签,依旧是八二分,训练集八,验证集二。(代码略)
  • 这次把路径读取也写入到类中了,然后继承父类,“一步到位”。

二、Baseline选择

  • 看完老师的讲解,对这个标题不是很理解。只能大概猜测就是:基本流程

理想情况中,模型越大拟合能力越强,图像尺寸越大,保留的信息也越多。在实际情况中模型越复杂训练时间越长,图像输入尺寸越大训练时间也越长。 比赛开始优先使用最简单的模型(如),快速跑完整个训练和预测流程;分类模型的选择需要根据任务复杂度来进行选择,并不是精度越高的模型越适合比赛。 在实际的比赛中我们可以逐步增加图像的尺寸,比如先在64 * 64的尺寸下让模型收敛,进而将模型在128 * 128的尺寸下训练,进而到224 * 224的尺寸情况下,这种方法可以加速模型的收敛速度。

Baseline应遵循以下几点原则:

  1. 复杂度低,代码结构简单。
  2. 收敛正确,评价指标()出现相应提升(如/之类的)
  3. 迭代快速,没有很复杂()的模型结构//图像预处理方法之类的
  4. 编写正确并简单的测试脚本,能够提交后获得正确的分数

1.SubClass

  • 上节课笔记中提到了2种组 方式,下面详细介绍一下专业术语的说法。

模型组 方式

  • 对于组 方式,飞桨框架统一支持 或 的方式进行模型的组建。我们根据实际的使用场景,来选择最合适的组 方式。
  1. 如针对顺序的线性 络结构我们可以直接使用 ,相比于 , 可以快速的完成组 。
  2. 如果是一些比较复杂的 络结构,我们可以使用 定义的方式来进行模型代码编写,在中进行 的声明,在 中使用声明的 变量进行前向计算。通过这种方式,我们可以组建更灵活的 络结构。
  • 第三节课笔记中的第2个线性模型例子就是使用 方法,打包几层 络直接当模型。
  • 注意!! 方法有一个特点,模型封装时和 方法不太一样。
# 构建模型。linear=paddle.nn.Sequential(paddle.nn.Flatten(),#将[1,28,28]形状的图片数据改变形状为[1,784]paddle.nn.Linear(784,10))# 模型封装model = paddle.Model(linear())  !!会 错!!model = paddle.Model(linear)    # 不会 错   

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月18日
下一篇 2021年2月18日

相关推荐