目录

第一周 卷积神经网络基础

第二周 深度卷积网络:实例探究

第三周 目标检测

第四周 特殊应用:人脸识别和神经风格转换

第一周 卷积神经网络基础

垂直边缘检测器,通过卷积计算,可以把多维矩阵进行降维。如下图:

卷积运算提供了一个方便的方法来发现图像中的垂直边缘。例如下图:

对于3x3的过滤器,使用下面的数字组合鲁棒性比较高,这样的过滤器也称为Sobel过滤器

还有一种称为Scharr的过滤器,如下:

随着深度学习的发展,我们学习的其中一件事就是当你真正想去检测出复杂图像的边缘,你不一定要去使用那些研究者们所选择的这九个数字(3x3的过滤器),但你可以从中获益匪浅。把这矩阵中的9个数字当成9个参数,并且在之后你可以学习使用反向传播算法,其目标就是去理解这9个参数。

将矩阵的所有数字都设置为参数,通过数据反馈,让神经网络自动去学习它们,我们会发现神经网络可以学习一些低级的特征,例如这些边缘的特征。

padding卷积,为了指定卷积操作中的padding,你可以指定的值。也可以使用Valid卷积,也就是p = 0。也可使用Same卷积填充像素,使你的输出和输入大小相同。(same卷积填充的核心要点,是使得原给出的矩阵中像素点都能够均匀被调用计算,否则边缘点调用少,从而被忽略)

一个典型的卷积神经网络通常有三层,一个是卷积层,我们常常用Conv来标注。还有两种常见类型的层,一个是池化层,我们称之为POOL。最后一个是全连接层,用FC表示。如下图:

卷积网络中使用池化层,也能够缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。一下是一个池化层的例子, 把4×4的输入拆分成不同的区域,我把这个区域用不同颜色来标记。对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值。

最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里。所以最大化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值。如果没有提取到这个特征,可能在右上象限中不存在这个特征,那么其中的最大值也还是很小,这就是最大池化的直观理解。

池化的超级参数包括过滤器大小f和步幅s,常用的参数值为f = 2,s = 2,应用频率非常高,其效果相当于高度和宽度缩减一半。

最大池化只是计算神经网络某一层的静态属性,它只是一个静态属性。

如何选定这些参数,常规做法是,尽量不要自己设置超参数,而是查看文献中别人采用了哪些超参数,选一个在别人任务中效果很好的架构,那么它也有可能适用于你自己的应用程序。

下面看一个卷积神经网络的例子,步骤一般为卷积->池化->卷积->池化... ... ->全连接,全连接等。如下图:

第二周 深度卷积网络:实例探究

当用于训练图像和数据集时,AlexNet能够处理非常相似的基本构造模块,这些模块往往包含着大量的隐藏单元或数据,这一点AlexNet表现出色。AlexNetLeNet表现更为出色的另一个原因是它使用了ReLu激活函数。如下图:

