本文介绍了计算机视觉常用工具:卷积神经网络。用大白话讲解了其应用领域、卷积、池化(下采样)、全连接、梯度下降、反向传播算法。并用三维可视化工具展示了手写字体识别的卷积神经网络案例,最后介绍了几个经典的卷积神经网络模型以及一些新手易上手的计算机视觉开源项目。

本文配套B站视频:三分钟走进卷积神经网络

本文配套B站视频:大白话讲解卷积神经网络工作原理

强烈建议先看上面两个视频再阅读本文!

作者:张子豪(同济大学在读研究生)

关注微信公众号 人工智能小技巧 回复 卷积神经网络 或者 CNN 即可看到文中的B站视频、Gif动画、三维可视化卷积神经网络网站

于2018-11-10发布

文章目录

  • 1、卷积神经网络应用领域
    • 图像分类
    • 人脸识别
    • 自动驾驶
    • 语音处理:将时序声音转化为类似图像的数据结构
    • 自然语言处理:将文本序列转化为类似图像的数据结构
  • 2、三维可视化手写字体识别卷积神经网络内部结构
    • 卷积神经网络识别手写字体步骤
  • 3、卷积神经网络内部结构
    • 卷积运算:识别图片中指定特征
    • 池化(下采样):保留特征的同时压缩数据量
    • 全连接:通过加权计算得出结果
    • 模型训练过程
      • 损失函数
      • 梯度下降
      • 随机梯度下降
  • 4、几个经典的卷积神经网络模型
    • LeNet-5:识别手写字体的经典卷积神经网络
    • AlexNet:2012年ImageNet竞赛冠军
    • GoogLeNet:2014年ImageNet冠军
    • VGGNet:2014年ImageNet亚军
    • ResNet深度残差卷积神经网络
    • 各种模型识别成功率比较
  • 5、一些轻松易上手的计算机视觉项目
    • 微软年龄测试API
    • 自动生成图片描述—captionbot
    • 微软Custom Vision —不用写代码,三分钟开发一个图像分类应用
    • Github开源人脸识别项目face_recognition
    • 在树莓派微型电脑上安装OpenCV
    • 视频剪辑师的福音—微软Video Indexer
  • 6、参考文献与扩展阅读

1、卷积神经网络应用领域

卷积神经网络可以处理图像以及一切可以转化成类似图像结构的数据。相比传统算法和其它神经网络,卷积神经网络能够高效处理图片的二维局部信息,提取图片特征,进行图像分类。通过海量带标签数据输入,用梯度下降和误差反向传播的方法训练模型。

图像分类

人脸识别

Github开源人脸识别项目face_recognition中文文档

自动驾驶

语音处理:将时序声音转化为类似图像的数据结构

自然语言处理:将文本序列转化为类似图像的数据结构

2、三维可视化手写字体识别卷积神经网络内部结构

网站:三维可视化卷积神经网络
http://scs.ryerson.ca/~aharley/vis/conv/

关注微信公众号 人工智能小技巧 回复 卷积神经网络 即可看到这个手写字体可视化网站。

卷积神经网络识别手写字体步骤

1、把手写字体图片转换成像素矩阵

2、对像素矩阵进行第一层卷积运算,生成六个feature map

3、对每个feature map进行下采样(也叫做池化),在保留feature map特征的同时缩小数据量。生成六个小图,这六个小图和上一层各自的feature map长得很像,但尺寸缩小了。

4、对六个小图进行第二层卷积运算,生成更多feature map

5、对第二次卷积生成的feature map进行下采样

6、第一层全连接层

7、第二层全连接层

8、高斯连接层,输出结果

关注微信公众号 人工智能小技巧 回复 卷积神经网络 或者 CNN 即可看到文中的B站视频、Gif动画、卷积神经网络可视化网站

3、卷积神经网络内部结构

卷积运算:识别图片中指定特征

用卷积核在原图上滑动,进行卷积运算,得到特征图feature map。

