博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
卷积神经网络CNN详解(李宏毅-卷积神经网络课程笔记总结)
阅读量:4229 次
发布时间:2019-05-26

本文共 1525 字,大约阅读时间需要 5 分钟。

墙裂推荐完整的观看学习课程,内容非常详实且不枯燥。

备注:这篇博客内容完全不足以概括完整的课程内容,且距学习已过(tuo)去(yan)了一个月,记忆有些褪色,因此只整理总结了部分基(hai)础(ji)核(de)心(de)内容

CNN解决的问题

在 CNN 出现之前,图像对于人工智能来说是一个难题,有2个原因:

  1. 图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高
  2. 图像需要处理的数据量太大,导致成本很高,效率很低

带着这两个“痛点”,看看CNN做了什么

CNN结构

在这里插入图片描述

Convolution Layer(卷积层)

卷积层在CNN网络中主要是承担了特征提取的角色,通过卷积核(Convolution Kernal),也叫过滤器(filter)做卷积操作,侦测图像中某特定的特征。简单举个例子,如下图所示的Filter就可以侦测输入图像中是否存在"自左上角到左下角的直线"的特征。当有多个Filter时,我们就可以学习多个特征,比如颜色、轮廓等。

在这里插入图片描述
那么,卷积操作是怎么做的呢? 简单的说,就是Filter以步长为1(可以调整)的方式在图像上移动,并且做内积(点积)运算,就是先做点乘,之后再求和,得到Feature Map。

文字过于苍白,还是直接看动画:

在这里插入图片描述
我们可以计算一下,假设Input Image尺寸为x * y,Filter尺寸为a * b,那么生成的Feature Map尺寸是多少呢? [正确答案: (x-a+1) * (y-b+1)]

对于黑白图片,只有一个通道,对应的Filter就是一个a * b的矩阵;但是对于彩色图片,三通道,对应就是3 * a * b(三个矩阵叠加),值得注意的是,在做卷积计算的时候,不同通道(一个Filter的三个矩阵)在做点乘的时候不用分开计算,照样是对应的位置的值做完乘法之后把所有值加起来…

在这里插入图片描述
如果卷积层有n(n>1)个Filter,对应的也就会得到n个Feature Map.
在这里插入图片描述

Pooling(池化)

如果说Convolution Layer(卷积层)负责提取图像中的局部特征,完成特征提取,那么Pooling Layer(池化层)的主要工作就是大幅降低参数量级以及避免过拟合

池化,也叫做下采样,它是把卷积过后提取之后的Feature Map上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值(Average Pooling)或最大值(Max Pooling),或其他,然后用这个结果参与后续的训练。经验上说,Pooling的方法中average方法对背景保留更好,max对纹理提取更好。

下图是使用Max Pooling后的结果:

在这里插入图片描述

Flatten and Fully Connected Layer(全连接层)

在这里插入图片描述

原理总结

回顾第一部分:CNN解决了什么问题,总结归纳一下

第一、用类似人类视觉的原理保留了图像特征:借助层层卷积从图像最底层的局部特征不断向上归纳。
在这里插入图片描述
第二、将复杂问题简化,借助池化把大量参数降维成少量参数,再做处理。我们在大部分场景下,降维并不会影响结果。比如1000像素的图片缩小成200像素,并不影响肉眼认出来图片中是一只猫还是一只狗,机器也是如此。

CNN系列经典网络

深度学习领域,CNN在图像识别中取发挥了重要作用,CNN发展到今天已有很多变种,其中有几个经典模型在CNN发展历程中有着里程碑的意义,包括:LeNet、AlexNet、Googlenet、VGG、ResNet、Densenet等。这些经典的网络,以及对应的预训练模型(基于Imagenet数据集)在开源框架Pytorch的torchvision模块都有提供,方便开发者们学习、使用。

转载地址:http://fgiqi.baihongyu.com/

你可能感兴趣的文章
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查找google谷歌北京IP地址的方法
查看>>
人工智能再次参加高考:和作家比写作文,AI能打多少分?
查看>>
云创冬日紫金山踏雪游记
查看>>
西安思源学院电子信息工程学院院长张卫钢一行到访
查看>>
邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
查看>>
云创大数据的2018年!
查看>>
QNX简介
查看>>
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>
对象切割 - 常量引用传递
查看>>
北邮同学面经
查看>>
Effective C++条款16:成对使用new和delete时要采取相同形式
查看>>
sizeof与strlen
查看>>
一个递归+二分法的洗牌程序
查看>>
YUV格式注释
查看>>
一维、二维数组传参
查看>>
判断当前时间的下一秒是多少
查看>>