为什么卷积层计算量更低

全连接的话权重太多

padding

padding的存在是因为我们做卷积操作的时候会引发数据急剧减少,padding可以解决

Strided convolution

步长的设置问题

p = (n*s - n + f - s) / 2

When s = 1 ==> P = (f-1) / 2

多维卷积

卷积层也有长、宽和通道数,其中卷基层的通道数需要和图像一致

LeNet 参数

卷积网络的好处

参数共享

一个探测器在某个部分有用那么在另一个部分也很可能有用

稀疏连接

每一层中,每个输出值只和部分的输入有关

经典网络实现

LeNet-5

为了识别32321



Conv ==> Pool ==> Conv ==> Pool ==> FC ==> FC ==> softmax

AlexNet



Conv => Max-pool => Conv => Max-pool => Conv => Conv => Conv => Max-pool ==> Flatten ==> FC ==> FC ==> Softmax

VGG

ResNet

残差块



如上图,实际上就是在网络中加入了一些shortcut

identity block



这个是保持不变的

convolutional block

残差网络

就是用了残差单元的网络

为什么残差网络有用

加入了易于学到的线性映射

Network in Network & 1*1 convolutions

1*1的卷积单元,也叫network in network

这种结构在以下情况下有用:

  • 我们想要减少通道数
  • 节省计算量
  • 如果1*1的卷积单元和原来的通道数一样的话,我们就能够保持原有的通道数,并做一些非线性的变换。

Inception network motivation

Inception的基本思想是:在网络的构造中,我们不是去选择使用什么层(比如说是11的卷积还是33的卷积还是pooling等),而是把它们都用上,让算法自己选



很容易想到这个时候计算量会很大,所以一般会采用1*1的卷积层来降低计算量。并且实践表明这种对于性能影响很小。

GoogleNet

Data Augmentation

图像可以使用翻转、截取、颜色变换等技巧进行数据增强

Object Detection

几种技术的的区别

  • classification:对整张图进行分类

  • localization

    学习出定位

  • detection

    有多个物体,给出定位和类别

  • semantic segmentation

    区分每一个像素的类别,所有有重叠的时候我们无法分出他们

  • instance segmentation

    不仅是给出框,我们要给出他们的每个像素,并分开他们

标签设计

做object detection我们不光要在标签给出类别,还要给出bounding box的位置

Y = [
Pc # Probability of an object is presented
bx # Bounding box
by # Bounding box
bh # Bounding box
bw # Bounding box
c1 # The classes
c2

]
  • 损失函数