卷积的本质:将原图中符合卷积核特征的特征提取出来,展示在feature map里面。

如果原图是X,卷积核是X,那么卷积核在原图上卷积运算之后生成的feature map也是X。

如果原图是O,卷积核是O,那么卷积核在原图上卷积运算之后生成的feature map也是O。

如果原图是O,卷积核是X,那么卷积核在原图上卷积运算之后生成的feature map就是乱码。

权值共享:卷积核扫过整张图片的过程中,卷积核参数不变。

下图的动画中,绿色表示原图像素值,红色数字表示卷积核中的参数,黄色表示卷积核在原图上滑动。右图表示卷积运算之后生成的feature map。

下图展示了RGB三个通道图片的卷积运算过程,共有两组卷积核,每组卷积核都有三个filter分别与原图的RGB三个通道进行卷积。每组卷积核各自生成一个feature map。

原图最外圈补0:zero padding,便于提取图像边缘的特征。

局部连接:feature map上每个值仅对应着原图的一小块区域,原图上的这块局部区域称作感受野(receptive field)。局部连接的思想,受启发于生物学里面的视觉系统,视觉皮层的神经元就是局部接受信息的。

池化(下采样):保留特征的同时压缩数据量

池化(Pooling)也叫做下采样(subsampling),用一个像素代替原图上邻近的若干像素,在保留feature map特征的同时压缩其大小。

池化的作用:

  • 防止数据爆炸,节省运算量和运算时间。
  • 用大而化之的方法防止过拟合、过学习。防止培养出高分低能,在考场(训练集)称霸但在社会上(测试集)混不下去的人工智障。

可以用这些像素的最大值作为代表,也可以用平均值作为代表。

全连接:通过加权计算得出结果

全连接层:输出的每个神经元都和上一层每一个神经元连接。

卷积核的数量、大小、移动步长、补0的圈数是事先人为根据经验指定的,全连接层隐藏层的层数、神经元个数也是人为根据经验指定的(这叫做超参数),但其内部的参数是训练出来的。

在手写字体识别可视化卷积神经网络中,有两个全连接层:

第一层全连接层:

第二层全连接层:

输出结果:

模型训练过程

损失函数

计算神经网络的推测结果与图片真实标签的差距,构造损失函数,训练的目标就是将找到损失函数的最小值。

梯度下降

将损失函数对各种权重、卷积核参数求导,慢慢优化参数,找到损失函数的最小值。

随机梯度下降

在减小损失函数的过程中,采用步步为营的方法,单个样本单个样本输入进行优化,而不是将全部样本计算之后再统一优化。虽然个别样本会出偏差,但随着样本数量增加,仍旧能够逐渐逼近损失函数最小值。

前途是光明的,道路是曲折的。——《毛泽东选集》(第四卷)《关于重庆谈判》

4、几个经典的卷积神经网络模型

LeNet-5:识别手写字体的经典卷积神经网络

LeNet-5模型是Yann LeCun教授于1998年在论文Gradient-based learning applied to document recognition中提出的,它是第一个成功应用于数字识别问题的卷积神经网络。LeNet-5模型一共有7层。

当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一。Yann LeCun教授不是中国人,是法国人,在上世纪80年代读博期间提出“人工神经网络”,但后来该理论一度被认为过时,他本人甚至被拒绝参加学术会议。LenNet-5共有7层(不包括输入层),每层都包含不同数量的训练参数。

李飞飞 imagenet 2009年开始成立ImageNet网站,采用众包模式,鼓励全世界志愿者上传、筛选、标注、整理图片数据。并每年组织ImageNet图像分类竞赛。

AlexNet:2012年ImageNet竞赛冠军

2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计,官方提供的数据模型,准确率达到57.1%,top 1-5 达到80.2%。AlexNet引爆了整个深度学习领域,更多学者开始研究卷积神经网络。

GoogLeNet:2014年ImageNet冠军

VGGNet:2014年ImageNet亚军

牛津大学的VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。但是VGG模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。它的缺点在于,参数量有140M之多,需要更大的存储空间。但是这个模型很有研究价值。

