GNAP(用于mobilefacenet++)
结构:
如果特征维度>512,Conv(1x1)+Batchnorm+Relu
然后Batchnorm+算法[1]+Global Avr Pooling
如果特征维度<512,Batchnorm+FC,否则Faltten
然后Batchnorm
batchnorm的作用是改变输入的分布,尽可能满足正太分布,避免进入激活函数的饱和区,一般在激活层前面。
GNAP优点
对于large pose face,landmark通常检测不够准确,这对于后续的人脸识别工作产生不好的影响,权重单元通常会有一个偏移量。
假设最后一个feature map为3x3,(1,1)这个点(假设是鼻子)是应该主要学习的特征点,该点的权重应该最大(为1),其他8个点则应该很小(为0),如果一些训练样本的landmark不够准确,鼻子的位置发生偏移,如偏移到(2,1)或者(1,2)等,在学习这些样本时,(2,1)或者(1,2)会得到一些权重,而不是理想中的0,而(1,1)该点的权重也不再是1,可能是0.9,这样特征学习的位置会发生偏移。
同时,由于fc层不能保持空间对称性(所有参数都是独立的,不像卷积层对于每个单元学习同样的特征),用fc层直接映射到全局特征,每个特征单元对应的权值也就是错误的(有偏移的)。GNAP块设计为在不丢失空间对称性的情况下,为不同空间位置的局部特征提供动态权重,在较低的fpr下,大大提高了基模型的姿态鲁棒性
计算方法
对于输入Fmxnxc,如F7x7x512,计算每个单元512个通道的平方和(L2范数)||Fi,j||,然后求7x7个范数的平均值||F||mean,reweight之后的feature map为||F||mean/||Fi,j||*Fi,j,c