L(y',y) = {
(y1'-y1)^2 + (y2'-y2)^2 + … if y1 = 1
(y1'-y1)^2 if y1 = 0
}
  • 一般来说对于概率,我们用logloss,对于bounding box我们用MSE

landmark detection

对于某些应用,如人脸检测的时候,你希望把眼睛位置一起标记出来,这时候就可以在label中把这些坐标也加进去

sliding windows

简单的说就是你选个窗口大小,然后按照一定重复进行划窗,选用分类器对这些进行分类,然后合并一些有物体重复的窗,最后选出来最佳的窗格。

对于传统算法一般选择线性分类器,这样的话速度才够。但是这样精度不太好,深度学习则复杂度会太高。所以一般有两种方案:

  • 采用一种卷积的方式做
  • 压缩网络

基于卷积的滑动窗口



本质上就是将传统卷积网的最后的全连接层也换成是卷积层,然后其实就可以一起把移动窗口做了

Bounding box Prediction



先把图像分块,然后每个地方用上面的卷积滑动窗口预测得到窗口

Intersection Over Union



IoU,即评价detection的方式,等于交集除以并集

如上图,红色的是真实值,紫色的是预测值,然后可以计算

如果IoU> 0.5就说明表现还不错

Non-max Suppression

用前面的方法我们可以会多次检测到同一个物体,这个方法可以解决这个问题

  • 首先丢弃预测概率小于0.6的结果
  • 如果还有多个box,选择概率最大的,丢弃前一步中任何IoU小于0.5

如果有多个类别,我们就需要重复以上多次

Anchor Box

上面的技巧只能解决单个物体,如果有多个重合的物体就会比较难办。

anchor box感觉上就是把多个单个的box连接起来。也可以使用聚类的方式来做

YOLO 算法

YOLO算法其实就是综合用了上面的这些技巧

首先用基于卷积的移动窗口



移除预测概率低的



移除IoU低的

YOLO在识别小物体时效果不是太好

Region Proposal(R-CNN)

其他的检测算法还有R-CNN、SSD等

Face Recognition

verification和recognition

verification就是给你一个人和他的id,判断是不是这个人。recognition就是给一个人的图片,如果他是库中k个人之一就输出其id

One Shot Learning

从这个人的一张图片就能够学习出识别他的系统。这个其实是基于相似度函数。即我通过一个网络抽取特征(这个网络是提前训练好的),然后比较新来的人的特征和这里的是不是吻合。也可以直接预训练一个分类器

Siamese Network

Triplet Loss

给定三个图片A(目标图片)、P(正样本)、N(负样本)

L(A, P, N) = max (||f(A) - f(P)||2 - ||f(A) - f(N)||2 + alpha , 0)

Face Verification and Binary Classification

得到特征算距离

风格迁移

这个问题其实有两方面意义:

  • 相当于神经网络可以做“创作”
  • 可以从这个理解到卷积层的特征是什么样的

这里的损失函数是通过style cost function和content cost function

content loss

用来衡量生成的图像G和原始内容提供图像C之间的不同,这里通过训练好的神经网络来衡量两个图像content的相似度。其基本想法是,神经网络的每一层可以提取图像的一些特征,那么我用图片在某一层的激活值就可以表示图像的内容。然后两个图像C和G都经过这个神经网络取同一层就可以了(这里一般是取中间层的结果,我猜测是太浅的话不能抓住足够的信息,太深的话就过于细节化了而不会和风格迁移;然后最终一般也是算几层取个加权平均,而在content里面则不会取平均)。最后loss表示为:

(1)Jcontent(C,G)=14×nH×nW×nC∑all entries(a(C)−a(G))2" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">(1)Jcontent(C,G)=14×nH×nW×nC∑all entries(a(C)−a(G))2

style loss

用来衡量生成的图像G和风格提供图像S之间的风格的不同。基本思想是首先对于每一幅图构建一个 style matrix(数学上叫做Gram matrix),然后比较这两个matrix的差距,计算公式如下

(2)Jstyle[l](S,G)=14×nC2×(nH×nW)2∑i=1nC∑j=1nC(Gij(S)−Gij(G))2" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">(2)Jstyle[l](S,G)=14×nC2×(nH×nW)2∑i=1nC∑j=1nC(Gij(S)−Gij(G))2

Keras

模型的构建遵循:Create->Compile->Fit/Train->Evaluate/Test

Reference

https://github.com/mbadry1/DeepLearning.ai-Summary

课程回顾-Convolutional Neural Networks的更多相关文章

  1. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 3.Programming assignments:Convolutional Model: application

    Convolutional Neural Networks: Application Welcome to Course 4's second assignment! In this notebook ...

  2. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 2.Programming assignments:Convolutional Model: step by step

    Convolutional Neural Networks: Step by Step Welcome to Course 4's first assignment! In this assignme ...

  3. 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 2.Programming assignments:Art generation with Neural Style Transfer

    Deep Learning & Art: Neural Style Transfer Welcome to the second assignment of this week. In thi ...

  4. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) —— 0.Learning Goals

    Learning Goals Understand multiple foundational papers of convolutional neural networks Analyze the ...

  5. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) ——3.Programming assignments : Residual Networks

    Residual Networks Welcome to the second assignment of this week! You will learn how to build very de ...

  6. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) —— 2.Programming assignments : Keras Tutorial - The Happy House (not graded)

    Keras tutorial - the Happy House Welcome to the first assignment of week 2. In this assignment, you ...

  7. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 0.Learning Goals

    Learning Goals Understand the convolution operation Understand the pooling operation Remember the vo ...

  8. 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 3.Programming assignments:Face Recognition for the Happy House

    Face Recognition for the Happy House Welcome to the first assignment of week 4! Here you will build ...

  9. 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 1.Practice quentions

    [解释] This allows us to learn to predict a person’s identity using a softmax output unit, where the n ...

随机推荐

  1. Sql 记录死锁

    记录死锁 DBCC errorlog DBCC TRACEON (1204, 1222, -1); DBCC tracestatus 关闭跟踪标记DBCC TRACEOFF

  2. springBoot 使用拦截器 入坑

    近期使用SpringBoot 其中用到了拦截器 结果我的静态资源被全部拦截了,让我导致了好久才搞好: 看下图项目结构: 问题描述:上图划红框的资源都被拦截器给拦截了,搞得项目中不能访问:解决问题就是在 ...

  3. 第九周助教工作总结——NWNU李泓毅

    1.助教博客链接: https://www.cnblogs.com/NWNU-LHY/ 2.作业要求博客链接: https://www.cnblogs.com/nwnu-daizh/p/1072688 ...

  4. Linux下mysql定时自动备份并FTP到远程脚本

    1.添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh) #!/bin/sh #this shell is user for ...

  5. 去除最后一个li的样式

    推荐::::方法一,使用:first-child    纯css的:first-child伪类就可以胜任此任务,操作很方便,代码量忽略不计.支持IE7+,不支持IE6 :first-child /:l ...

  6. B树/[oracle]connect BY语句

    读大神的书,出现很多没有见过的函数和便捷操作,特此记录 connect by 之前没有接触过,为了学习这个语句,先了解一下B树数据类型是最好的方法. [本人摘自以下博客] https://www.cn ...

  7. 1.3if判断语句+while和for循环语句+购物车作业

    1.if 语句 if userame=_usename and password=_password: print("welcome user {name} login..."). ...

  8. Astrology PHP 框架

    1.Web 服务器配置 PHP 支持 URL Rewrite.PATH_INFO 2.环境需求 PHP 7.2+ 扩展:gettext 3.目录结构 + src | - autoload.php | ...

  9. 熟悉常用的Linux操作

    请按要求上机实践如下linux基本命令. cd命令:切换目录 (1)切换到目录 /usr/local  cd /usr/local (2)去到目前的上层目录    cd .. (3)回到自己的主文件夹 ...

  10. VS2017 处理 Rdlc , microsoft report viewer 轻量级报表处理(WPF CS客户端版本)

    VS 2017没有安装处理Rdlc的包,需要手动安装: 点击主菜单中Tools 下拉菜单中 扩展和升级: 点选左侧Online  ,然后在右侧输入rdlc进行查询,然后 Download 下载安装 M ...