zoukankan      html  css  js  c++  java
  • 卷积神经网络-目标分类简述

    目标分类基本框架

    1. 数据准备

    数据来源--现有数据集的子集;网络采集;现有数据人工标注http://deeplearning.net/datasets/

    数据扩充--https://blog.csdn.net/zhelong3205/article/details/81810743

    作用----增加训练的数据量,提高模型的泛化能力,增加噪声数据,提升模型的鲁棒性

    数据增强可以分为两类,一类是离线增强,一类是在线增强

    离线增强 : 直接对数据集进行处理,数据的数目会变成增强因子 x 原数据集的数目 ,这种方法常常用于数据集很小的时候

    在线增强 : 这种增强的方法用于,获得 batch 数据之后,然后对这个 batch 的数据进行增强,如旋转、平移、翻折等相应的变化,由于有些数据集不能接受线性级别的增长,这种方法长用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用 GPU 优化计算。

    常用的数据扩充技术:

    翻转 :增强因子 2 或 3 
    数据翻转是一种常用的数据增强方法,这种方法不同于旋转 180 这种方法是做一种类似于镜面的翻折。

    旋转 : 增强因子 2 到 4 
    旋转就是顺时针或者逆时针的旋转,注意在旋转的时候, 最好旋转 90 -180 度否则会出现尺度的问题    

    缩放 :增强因子任意 
    图像可以被放大或缩小。放大时,放大后的图像尺寸会大于原始尺寸。大多数图像处理架构会按照原始尺寸对放大后的图像 进行裁切。我们将在下一章节讨论图像缩小,因为图像缩小会减小图像尺寸,这使我们不得不对图像边界之外的东西做出假设。

    裁剪 :增强因子任意 
    这种方法更流行的叫法是随机裁剪,我们随机从图像中选择一部分,然后降这部分图像裁剪出来,然后调整为原图像的大小 

    平移 : 增强因子任意 
    平移是将图像沿着 x 或者 y 方向 (或者两个方向) 移动。我们在平移的时候需对背景进行假设,比如说假设为黑色等等,因为平移的时候有一部分图像是空的,由于图片中的物体可能出现在任意的位置,所以说平移增强方法十分有用。

    添加噪声 :增强因子任意 看噪声的类型
    过拟合通常发生在神经网络学习高频特征的时候 (因为低频特征神经网络很容易就可以学到,而高频特征只有在最后的时候才可以学到) 而这些特征对于神经网络所做的任务可能没有帮助,而且会对低频特征产生影响,为了消除高频特征我们随机加入噪声数据来消除这些特征。

    数据规范--均值处理;归一化;大小调整https://vnnw00.wordpress.com/2010/07/06/%E6%95%B0%E6%8D%AE%E6%A0%87%E5%87%86%E5%8C%96%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93data-normalization/

    2.模型设计

    任务类型

           分类:表情分类,属于什么种类,人群分类

           分类+回归:表情+程度,种类+信心,什么人+人数

           多目标分类:面部行为,群体行为,车流预测

    现有模型:(会议,期刊等)ICCV,ECCV,CVPR   ICML NIPS,   ACL,KDD

    局部更改-从头设计

           更改:哪里改变;新参数确定

           设计:新结构特点,为什么可行

    3.训练细节

    GPU-Batch size,是否并行

           GPU内存-Batch Size关系

    数据循环方式/平衡性考虑

           数量较少的类别,数据是否需要补偿

           从头到尾多次循环

           每次随机选取部分数据

    网络深度宽度确定

           深度与卷积核关系:第i层卷积核关注范围?层数变多,参数变少。

    损失函数设计--https://blog.csdn.net/u013498583/article/details/79542679

     http://www.elecfans.com/d/1065788.html

    分类:softmax,直接拟合

    学习率变化方式,模型各层学习率是否一致

    评价方式:准确率,F1 score,精度https://blog.csdn.net/weixin_37904412/article/details/80554199

    如何设计神经网络

    研究问题:如何进行面部识别
    识别面部微小的表情变换。

    已有的方法:
    DeepFace:需要对齐,用多个卷积核对不同的部位进行训练识别;对齐过程中会引入误差;
    Face Alignment:把人脸分成很多小网格,每个小网格对应一个卷积核。

    不足
    预处理:大量对准,对对准要求高,原始信息可能会丢失;
    卷积参数数量很大,模型收敛难度大,需要大量数据;
    模型可扩展性差,基本限于人脸计算。

    改进的想法

    不需要预处理,自动进行局部探测;
    不要将所有的区域都进行处理,更多关注在有意义的区域;
    重要区域之间不会影响削弱学习的效果。
      设计为自适应的学习。
      设计来源1—注意力网络

        Dlib或原始数据集,找到人脸关键点;
        再由人脸关键点,找到行为单元中心;
        再由中心生成注意力图。

    如何添加注意力网络:

      借助ResNet的思想,在普通的网络结构中,加入注意力网络。

    设计来源2—局部学习网络

      针对不同的区域进行针对性学习,不同区域的学习不同,对区域的分布能够自动适应。

    作用

           无需提前进行面部对准就可以对面部行为识别

           脸部各个行为单元局部针对学习,局部信息可以单独用于某个行为单元识别

           根据控制肌肉的分布以及人脸特征点检测结果确定区域,更具有合理性以及可操作性

  • 相关阅读:
    IDEA安装及破解永久版教程————鹏鹏
    Hive(2)-Hive的安装,使用Mysql替换derby,以及一丢丢基本的HQL
    Hive(1)-基本概念
    ZooKeeper(3)-内部原理
    Hadoop(25)-高可用集群配置,HDFS-HA和YARN-HA
    ZooKeeper(2)-安装和配置
    ZooKeeper(1)-入门
    Hadoop(24)-Hadoop优化
    Hadoop(23)-Yarn资源调度器
    Hadoop(22)-Hadoop数据压缩
  • 原文地址:https://www.cnblogs.com/yang901112/p/11869482.html
Copyright © 2011-2022 走看看