ResNet深度残差卷积神经网络

ResNet在2015年ImageNet比赛分类任务中获得第一名,在图像分类方面已超过人眼。ResNet共有152层,但它不仅仅靠深度取胜,而是通过残差学习的方法训练模型,通过“跨层抄近道”的方法减少参数数量,简单而实用。衍生出ResNet50和ResNet101旁支,Alpha Zero(只训练8个小时就打败了AlphaGo的下棋机器)也使用了ResNet。

ResNet的作者何恺明是2003年广东省理科高考状元,本科毕业于清华大学,博士毕业于香港中文大学,曾在微软亚洲研究院孙剑领导的研究组实习。何恺明在图像去雾领域也成果颇丰。

各种模型识别成功率比较

top1和top5是什么?

每次识别图片,模型都会给出它认为最像的前五个结果。top1指的是模型认为最像的确实是真实答案的成功率。top5指的是模型认为最像的前五个里有真实答案的成功率。

LeCun教授、李飞飞、Hinton、Alex、何恺明都是人工智能领域的泰山北斗,

5、一些轻松易上手的计算机视觉项目

微软年龄测试API

官方主页

自动生成图片描述—captionbot

官方网站

微软Custom Vision —不用写代码,三分钟开发一个图像分类应用

B站视频:用微软Custom Version识别水果

Github开源人脸识别项目face_recognition

face_recognition项目中文介绍

在树莓派微型电脑上安装OpenCV

子豪兄教你在树莓派微型电脑上安装OpenCV

视频剪辑师的福音—微软Video Indexer

官方主页:http://videoindexer.ai

Video Indexer是非常强大的视频和音频处理工具,用户只需上传视频或音频,即可得到关键词分析、时间线字幕、视频中出现的名人及其讲话时段、情绪分析、关键帧以及带字幕和字幕翻译的视频。

6、参考文献与扩展阅读

本文配套B站视频:三分钟走进卷积神经网络

本文配套B站视频:大白话讲解卷积神经网络工作原理

用微软Custom Version识别水果:三分钟开发人工智能小应用

三维可视化卷积神经网络

视频:李飞飞TED演讲: 我们怎么教计算机理解图片?

视频:How Convolutional Neural Networks work

ImageNet图片网站

卷积神经网络中的池化方法(pooling)总结

大话CNN经典模型:VGGNet

一个时代的终结:ImageNet 竞赛 2017 是最后一届

ResNet解析

零基础入门深度学习(4) - 卷积神经网络

微软开源人工智能工具和深度学习框架

学堂在线慕课:微软人工智能-深度学习框架和工具

用Microsoft Custom Vision技术识别点东西吧

微软亚洲研究院

微软亚洲研究院20年20人

作者介绍:

张子豪,同济大学在读研究生。微信公众号 人工智能小技巧 运营者。致力于用人类能听懂的语言向大众科普人工智能前沿科技。目前正在制作《说人话的人工智能视频教程》、《零基础入门树莓派趣味编程》等视频教程。西南地区人工智能爱好者高校联盟联合创始人,重庆大学人工智能协会联合创始人。充满好奇的终身学习者、崇尚自由的开源社区贡献者、乐于向零基础分享经验的引路人、口才还不错的程序员。

说人话的零基础深度学习、数据科学视频教程、树莓派趣味开发视频教程等你来看!

微信公众号:人工智能小技巧

知乎专栏:人工智能小技巧

Github代码仓库:TommyZihao

个人主页:www.python666.org

同济大学开源软件协会
同济大学微软学生俱乐部
西南人工智能爱好者联盟
重庆大学人工智能协会

