图像分类

判断图片中是否有某个物体,一个图对应一个标签

图像识别归类方法CNN cnn图像识别多分类_cnn

卷积神经网络(CNN)

网络进化:

网络: AlexNet→VGG→GoogLeNet→ResNet

深度: 8→19→22→152

VGG结构简洁有效: 容易修改,迁移到其他任务中去,高层任务的基础网络

性能竞争网络: GooLeNet:Inception V1→V4,ResNet:ResNet1024→ResNeXt

图像识别归类方法CNN cnn图像识别多分类_分类_02

AlexNet网络

ImageNet-2012竞赛第一

标志着DNN深度学习革命的开始:5个卷积层+3个全连接层,60M个参数,650K个神经元,2个分组,2个GPU

新技术: ReLU非线性激活,Max Pooling 池化,Dropout regularization,LRN

图像识别归类方法CNN cnn图像识别多分类_cnn_03


图像识别归类方法CNN cnn图像识别多分类_cnn_04

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_05

局部响应归一化(Local Response Normalization LRN): 神经元的侧抑制机制,某个位置(x,y)上沿通道方向的归一化,n为邻域值,N为通道值,超参数:k=2,n=5,α=0.0001,β=0.75

图像识别归类方法CNN cnn图像识别多分类_深度学习_06

Network in Network网络(NiN)

提高CNN的局部感知区域的非线性

图像识别归类方法CNN cnn图像识别多分类_cnn_07

卷积层→1X1卷积层→Max池化层

图像识别归类方法CNN cnn图像识别多分类_深度学习_08

1X1卷积

1X1卷积,实现的是同一个像素点上的各个通道的值的线性组合

作用: 实现跨通道的交互和信息整合,进行卷积核通道数的降维和升维

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_09

VGG网络

VGG网络提出的目的是为了探究在大规模图像识别任务中,卷积网络深度对模型精度有何影响。将一个大的卷积核分解成连续多个小卷积核。减少参数,降低计算,增加深度,是网络改造的首选基础网络

图像识别归类方法CNN cnn图像识别多分类_深度学习_10

从左至右每一列代表着深度增加的不同的模型,从上到下代表模型的深度。conv<滤波器数,通道数>,随着层数的增加,参数增加并不是很多

图像识别归类方法CNN cnn图像识别多分类_深度学习_11

GooLeNet

GooLeNet 出现之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数),但现在看来这纯粹是增大网络的缺点
进化顺序:Inception V1 →Inception V2 →Inception V3 →Inception V4
为了提升性能,减少参数,降低计算,增加深度,宽度

Inception V1网络

核心组件Inception Architecture(稀疏连接结构):Split-Merge→1X1卷积,3X3卷积,5X5卷积,3X3池化,增加网络对多尺度的适应性,增加网络宽度。Bottleneck Layer->使用NiN的1X1卷积进行特征降维,大幅减低运算量。
取消全连接,减负
辅助分类器,解决前几层的梯度消失问题

图像识别归类方法CNN cnn图像识别多分类_分类_12


图像识别归类方法CNN cnn图像识别多分类_卷积_13

全局平均池化(Global average pooling GAP)

去局平均池化就没有size,它针对的是整张feature map

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_14


图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_15


图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_16


图像识别归类方法CNN cnn图像识别多分类_cnn_17


图像识别归类方法CNN cnn图像识别多分类_卷积_18

Inception V2网络

核心组件: Batch Normalization(批归一化):在batch范围内,对每个特征通道分别进行归一化。

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_19

白化:使每一层的输出都规范化到N(0,1)。解决Internal Covariate Shift问题,允许较高的学习率,取代部分Dropout

5X5卷积核->2个3X3卷积核

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_20

训练阶段:实时计算
测试计算:使用固定值(对训练求平均)

图像识别归类方法CNN cnn图像识别多分类_深度学习_21

位置: 卷积->BN->ReLU

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_22

Inception V3网络

核心组件: 非对称卷积,NXN卷积分解成1XN -> NX1,降低参数数量和计算量

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_23

在中度大小的feature map上使用效果才会更好,对于m*m大小的feature map,建议m在12到20之间

Inception V3优化了Inception Module的结构,V3有三种不同的结构。这些Inception Module只在网络的后部出现,前部还是普通的卷积层

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_24

取消浅层的辅助分类器,深层辅助分类器只在训练后期使用,加上BN和Dropout

图像识别归类方法CNN cnn图像识别多分类_卷积_25

Inception V4网络

图像识别归类方法CNN cnn图像识别多分类_卷积_26

Inception 总结

**代替人工确定卷积层中的过滤器类型或者确定是否需要创建卷积层和池化层;不需要人为的决定使用哪个过滤器,是否需要池化层等,由网络自行决定这些参数;即:预先给网络添加所有可能值,将输出连接起来,让网络自己学习它需要什么样的参数。Inception网络有个问题:网络的超参数设定的针对性比较强,当应用在别的数据集上时需要修改许多参数,因此可扩展性一般。
**

ResNet残差网络

核心组件Skip/shortcut connection

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

Residual net:可以拟合出任意目标映射F(x),H(x)=F(x)+x,F(x)是残差映射,相对于identity来说

图像识别归类方法CNN cnn图像识别多分类_深度学习_27

其他设计: 全是3X3卷积核,卷积步长2取代池化,使用Batch Normalization,取消Max池化,全连接层,Dropout

图像识别归类方法CNN cnn图像识别多分类_卷积_28


图像识别归类方法CNN cnn图像识别多分类_cnn_29

**更深网络:**根据Bootleneck优化残差映射网络。

原始:3x3x256x256->3x3x256x256

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

图像识别归类方法CNN cnn图像识别多分类_分类_30

Inception-ResNet网络

图像识别归类方法CNN cnn图像识别多分类_卷积_31


图像识别归类方法CNN cnn图像识别多分类_卷积_32

ResNeXt网络

提出深和宽之外的第三个维度,cardinality(基数),采用Split-Transform-Aggregate策略,将卷积按通道分组,形成32个并行分支,低纬度卷积进行特征变换,加法合并。同参数规模下,增加结构,提高模型表达力

图像识别归类方法CNN cnn图像识别多分类_cnn_33

ResNeXt实际上就是将group convolution引进ResNet中,以获得更少参数。

图像识别归类方法CNN cnn图像识别多分类_深度学习_34

增加cardinality基数可以不断提高性能

图像识别归类方法CNN cnn图像识别多分类_卷积_35


图像识别归类方法CNN cnn图像识别多分类_分类_36

典型的CNN参数与效果对比

图像识别归类方法CNN cnn图像识别多分类_深度学习_37

CNN设计准则

**避免信息瓶颈:**卷积过程中,空间尺寸HxW逐渐变小,输出通道数C逐渐变多,HxWxC要缓慢变小

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_38

通道(卷积核)数量保持在可控范围内 :输入通道数量C,输出通道数量K

图像识别归类方法CNN cnn图像识别多分类_深度学习_39

感受野要足够大: 卷积时依据局部图片的操作,捕捉大尺寸内容,多个小卷积核好过一个大尺寸卷积

图像识别归类方法CNN cnn图像识别多分类_深度学习_40


图像识别归类方法CNN cnn图像识别多分类_卷积_41

分组策略,降低计算量

图像识别归类方法CNN cnn图像识别多分类_卷积_42

低秩分解,降低参数计算量

图像识别归类方法CNN cnn图像识别多分类_图像识别归类方法CNN_43