cv小白慢慢爬行
2分类vs多分类
sigmoid和softmax是神经网络输出层使用的激活函数,分别用于两类判别和多类判别。
binary cross-entropy和categorical cross-entropy是相对应的损失函数。
对应的激活函数和损失函数相匹配,可以使得error propagation的时候,每个输出神经元的“误差”(损失函数对输入的导数)恰等于其输出与ground truth之差。
BN-batch_normalization
http://blog.csdn.net/shuzfan/article/details/50723877
网络训练过程中参数不断改变导致后续每一层输入的分布也发生变化,但是不可能对每一层数据都进行白化操作,计算量太大了。
但是简单的数据归一化也不行,让数据具有0均值和单位方差,在通过激活层时相当于只用了激活层中间那段线性的部分,会降低模型的表达能力。
为此,加了这样两个参数。
讲道理,BN是为了防止“梯度弥散”而设计的,在神经网络训练时遇到收敛速度很慢,或梯度爆炸等无法训练的状况时可以尝试BN来解决。另外,在一般使用情况下也可以加入BN来加快训练速度,提高模型精度。
DeepFace
人脸识别的基本流程是:detect -> aligh -> represent -> classify
这里只考虑怎么做aligh
分为如下几步:
a. 人脸检测,使用6个基点
b. 二维剪切,将人脸部分裁剪出来
c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来避免不连续
d. 将三角化后的人脸转换成3D形状
e. 三角化后的人脸变为有深度的3D三角网
f. 将三角网做偏转,使人脸的正面朝前。
g. 最后放正的人脸
h. 一个新角度的人脸(在论文中没有用到)
总体上说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。