以前的图像识别技术

早期图片识别技术

根据距离思想

  • 特征提取

  • 索引技术

  • 相关反馈

    显式反馈:通过正例负例来判断

    隐式反馈:通过用户行为习惯来判断

  • 重排序

全局特征提取:全局特征丢失图片细节,例如整张图片都是红色,他就会搜索所有红色图片,不论图中显示的对象类别

中期图片识别技术

根据视觉词袋思想

  • 特征提取

  • 向量化

    局部特征转变为视觉关键字,查找视觉词典里最近的关键字,把局部特征向量转变为视觉字典的一个序号

  • 索引技术

  • 后处理

局部特征提取:利用词袋库强调细节信息

经典CNN

卷积神经网络具有卷积计算,前向反馈,局部感知,权值共享

  • 早期尝试

    LeNet:5层,使用MNIST数据集,最早用于手写数字的CNN

  • 历史突破

    AlexNet

  • 发展和演化

    网络层数加深:VGGNet

    增强卷积模块功能:NIN,GoogleNet,Inception V3,V4

    增加新的功能单元:Inception V2,BN

    融合:ResNet

AlexNet

网络:

在两个GPU上运行,分成两组,8层

  • 卷积层1:

    • 卷积核大小11×11,数量48个,步长4
    • 激活函数relu
    • 池化kernel size=3,stride=2
    • 标准化
  • 卷积层2:

    • 卷积核大小5×5,数量128个,步长1

    • 激活函数relu

    • 池化kernel size=3,stride=2

    • 标准化

  • 卷积层3:

    • 卷积核大小3×3,数量192个,步长1

    • 激活函数relu

  • 卷积层4:

    • 卷积核大小3×3,数量192个,步长1

    • 激活函数relu

  • 卷积层5:

    • 卷积核大小3×3,数量128个,步长1
    • 激活函数relu
    • 池化kernel size=3,stride=2
  • 全连接层6

    • 2048个神经元
    • dropout
  • 全连接层7

    • 2048个神经元
    • dropout
  • 全连接层8

    • 1000个神经元

详情

  • 分组卷积
  • 第一次使用relu
  • 数据增强
  • dropout=0.5,效果最好
  • batch_size=128
  • SGD momentum=0.9
  • learning-rate=1e-2
  • L2 weight-decay=5e-4

常见的数据增强方式

  • 对颜色的数据增强
  • 色彩饱和度,亮度,对比度
  • 加噪声(高斯噪声)
  • 水平翻转,垂直翻转
  • 随机旋转,随即裁剪

VGGNet

深度增加:AlexNet 8层,VGGNet 最深19层

小卷积核:3×3,对网络最后的分类有很大的作用

详情

  • 3×3 conv-filter
  • conv-stride =1
  • pad=1,same
  • 2×2 pool-filter
  • pool-stride=2

GoogleNet/Inception

goole提出的,共有v1,v2,v3,v4 共4个模型

  • 使用Inception模块

    可以并行执行多个具有不同尺度的卷积运算或池化操作,将多个卷积核卷积的结果拼凑成一个非常深得特征图

  • Bottlenck

    在同一层使用不同尺寸的卷积核会导致参数过多,可以在原来的Inception结构中加入1*1卷积核,起到降维作用

  • 批处理归一化

    让数据符合正态分布,有利于提高收敛速度,防止梯度消失或爆炸,加快训练速度

ResNet

微软提出的神经网络

  • 使用了恒等映射

    传统神经网络训练出的函数为F(x),添加恒等映射后,函数变为F(x)+x

    这相当是在对x作修正,修正的幅度是F(x),F(x)在数学上成为残差,因此该网络也叫残差网络

  • 避免网络层数增加,训练效果下降