计算机视觉--笔记--图像分类--网络进化史

目录

第四讲 图像分类 image  classification  

研究和竞赛中最传统的问题

网络进化:

alexNEt  VGG GoogleNet  ResNet

卷积神经网络  

Alex Net:

VGG Net

GoogleNet

inception v1:

inception V2

inception V3

inception V4

ResNet 残差网络

 

resNeXt网络:

CNN设计准则:


sift  专利 cv里面没有编译

 

第四讲 图像分类 image  classification  

研究和竞赛中最传统的问题

CNN起家的问题

1. 图片分类

2. 竞赛

3. 卷积神经网络

4. 应用案例:超深残差神经网络 Resnet 50层

 

1. 图片分类:

属于某一类? 打标签

输出5个 top-5 错误率 :只要5个预测中有一个命中,就算对了

 

top-1 error: 只预测1个。

 

top5 error用的更多

2. 竞赛   ImageNet Larger Scale Visual Recognition Challenge

多个任务

    图像分类:

         1000个类别

        训练集(12M),验证集 50k, 测试集 150k  http://image-net.org/challenges/LSVRC/2016/index

imageNet数据集   

根据wordNet组织的图片集

100 000+ 个词、词组(synsets)

8000+ 名词

场景分类(大概说一下):

背景  室内室外 自然场景 

MIT places2数据集(10M+,分类400+),365场景分类,  训练集(8M),验证集(36K),测试集(328K)

物体检测(object detectoin  R_CNN):

基本上与训练的CNNmodel都指的是ImageNet。基础网络,预训练模型 是其他模型的初始化网络

物体定位(instance level):

场景解析(scene parsing):

 

网络进化:

 

 

alexNEt  VGG GoogleNet  ResNet

深度: 8  19  22  152

VGG ResNet 结构 简洁有效    性能很好

已修改 迁移到其他任务

高层任务的基础网络

性能竞争 网络:

GoogleNet : inception v1 --v4

split-transform-merge

 

ResNet:   ResNet 152       ResNeXt

深度 宽度 基数(三个维度)

 

 

性能进化史

计算机视觉--笔记--图像分类--网络进化史_第1张图片

v4  带了直连思想

 

 

卷积神经网络  

激活函数:

非线性

sigmoid  (深度模型不太好用,)

relu 分段线性,没有饱和(resnet可以成功训练出来的重要原因,解决梯度消失的问题)

 

卷积:

卷积 步长大于1   有降低维度  增加非线性

卷积降维 ()步长大于1)  步长为1的话相当于没有降维

 

池化:

最终输出标签,1*1000  池化  特征融合,尺寸降维,不降通道一定相邻区域 特征 融合

多通道 每个层 各做各的

平均池化

最大化池化()

超参: 尺寸 步长 计算类别(平均池化  最大池化)

全连接:

作用 推理器,去除空间信息

抹掉空间信息

和基础圣经网络一样的

前面的卷积层 提取特征 层数越多,语义层数更高

全局感受野,卷积核的尺寸可以认为和输入图片一样

 

 

 

 
 

工程trick:

图像像素中心化:    RGB减去各自通道的均值

防止过拟合:

数据增强x10:  256x256 提取中心和四角 224x224 自图片x5,  水平翻转  x2

dropout: 训练中,随机让一些神经元 输出设为0,失活率 0.5

 

 

 

Alex Net:

image-net 2012 竞赛第一,标志着 DNN深度学习革命的开始

5个卷积层,3个全连接层

60M个参数,650k个神经元

2个分组 --> 2个GPU

训练时长1周,50x加速

新技术:  ReLU激活函数,max pooling 池化, dropout regularization

 

计算机视觉--笔记--图像分类--网络进化史_第2张图片

计算机视觉--笔记--图像分类--网络进化史_第3张图片

局部相应归一化LRN:

   某个位置(x,y)跨通道方向上面归一化,

   跨通道方向归一化

计算机视觉--笔记--图像分类--网络进化史_第4张图片

计算机视觉--笔记--图像分类--网络进化史_第5张图片

 

 

network in network (NIN)bottleneck layer

提高CNN局部感知区域()

1*1卷积层 升维度或者降维

本质 全连接 本质 变维度

计算性质需求   必须变维度

或者压缩特征 稀疏特征变得紧密

 

太厚了压一压

降维用的更多   也可以用来升维度

 

 

 

VGG Net

大的卷积核 分解 小的卷积核

7x7 卷积核 -->  3个3x3卷积核

减小参数,降低计算量(49C2  --->27C2 ),增加深度    更多的非线性(更多的层数 更多的relu激活,更高的非线性)

 

