百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)

DAY2 玩转12生肖分类

课程链接:https://aistudio.baidu.com/aistudio/course/introduce/6771
2.4

#####################################################
班主任先讲:
QQ群的三个作用

  1. 官方班级群
  2. 课程答疑(每天晚上7-8点)
  3. 抽奖+一些其他周边的东西

平台的作用

  1. 课程回顾和复盘
  2. 领取课程证明

在github的paddle上可以用右上角star可以收藏paddlepaddle 代码

今晚内容:
1.12生肖分类
2.图像分类的脉络及整理
3.用 网络实现对于十二生肖的分类

鼓励学习的时候完成作业,第一个完成的和效果好的都有奖
鼓励发布学习笔记,标题、内容都有相关的要求,并且上传到讨论区中

#####################################################
正课部分:
玩转12生肖分类

大纲

1.了解十二生肖分类
2.图像分类原理
3.搭建ResNet50网络实现12生肖分类

任务本质:找到一个最优的算法,让机器讷讷够个分清每个属相动物的照片,是一个 图像分类 任务
即 输入为图片,输出为不同的生肖。
特征:
1.有明确的固定标签集合
2.通过数据对于模型的训练,找到一个最优(想对的概念)的算法。
3. 通过算法对于输入的十二生肖图像进行分类。

CV领域的常见任务: 图像分类、图像分割、物体检测 等

图像分类
本次属于图像分类(和昨天的手写数字识别是一个任务)
图像分类的较为经典案例:手写数字识别、Cifar10数据集(常见物体和动物)、垃圾分类
图像分类的主要任务类型:

  1. 二分类 1/2
  2. 多分类 1/2/3/4 …
  3. 多标签 一个图片中有多个待检测目标,所以要打上多个标签
    图像分类目标和原理:
    计算机识别的图像为每个像素储存的三个通道(RGB)的三维矩阵组成
    C(通道)x H (高)x W(宽)
    计算机通过模型对于图像特征进行提取,最后得出分类的概率,而后根据概率的值和选择策略做出判断。
    因为计算机所识别的是图像的特征,因此计算机对图像进行处理时,会收到一些人类可以理解的影响(更加困难)
    如:视角变化、关照条件、大小变化、形状、遮挡、背景干扰、类内差异等

计算机图像的主流处理方法: 卷积神经网络(CNN)
LeNet最先提出(上世纪90年代就被提出了) --》AlexNet于2012年改进并且奠定了神经网络日后的繁荣
–》 此后沿着多个方向发展,如:
沿着网络层次加深的方法有: VGG16、VGG19、MSRANet等
沿着增强卷积模块功能发展有:NIN、GoogleNet 等
两者结合 如ResNet (今天所用的网络)
原理是仿照人类视觉和大脑对于图像信息的处理。
图像分类问题一直引导着卷积神经网络的发展。

快速上手卷积神经网络——以 LeNet-5为例
该网络是1989年被突出的,定义了CNN的基本结构,为CNN的“开山之作”

CNN的基本结构:

卷积层
池化层
全连接层

套用万能公式

问题定义:对于12生肖的图像进行分类
数据准备:paddle.vision.dataset
模型准备和开发:


LeNet-5动手实操

(参考:第2课案例1初识卷积神经网络)
https://aistudio.baidu.com/aistudio/projectdetail/1506996

(参考:『深度学习7日打卡营』第2课案例1基础知识)
https://aistudio.baidu.com/aistudio/projectdetail/1507732
百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第1张图片
以下图片均来自飞桨课程课件:

  1. 神经元(感知机)运行图示:
    百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第2张图片
  2. 神经网络运行原理:
    百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第3张图片
    (由前向计算和反向传播组成)
    3.卷积原理
    单通道卷积:百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第4张图片
    这里有一个步长的概念,意为每次挪动的像素点为多少 (上图中的步长为1)
    乘以的系数矩阵为几乘几 就意味着原图想的长宽被压缩(卷积)了多少倍
    这里的公式为:

输入:3x3(宽高) 过滤器(卷积网格 kernel):2x2(宽高) 步长(stride):1

公式:
输出宽w=( xw+2p-fw)/sw +1
输入高h=(xh+2p-fh)/sh +1

在本案例中,宽高均为
(3+0x1-2)/1 +1 =2

pedding:
一般为了考虑图像边缘的特征点给予利用,需要在外面加一层padding (用0补充)为了让边缘的数据通道得以充分使用,增加边缘信息的提取(同时也可以让图像被提取后不至于缩小很多倍)

多通道卷积:
百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第5张图片
多通道输出:
百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第6张图片
(输出通道和卷积核的个数相同)

LeNet中用了6个通道进行卷积

多batch:
百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第7张图片
4. 池化原理

池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。
池化可以在保留特征的同时减少计算量,从而减少计算性能的消耗
百度飞桨 PaddlePaddle 深度学习打卡7日营 -DAY2 玩转十二生肖分类(卷积神经网络)_第8张图片
池化的步长一般和卷积核的大小有关,默认一般为2

池化一般方法为平均池化和最大池化,因为最大池化能够较好的对图像特征进行提取,所以一般都是使用最大池化。

Avg Pooling 平均池化
优缺点:能很好的保留背景,但容易使得图片变模糊
正向传播:邻域内取平均
反向传播:特征值根据领域大小被平均,然后传给每个索引位置

Max Pooling 最大池化
优缺点:能很好的保留一些关键的纹理特征,现在更多的再使用Max Pooling而很少用Avg Pooling
正向传播:取邻域内最大,并记住最大值的索引位置,以方便反向传播
反向传播:将特征值填充到正向传播中,值最大的索引位置,其他位置补0

池化的公式:
在这里插入图片描述

全连接:就是按照顺序排列下来(个人理解)

几种卷积神经网络

AlexNet:历史突破
主要贡献:
引入ReLu为激活函数;dropout层;最大池化;GPU加速;数据增强(截取、水平翻转)

VGG:探索了CNN性能和网络深度的关系
主要贡献:
证明使用小卷积核增加网络深度对于提升模型效果的有效性有较强的泛化程度

GoogleNet:也为inception V1
主要贡献:
引入inception模块;辅助LOSS单元;去除了模型最后的全连接层,使用全局平均池化代替

ResNet:2015年提出,在ISLVRC和COCO上称霸一时
主要贡献:
网络层数超过百层;引入残差结构解决退化问题

十二生肖分类实践

参考:
https://aistudio.baidu.com/aistudio/projectdetail/1511606

迁移学习:

backbone:
这个单词原意指的是人的脊梁骨,后来引申为支柱,核心的意思。在神经网络中,尤其是CV领域,一般先对图像进行特征提取(常见的有vggnet,resnet,谷歌的inception),这一部分是整个CV任务的根基,因为后续的下游任务都是基于提取出来的图像特征去做文章(比如分类,生成等等)。所以将这一部分网络结构称为backbone十分形象,仿佛是一个人站起来的支柱。

作者:Jacky.C
链接:https://www.zhihu.com/question/399611596/answer/1273044749
来源:知乎

总结回顾

图像分类的原理和技术;快速上手时间和神经网络科普;ResNet50实现图像分类

课后作业

客观题 B
代码实践作业
基于LENET 和RESNET

第三课预告

人脸关键点检测

你可能感兴趣的:(卷积,神经网络,计算机视觉,算法)