大白话讲解卷积神经网络工作原理相关推荐

  1. 卷积神经网络工作原理直观的解释

             人工智能大数据与深度学习  公众号: weic2c 先坦白地说,有一段时间我无法真正理解深度学习.我查看相关研究论文和文章,感觉深度学习异常复杂.我尝试去理解神经网络及其变体,但依然 ...

  2. 卷积神经网络工作原理直观的解释?

    查看全部 35 个回答 YJango 1 日本会津大学 人机界面实验室博士在读 741 人赞同了该回答 该文是卷积神经网络--介绍,并假设你理解前馈神经网络. 如果不是,强烈建议你读完如何简单形象又有 ...

  3. 干货丨卷积神经网络工作原理的直观解释

    正文之前先插播一条广告: 依依的姐妹们自己创建了一个公众号,她们是一群痛并快乐着的懒妈,每天一起分享孕娃.生娃.养娃过程中的酸甜苦辣咸的文章,公众号刚刚创建,大家帮忙关注一下,捧一捧人场!依依在此谢谢 ...

  4. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )

    文章目录 I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI . 降低样本参数数量级 VI ...

  5. 【深度学习基础】一步一步讲解卷积神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送 本文转自:一步一步讲解卷积神经网络 卷积神经网络(Convoluti ...

  6. [Python人工智能] 八.卷积神经网络CNN原理详解及TensorFlow编写CNN

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章介绍了什么是过拟合,并采用droput解决神经网络中过拟合的问题,以TensorFlow和sklearn的lo ...

  7. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  8. 深入理解图卷积神经网络(GCN)原理

    深入理解图卷积神经网络(GCN)原理 文章目录 深入理解图卷积神经网络(GCN)原理 前言 一.为什么需要GCN 二.GCN的原理 1.图的定义 2.GCN来了 2.1 矩阵计算公式 2.2 以小规模 ...

  9. 卷积神经网络CNN原理详解(一)——基本原理

    卷积神经网络CNN原理详解(一)--基本原理 转载过来为了自己以后学习方便,大家请看原文章 为什么要用神经网络? 特征提取的高效性. 大家可能会疑惑,对于同一个分类任务,我们可以用机器学习的算法来做, ...

最新文章

  1. 【Spark Summit EU 2016】使用Spark轻松获取高产量基因组
  2. bert中的sep_基于向量的深层语义相似文本召回?你需要BERT和Faiss
  3. windows启动管理器_win7系统任务管理器的五种打开方式,很实用,学习一下
  4. 执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?
  5. labview数据枚举数据服务器,枚举器报告'未指定的错误,不能枚举服务器
  6. 学习编程,英语很重要!!
  7. [css] 举例说明CSS特性检测的方式有哪些?
  8. 深度学习自动编译和优化技术调研
  9. 如何计算两个字符串之间的文本相似度?
  10. 期刊(Journal)、会议(Conference)及其影响因子(Impact Factor)
  11. git原理详解与实操指南_基于dockercompose的Gitlab CI/CD实践amp;排坑指南
  12. 学习英语,先记下留着后用
  13. 实战NSURLProtocol 拦截 APP网络请求NSURLConnection, NSURLSession, Alamofire
  14. 用python爬取链家二手房楼盘
  15. 如何实现混合线性模型?
  16. java扩展类库_Java 类库和常用类库
  17. [随想感悟] 申论到底是什么 写好申论的要点
  18. Abaqus应力结点数据导出与处理
  19. 利用PHP GD库生成位图
  20. GBF ASIA亚太电池展

热门文章

  1. 百度地图sdk---地图定位功能的错误has leaked ServiceConnection com.baidu.location.LocationClient
  2. python open函数用法_Python使用open函数打开文件的常用模式
  3. 五一推荐 徽州古村落旅游攻略(图)
  4. 疫情后时代VR全景如何推动旅游业复苏
  5. 数学分析笔记-菲赫金哥尔茨-第一卷-绪论
  6. JAVA基基基本命名方式(初学者必看)
  7. Web服务器对客户端请求的响应信息是,图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应...
  8. 加好友饥荒服务器没有响应,饥荒TGP版常见问题解决方法 打不开礼包领不了怎么办...
  9. 如何在Linux下用vim编写代码
  10. 02-Bootstrap基本性组件