1.数据来源
现有数据集的子集、网络采集、现有数据人工标注。
现有数据:http://deeplearning.net/datasets
2.数据扩充
原始数据切割、噪声颜色等像素变化、旋转平移等姿态变化。
图像效果算子:
效果卷积核:
F1 = fspecial('disk',1);
F2 = fspecial('average',4);
F3 = fspecial('gaussian',3);
F4 = fspecial('gaussian',4);
F5 = fspecial('unsharp');
F6 = fspecial('motion',7,0.75*pi);
F7 = fspecial('motion',5,0);
F8 = fspecial('motion',5,pi/2);
F9 = fspecial('motion',6,pi);
F10 = [0 0 0; 0 1 0; 0 0 0];
vfilter = {F1, F3, F5, F6, F9, F10};
旋转平移R,T
vTrans = {};
t1 = maketform('affine',[1 0 2*f; 0 1 2*f; 0 0 1]');
t2 = maketform('affine',[0.96 0.1 0; -0.1 0.96 0; 0 0 1]');
t3 = maketform('affine',[-1 0 0; 0 1 0; w1 0 1]');
t4 = maketform('affine',[0.97 -0.02 0; 0.02 0.97 0; 0 0 1]');
t5 = maketform('affine',[1 0 0; 0 1 0; 0 0 1]');
t6 = maketform('affine',[1.04 -0.1 0; 0.1 1.04 0; 0 0 1]');
t7 = maketform('affine',[1.03 0.02 0; -0.02 1.03 0; 0 0 1]');
vTrans = {t1, t2, t3, t5, t6};
3.数据规范
均值处理、归一化、大小调整。
任务类型
1.GPU-Batch size ,是否并行
GPU内存-Batch Size关系,Batch Size在实验的过程中,如果设置不合理,就可能会报错。
2.数据循环方式/平衡性考虑
3.网络深度宽度确定
深度与卷积核关系:第 i 层卷积核关注范围?
4.损失函数设计
Softmax、直接拟合
5.学习率变化方式,模型各层学习率是否一致
6.评价方式:准确率,F1 score
F1 score
:
迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。
问题: ImageNet上亿参数,数据量百万,是不是参数多的模型都需要大量数据?
Answer: 并不一定,需要看所需训练模型的大小,是否是训练模型的一部分参数,还是需要训练全部的参数。
1.不同数据处理
2.学习率的处理
识别面部微小的表情变换。
DeepFace:需要对齐,用多个卷积核对不同的部位进行训练识别;对齐过程中会引入误差;
Face Alignment:把人脸分成很多小网格,每个小网格对应一个卷积核。
如何添加注意力网络:
针对不同的区域进行针对性学习,不同区域的学习不同,对区域的分布能够自动适应。
code
: