课程回顾-Convolutional Neural Networks
padding
Strided convolution
多维卷积
LeNet 参数
卷积网络的好处
参数共享
稀疏连接
经典网络实现
LeNet-5
AlexNet
VGG
ResNet
残差块
identity block
convolutional block
残差网络
为什么残差网络有用
Network in Network & 1*1 convolutions
Inception network motivation
GoogleNet
Data Augmentation
Object Detection
几种技术的的区别
标签设计
landmark detection
sliding windows
基于卷积的滑动窗口
Bounding box Prediction
Intersection Over Union
Non-max Suppression
Anchor Box
YOLO 算法
Region Proposal(R-CNN)
Face Recognition
verification和recognition
One Shot Learning
Siamese Network
Triplet Loss
Face Verification and Binary Classification
风格迁移
content loss
style loss
Keras
Reference
为什么卷积层计算量更低
全连接的话权重太多
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表示为:
style loss
用来衡量生成的图像G和风格提供图像S之间的风格的不同。基本思想是首先对于每一幅图构建一个 style matrix(数学上叫做Gram matrix),然后比较这两个matrix的差距,计算公式如下
Keras
模型的构建遵循:Create->Compile->Fit/Train->Evaluate/Test
Reference
https://github.com/mbadry1/DeepLearning.ai-Summary
课程回顾-Convolutional Neural Networks的更多相关文章
- 课程四(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 ...
- 课程四(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 ...
- 课程四(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 ...
- 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) —— 0.Learning Goals
Learning Goals Understand multiple foundational papers of convolutional neural networks Analyze the ...
- 课程四(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 ...
- 课程四(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 ...
- 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 0.Learning Goals
Learning Goals Understand the convolution operation Understand the pooling operation Remember the vo ...
- 课程四(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 ...
- 课程四(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 ...
随机推荐
- Java关键字this与super
this有两个用途: 1.引用隐式参数(出现在方法名前的参数,显示参数是出现在方法名后位于括号里的参数,如:e.raiseSalary(10%),e是隐式参数,10%是显示参数):这里比较常见.形式如 ...
- 唉 调皮的ListView
唉 调皮的ListView 本次任务是 运用LisTView和自定义Adapter 来实现资料以列表的形式展现 来看代码 *** 布局代码老规矩 直接贴上 <LinearLayout andro ...
- 对java web开发的理解
写完后发现自己好像很多都不知道,管它的,只要自己了解就行了,以后有时间再把这个完善一下吧 感觉就是三层架构翻来覆去的用,以这个为基础不停的扩展,前提是数据量一定要大,不然这些扩展就没啥意思 这是数据量 ...
- python Strip函数和Split函数的用法总结 (python2.0,但用法与3.0是差不多的)
strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串.不能删除中间的字符或是字符串. s.strip(rm) 删除s字符串中开头.结尾处, ...
- Oracle 12c 安装问题及解决方案
1. 介绍 今天在我的开发电脑上安装Oracle12c,电脑环境是windows10家庭中文版,安装的Oracle数据库版本Oracle(12.1.0.2.0) - Standard Edition ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- [转]ps命令详解
原文地址:http://apps.hi.baidu.com/share/detail/32573968 转载自:http://www.cnblogs.com/wangkangluo1/archive/ ...
- C++ Thrift服务端记录调用者IP和被调接口方法
Apache开源的Thrift(http://thrift.apache.org)有着广泛的使用,有时候需要知道谁调用了指定的函数,比如在下线一起老的接口之前,需要确保对这些老接口的访问已全部迁移到新 ...
- 安装MySQL5.7.19 网上的文章参考 并做了部分修改
1,从官方网址下载MySQL5.7.19源码包 http://dev.MySQL.com/downloads/mysql/#downloads 2,安装好CentOS6.7 64位操作系统. ...
- Spring注解使用注意点
1 @RestController @Controller @RestController注解相当于@ResponseBody + @Controller合在一起的作用. 如果只是使用@RestC ...