非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。 跳跃连接(Skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。我们可以利用跳跃连接构建能够训练深度网络的ResNets,有时深度能够超过100层。

如图所示,5个残差块连接在一起构成一个残差网络。

一般情况,随着网络深度加深,训练错误会越来越多。但是ResNets不一样, 即使网络再深,训练的表现却不错,比如说训练误差减少,就算是训练深达100层的网络也不例外。这种方法,可以有助于 解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。也许从另外一个角度来看,随着网络越来深,网络连接会变得臃肿,但是ResNet确实在训练深度网络方面非常有效。

普通网络和ResNets网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积层-池化层……依此重复。直到最后,有一个通过softmax进行预测的全连接层。

1×1卷积层 给神经网络添加了一个非线性函数,从而减少或保持输入层中的通道数量不变,当然如果你愿意,也可以增加通道数量。后面你会发现这对构建Inception网络很有帮助。如下图:

如果你看到一篇研究论文想应用它的成果,你应该考虑做一件事,我经常做的就是在网络上寻找一个开源的实现。因为你如果能得到作者的实现,通常要比你从头开始实现要快得多,虽然从零开始实现肯定可以是一个很好的锻炼。

在自己遇到的问题,训练的数据集内容比较少时,可以从网上下载一些以已训练且数据集比较大的模型,然后修改其最后的softmax输出值,然后再在此模型上进行训练学习,这就是卷积网络训练中的迁移学习,一般能够达到很好的效果。

常用的实现数据扩充的方法是使用一个线程或者是多线程,这些可以用来加载数据,实现变形失真,然后传给其他的线程或者其他进程。

当你没有太多标签数据时,你只需要更多地考虑手工工程。 另一套技术,当你有相对较少的数据时就可以用很多相似的数据。

第三周 目标检测

目标定位

滑动窗口目标检测,通过不断改变初始窗口的大小,以一定的步幅移动该窗口,对意向目标进行检测。具体如下图:

滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多小方块,卷积网络要一个个地处理。如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。

YOLO对象检测算法是最有效的对象检测算法之一,包含了整个计算机视觉对象检测领域文献中很多最精妙的思路。

第四周 特殊应用:人脸识别和神经风格转换

人脸识别,需要解决一次学习的问题。 要让人脸识别能够做到一次学习,为了能有更好的效果,要做的应该是学习Similarity函数。 解决一次学习问题的,只要你能学习函数d,通过输入一对图片,它将会告诉你这两张图片是否是同一个人。如果之后有新人加入了你的团队(编号5),你只需将他的照片加入你的数据库,系统依然能照常工作。

函数的作用就是输入两张人脸,然后告诉你它们的相似度。实现这个功能的一个方式就是用Siamese网络,如下图:

对于两个不同的输入,运行相同的卷积神经网络,然后比较它们,这一般叫做Siamese网络架构。

要想通过学习神经网络的参数来得到优质的人脸图片编码,方法之一就是定义三元组损失函数然后应用梯度下降。学习收集定义好的三元组数据集, 用梯度下降最小化我们之前定义的代价函数,这样做的效果就是反向传播到网络中的所有参数来学习到一种编码,使得如果两个图片是同一个人,那么它们的d就会很小,如果两个图片不是同一个人,它们的d就会很大。如下图:

人脸识别的另一种方法是可以把识别过程当成一个二分类问题。对比两种图片的差异,输出相似度,如下图:

什么是神经风格迁移?

例如,可以把一张图片的元素整合到另一张图片中,如下图:

参考资料:

1.http://www.ai-start.com

Deep Learning.ai学习笔记_第四门课_卷积神经网络的更多相关文章

  1. Deep Learning.ai学习笔记_第一门课_神经网络和深度学习

    目录 前言 第一周(深度学习引言) 第二周(神经网络的编程基础) 第三周(浅层神经网络) 第四周(深层神经网络) 前言 目标: 掌握神经网络的基本概念, 学习如何建立神经网络(包含一个深度神经网络), ...

  2. Deep Learning.ai学习笔记_第三门课_结构化机器学习项目

    目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...

  3. Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化

    目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...

  4. Deep Learning.ai学习笔记_第五门课_序列模型

    目录 第一周 循环序列模型 第二周 自然语言处理与词嵌入 第三周 序列模型和注意力机制 第一周 循环序列模型 在进行语音识别时,给定一个输入音频片段X,并要求输出对应的文字记录Y,这个例子中输入和输出 ...

  5. 【Deep Learning Nanodegree Foundation笔记】第 10 课:Sentiment Analysis with Andrew Trask

    In this lesson, Andrew Trask, the author of Grokking Deep Learning, will walk you through using neur ...

  6. 【Deep Learning Nanodegree Foundation笔记】第 1 课:INTRODUCTION Welcome

    Welcome to the Deep Learning Nanodegree Foundations Program! In this lesson, you'll meet your instru ...

  7. 【Deep Learning Nanodegree Foundation笔记】第 0 课:课程计划

    第一周 机器学习的类型,以及何时使用机器学习 我们将首先简单介绍线性回归和机器学习.这将让你熟悉这些领域的常用术语,你需要了解的技术进展,并了解深度学习在更大的机器学习背景中的位置. 直播:线性回归 ...

  8. TensorFlow学习笔记(四)图像识别与卷积神经网络

    一.卷积神经网络简介 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现. ...

  9. 【Deep Learning Nanodegree Foundation笔记】第 7 课:NEURAL NETWORKS Intro to Neural Networks

    In this lesson, you'll dive deeper into the intuition behind Logistic Regression and Neural Networks ...

随机推荐

  1. 001_JavaScript学习

    1,面向对象,事件驱动 2,动态,交互性 3,解释性语言,非强(弱)类型变量:不用声明,解释时检查类型 4,区分大小写,嵌入html,句尾加分号,可以独立保存为一个外部文件,但其中不能包含<sc ...

  2. .netcore加入APM系统 SkyWalking

    安装环境:windows 2016 必要条件: JDK8+ Elasticsearch 5.x(注:目前不支持es6) 8080,10800,11800,12800 端口不被占用 下载skywalki ...

  3. Maya Max python PySide集成 shiboken版本对应关系

    Maya_Max _python_PySide集成_shiboken版本对应关系 1.如何查看 Maya Max 集成的 Python版本: Maya:在 Maya 的安装目录下的 bin 文件夹中找 ...

  4. Centos7 安装PhantomJS

    1.下载地址:http://phantomjs.org/download.html 2.文件名:phantomjs-2.1.1-linux-x86_64.tar.bz2   # 下载好后进行解压(由于 ...

  5. php 图形用户界面GUI 开发

    php 图形用户界面GUI 开发 一.下载指定系统扩展 1 2 http://pecl.php.net/package/ui http://pecl.php.net/package/ui/2.0.0/ ...

  6. Codeforces 1027D Mouse Hunt (强连通缩点 || DFS+并查集)

    <题目链接> 题目大意: 有n个房间,每个房间都会有一只老鼠.处于第i个房间的老鼠可以逃窜到第ai个房间中.现在要清理掉所有的老鼠,而在第i个房间中防止老鼠夹的花费是ci,问你消灭掉所有老 ...

  7. POJ 3177 Redundant Paths (边双连通+缩点)

    <题目链接> <转载于 >>>  > 题目大意: 有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新 ...

  8. bootstrap-fileinput文件上传控件的亲身实践

    经理让我帮服务器开发人员开发一个上传文件功能界面,我就想着以前使用过bootstrap-fileinput插件进行文件上传,很不错.赶紧就撸起来了. 1.下载压缩包.插件地址https://githu ...

  9. linux 硬盘分区与格式化挂载

    1. 硬件设备与文件名的对应关系(详见linux系统管理P297)1) 掌握在Linux系统中,每个设备都被当初一个文件来对待.2) 掌握各种设备在Linux中的文件名 2. 硬盘的结构及硬盘分区(详 ...

  10. 最近在搞gitlab发现2个不错的开发流程分享一下

    一个不错的gitlab开发流程 http://blog.51cto.com/sgk2011/1925922 不错的git开发流程 https://www.cnblogs.com/coderzl/p/7 ...