简单有效,

ImageNet 2014  No.2

网络改造的首选网络

 

16层和19层性能最好

固定基本input size :这样224*224   比性能好比一点,性能计算时间

 

计算机视觉--笔记--图像分类--网络进化史_第6张图片

 

 

 

固定尺寸限制

卷积  --> 全连接   超参数是定的  如果图片尺寸变化   全连接肯定会出问题

残差网络  inception的几个网络可以 全尺寸  没有尺寸限制

只要没有全连接   都没有尺寸限制

全连接相当于 全卷积  必须写死

 

超参空间太大

更改网络 前一代基础上 改网络  不改超参

如果更改超参数 网络性能提升     需要证明 是构架改变提升网络性能   还是   超参改变提升网络性能

相对  学术  更关注 网络对性能的提升

 

学术界 关注网络结构

工业界  硬件达不到要求 怎么让 模型更加高效化   性能损失不大

CNN可以做成实时  实时性不高  因为计算量很大

 

tensorflow  嵌入式 优化

核心 C++,python 只是一个语言接口

提出新的设计思想  一定要用到C++编写

tf必然是工业界支撑,尤其是好的网络

神经网络  工程性质很重  正好 只有企业有资源人力做这个东西,   设备 很多并行实验

AI热潮  

会用到CNN思想,R-CNN  就用到opencv中金字塔的思想

数学解释还是做不到

 

中小奇企业缺少并行计算的开发能力 tf就是让大多数企业了解接口就可以直接使用,开源 ,提升知名度

视频里面  分析 一定会用到opencv

 

 

GoogleNet

进化顺序:

inception v1 -->  v4

提升性能  :   减小参数,降低计算

          增加宽度和深度

inception v1:

基本单元 inception 

计算机视觉--笔记--图像分类--网络进化史_第7张图片

 split-merge  (1x1  3x3  5x5  卷积  3x3 池化)

增加网络多尺度适应性   四个操作各自捕捉各自的特征,最后将特征串接

增加网络宽度

bottleneck layer:

使用NiN的1x1卷积    特征降维度

大幅降低计算量 10x 

计算机视觉--笔记--图像分类--网络进化史_第8张图片

全连接取消

参数量大,减负担

最后只连接一个全连接层

辅助分类器:

解决前几层的题都消失问题

 

   超参空间太大

inception v1

核心组件 inception architecture(稀疏连接结构): 

提供多尺度特征: 输出通道多尺度化(感受野)

首个split-merge思想

串接合并所有分支

bottleneck layer: 1x1卷积 解决多尺度带来的高额参数&计算

 

取消全连接(主分类器的):

全尺寸卷积层

占用大量参数

   AlexNet: 58.6M (6x6x256x4096+4096x4096+4096x1000)

   VGG:  72M (7x7x256x4096+4096x4096+4096x1000)

由全局平均池化代替:

  输入:7x7x1024

  输出:1x1x1024

一大趋势

 

 

两个辅助分类器

深层次的网络中,梯度回传到最初几层,存在严重的题都消失问题

有效加速收敛

测试阶段不用

 

计算机视觉--笔记--图像分类--网络进化史_第9张图片

 

 

inception V2

 

batch normalization(批归一化):

很重要,各大网络都在使用,resnet ,gnn,

解决internal covariate shift 问题

计算机视觉--笔记--图像分类--网络进化史_第10张图片

白化:使每一层输出规范化到N(0,1),,但是抹杀了数据特性,有的确实均值高一点

配对使用 scale shift  :

 

计算机视觉--笔记--图像分类--网络进化史_第11张图片

需要学习参数训练时实时计算,计算or test时,使用固定值(对训练求平均)

计算机视觉--笔记--图像分类--网络进化史_第12张图片

允许高的学习率

取代部分dropout

内容:   batch范围内,对每一个特征通道分别归一化,减均值除以标准差

k个通道,k个batch normalization

 

 

5x5  卷积核 --> 两个3x3卷积核  降低计算量,借鉴resnet

计算机视觉--笔记--图像分类--网络进化史_第13张图片

 

inception V3

计算机视觉--笔记--图像分类--网络进化史_第14张图片

核心组件:

非对称卷积:NxN :   1xN -->  Nx1

计算机视觉--笔记--图像分类--网络进化史_第15张图片

降低参数量和计算量,工程成分很重

不同的层 不同的方案

三种方案,不同的分辨率,不同的方案,工程性很强,不太好解释,工程实践得出的结果

尺寸越小层数越深

