Convolution Network and Application

吴恩达的深度学习课程 中的卷积网络部分

卷积网络

  • 使用卷积相当于提取图片的边缘特征,利用深度学习改变滤波器让其可以提取合适的特征。
  • valid convolution means not padding , same convolution means the input size are the same as input size。
  • 很少使用偶数的滤波器,会出现不对成的填充, 而且就会失去中心点,造成很多的不便。
  • 一个滤波器对应一张feature map ,多个滤波器对应多张 feature maps
  • 使用池化层 的作用(无需学习任何的参数,常用的hyper parameters: filter size = 2*2 , stride = 2 , Max or average pooling):
    • 缩小图片的大小
    • 提高提取特征的鲁棒性
    • 加快计算速度
  • 卷积的优势:
    • 参数共享, 容易训练
    • 使用于各个位置的平移不变性
    • 使用稀疏链接,卷积后的点只是依赖于卷积核大小的个数units

深度卷积网络

  • LeNet - 5
    • 跟着池化层, 通道不断增加,最后有全连接层
    • pool 之后加了non-linear layer ,至今没有广泛使用
  • AlexNet
    • 使用ReLu 激活函数 , 而且比较复杂, 模型容量较大
  • VGG-16
    • conv = 3*3 , s = 1 , samge padding
    • max-pool = 2*2 , s = 2
    • 简化了网络结构, 图像缩小和通道增加有规律
  • ResNet
    • 直接进行跳步
    • 训练更加深层的网络(防止 梯度爆炸 或者 梯度下降)
    • 11 convolution , 11 filter : 对于多个通道效果比较好, Network
      in Network ,实现的作用是 全连接的网络 ,增加了一层非线性层,用来保持或者减少通道的数量
  • GoogleNet
    • 网络结构复杂,让网络选择是否需要进行大小不同的卷积或者进行池化
    • bottle neck : 1*1 卷积网络 ,大量减少计算成本 , 合理设置bottle neck 的大小就可以有不错的性能
  • 使用开源实现方案
    • 直接拿别人成熟的实现方案,再根据自己的项目进行定制.
    • 重要的是迁移学习 , 使用已经训练好的网络参数,然后进行fine-tune ,快速却有效的构建自己的网络.
    • 训练集越大,可以训练的层数越多。(具体要怎么度量?哪些是trainable 哪些是 freeze)
  • 数据扩充的方法
    • 镜像对称 , 随机裁剪 (旋转 扭曲)
    • color shifting 色彩转换 , PCA color augmentation
    • 使用多线程进行数据的读取,数据的预处理 , 以及网络的训练

训练出一个好的网络的方法:迁移学习,非常非常大的数据集,通过人工洞察力精致设计网络架构从而为网络提供足够的先验知识或者约束。
---- JPlin

在数据集上表现良好的方法, 集成多个独立的网络取平均, multi-crop at test time , use open source code
---- 吴恩达

物体检测

  • localization
    • output vector [is there image? , x ,y , w, h , p1 , p2 ,...]
  • 特征点检测
    • 标出landmark ,是一个回归问题
  • Object Detection
    • sliding windows : too many windows to compute
  • 卷积的滑动窗口实现
  • 快速的实现物体检测
  • 缺点是:位置不够精确
  • 解决:YOLO algorithm , grid cells , 类似于多个部分的localization
  • 最大值抑制NMS
  • anchor boxes
  • 物体检测

人脸识别

  • person verification vs face recognition:一对一 与 一对多
  • one-shot learning(have only one example for every one to recognize the person again)
    • learning a similarity function
    • d(image1 , image2) = egree of difference between images
    • Siamese 网络(像是特征提取网络,进行特征的对比)
    • Triplet 损失:||f(A) - f(P)||^2 - ||f(A) - f(N)||^2 + alpha <= 0
      alpha : margin parameter
      Loss function:
      Given 3 image A ,P,N (positive . negative)
      L(A , P , N ) = (||f(A) - f(P)||^2 - || f(A) - f(N) ||^2 + alpha , 0)
      training 的时候需要足够的同一个人的数据,recognition 的时候可以one-shot

风格转换

  • L= content_loss + style_loss

你可能感兴趣的:(Convolution Network and Application)