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