高效降尺寸:

pooling 尺寸缩小 通道数并没减少

一般呢尺寸减小,通道数会多一些,这样不会损失信息

这里pooling呢,想做一种特征通道数增加。

35x35x320  -->  17x17x320 -->17x17x640   有表达瓶颈 计算量小

35x35x320  -->  35x35x640 -->17x17x640   无表达瓶颈 计算量大

 

高效的降尺寸:

 

避免表达瓶颈:降尺寸前增加特征通道

2个并行分支: 卷积分支 +池化分支, 串接分支结果  

35x35x320  --> 17x17x320 (pool)     --->

                    ----> 17x17x320 (conv)  --->   concat ---> 17x17x640

计算机视觉--笔记--图像分类--网络进化史_第16张图片

 

取消浅层的辅助分类器:完全没用

深层的辅助分类器:   训练后期有用

加上BN  dropout   主分类器 top1性能 提升 0.4%

正则化作用

用在最后一层17x17后面

 

总结:

V3 避免表达瓶颈 不增加计算量,增强结构(表达力)(宽度深度)

往其他网络上面改进,可以借鉴这些改进

inception V4

引入残差 到inception Architechture

计算机视觉--笔记--图像分类--网络进化史_第17张图片

ResNet 残差网络

计算机视觉--笔记--图像分类--网络进化史_第18张图片

核心组件:

plain net :可以拟合出任意的目标映射H(x)

residual net:

可以拟合出任意的目标映射F(x), H(x)=F(x)+x

F(x)是残差映射,相对于identit来说

当H(x)最优映射 接近identity,很容易捕捉到“小的扰动”

倒数至少为1,解决梯度消失问题

 

其他涉设计:

全是 3x3卷积核

卷积步长为2,具有降维作用,取代池化操作,

使用 Batch Normalization

取消:max池化,全连接层,dropout

 

计算机视觉--笔记--图像分类--网络进化史_第19张图片

网络很简单 很有效

更深的网络: 根据bottleneck 改进优化 残差映射网络

原始:  3x3x256x256  -> 3x3x256x256

优化:  1x1x256x64 --> 3x3x64x64  -->  1x1x64x256

中间有信息损失,但是拟合的是残差,丢失一些信息是可以接受的,影响应该不大

计算机视觉--笔记--图像分类--网络进化史_第20张图片

 

 

resNeXt网络:

计算机视觉--笔记--图像分类--网络进化史_第21张图片

计算机视觉--笔记--图像分类--网络进化史_第22张图片

提出第三个DNN维度: cardinality(基数,这个翻译不是很合理)

之前 深度 (层数)宽度(分支 ,不同操作的分支)

借鉴了显卡分组的思想

 

采用 split--transform-aggregate

split:不同的分支,完全同质化,每个分支都一样,每个分支操作数量维数更低

transform:不同的分支上面做卷积操作

aggregate: 合并,之前的inception(串接合并);这里是做通道相加

 

低维度卷积之后会做特征升维变换

加法合并

 

 同参数规模下,增加结构,提高模型表达能力

100层 ResNeXt=200层ResNet

 

 

 

ILSVRC-2016竞赛第二

 

inception

 论文里面

c要变多

数据量 维持比较小的变化

 

 

计算机视觉--笔记--图像分类--网络进化史_第23张图片

 

 

 

 

计算机视觉--笔记--图像分类--网络进化史_第24张图片

CNN设计准则:

避免信息瓶颈:

卷积过程中,空间尺寸变小,输出通道变多

数据量HxWxC 要变缓慢变小

 

不要突然变小

 

 

通道(卷积核)数量保持在可控范围:

卷积核尺寸大小  数量都不能太大,参数数量很大,效应指数级,

输入通道数量C,输出通道数量K

参数数量: Hf x Wf x C x K

操作数量:(Hf x H)/stride  x (Wf x W)/stride   x C x K

感受野要足够大:

卷积是关于局部图片的操作

捕捉大尺寸内容,特征比较稳定,--》参数计算都会变大

一次性3个3x3卷积核,对于捕捉原始的感受野可能存在问题

 

多个小尺寸卷积核  vs 一个大尺寸卷积核:     参数少,计算快,多个非线性激活,更好的非线性表达能力。

多个小尺寸卷积核   一般都在后面使用,不会一开始就使用。

 

 

 

分组策略:

都有,

googleNet: inception  分支操作

ResNeXt: cardinality 分组

inception v3: 

空间分解:

通道分解

 

 
 
 
 
 

 

你可能感兴趣的:(深度学习,计算机视觉)