PNet,RNet.Onet输出的都是BoundingBox的集合,每个BoundingBox包括当前左上角与右下角坐标,坐标的预测偏移量(比例),是否人脸的二分类置信度,5个landmarks的10个坐标。
BoundingBox的定义
PNet
1. 每输入一张图像,会以一个设定的放缩因子p,以{1,p,p^2,p^3,p^4...}的比例逐渐缩小,生成一个图像金字塔,最后得到的最小的图像最短边要恰大于等于12,原图尺寸越大当然金字塔层数也就越多
2. PNet是一个全卷积网络,在最后一层有两个分支,分别输出两个特征谱。
1) 特征谱1用于前后景分类,是一个(1,2,w,h)的blob,w和h的与输入图像有关,越大的图像当然w和h就越大,金字塔顶的图像是12*12,那么最后的输出特征谱恰为(1,2,1,1)。特征谱的两个通道分别对应每个特征点区域对应的感受野不是人脸和是人脸的概率
2)特征谱2用于边界框回归,是一个(1,4,w,h)的blob,w和h与特征谱1一致。4个通道的值代表每个特征点对应感受野区域的左上角右下角坐标相对人脸所在位置的偏移量
3. 利用输出的两个特征谱生成一些列可能的proposal人脸框:
1)特征谱的每个location点对应感受野即为最原始的proposal,越大的输入图像每个点的感受野反而越小,所以金字塔塔底的大尺寸输入用于检测小人脸,塔顶的小尺寸输入用于检测大人脸。
2)通过一个置信度阈值筛去低于阈值的原始proposal,通过筛选的每个location生成一个BoundingBox对象(坐标成员来自感受野的计算,偏移成员和置信度成员来自网络输出特征谱),将所有BoundingBox对象放到totalBox向量中
4. 通过非极大值抑制过滤重叠的预测人脸框
图像金字塔每张图像前传完生成边界框后都进行一次