深度学习(四)——目标分类
目标分类基本框架
数据准备
1、数据来源
数据来源主要有现有数据集的子集、网络采集以及现有数据人工标注。
2、数据扩充
通过对原始数据进行处理得到更多的数据,主要方法有原始数据切割、噪声颜色等像素变化、旋转平移等姿态变化。
- 局部切割:
- 噪声颜色、旋转平移:
3、数据规范
数据规范包括均值处理、归一化以及大小调整等。
模型设计
1、任务类型
- 分类:表情、种类、人群······
- 分类+回归:表情+程度、种类+信心、什么人+人数······
- 多目标分类:面部行为、群体行为、车流预测······
2、模型确定
- 现有模型:已有的方案能否借鉴、怎样借鉴;
- 更改:哪里改变,新参数如何确定;
- 设计:新结构特点,为什么可行。
3、训练细节
- GPU-Batch size,是否并行
- 数据循环方式/平衡性考虑
1、数量较少的类别,数据是否需要补偿
2、从头到尾多次循环
3、每次随机选取部分数据 - 网络深度宽度确定
- 损失函数设计
- 学习率变化方式,模型各层学习率是否一致
- 评价方式:准确率、F1 score
迁移学习
参数多的模型并不一定都需要大量数据,可以利用少量数据对相似的模型进行微调。
最低卷积层基本不变,中间卷积层看情况,最后全连接结构参数均变化。
如何设计神经网络
例:面部行为识别
已有方法:
不足之处:
- 预处理中大量对准,对对准要求高,原始信息可能丢失;
- 卷积参数数量很大,模型收敛难度大,需要大量数据模型;
- 可扩展性差,基本限于人脸计算。
改进:
- 不需要预处理,自动进行局部探测;
- 不要所有区域都处理,更多关注在有意义的区域;
- 重要区域之间不会影响削弱学习效果。
设计来源一——注意力网络
- Dlib(或原始数据集)找到人脸关键点;
- 人脸关键点→行为单元中心;
- 由中心生成注意力图。
设计来源二——局部学习网络
针对不同的区域进行针对性学习,对区域的分布能够自动适应。
作用:
- 无需提前进行面部对准就可以对面部行为识别;
- 脸部各个行为单元局部针对学习,局部信息可以单独用于某个行为单元识别;
- 根据控制肌肉的分布以及人脸特征点检测结果确定区域,更具有合理性以及可操作性;
总结
如何设计神经网络:
- 明确研究问题;
- 已有的解决方案特点,借鉴,改进不足;
- 突破点在哪里,还是重复就足够了;
- 想法在网络结构中实现;
- 训练结果反馈调整