参考:https://zhuanlan.zhihu.com/p/36245761
本文主要解决无限制场景下的微小人脸检测问题,tiny face指尺寸小,分辨率低,模糊并缺乏必要信息的人脸patch,tiny face检测问题如下图所示。通过利用GAN模型对tiny face进行高分辨和去模糊的人脸生成,在通过判别器来进行识别。
生成网络包含 :
super-resolving(超分辨率重建):
Prob : 分辨率低 algorithm:SR-GAN
refining (精炼) :
Prob : 人脸模糊 algorithm:cycle-GAN
整体网络结构主要包括MB-FCN和GAN两部分,如下图所示。
MB-FCN detector检测器
用于初步检测,训练时为GAN网络提供样本,测试时为GAN提供ROI(Region of Interest)。
(ROI Pooling是针对RoIs的Pooling,其特点是输入特征图尺寸不固定,但是输出特征图尺寸固定。
在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs)
GAN网络使用生成器和判别器构成。
Generator Network 生成器网络:
由两个sub-network构成,一个是up-sample sub-network,另一个是refinement sub-network,其目的是生成高分辨率和去模糊的人脸patch。
- up-sample sub-network (SR超分辨率重建) :
SR超分辨率重建,由于tiny face 缺乏细节信息和重建误差MSE loss的影响(保留低频信息,丢失高频信息,这是由误差函数导致的),生成的超分辨人脸往往比较模糊。其中up-sample sub-network中有两个de-conv layer用来做上采样,使分辨率提升4倍。 - refinement sub-network(去模糊)
需要设计refinement sub-network来去除模糊现象。refinement sub-network中除了最后一层,其余每个conv之后都有BN和Relu。
Discriminator Network 判别器网络 :
有两个判别任务,一个是人脸是否是高分辨,另一个是patch是否是人脸。
判别网络使用VGG作为backbone,同时 去除conv5之后的max-pooling,替换全连接层fc6,fc7,fc8为两个并行的fc_GAN和fc_clc, 网络结构参数如下图所示。
Loss function
网络结构的多任务学习通过混合多个loss来实现。
整体loss主要分为三个部分:
- pixel-wise loss (图像SR超分辨重构误差)
生成网络的输入是tiny face加上随机noise,该MSE loss(均方误)是强制使生成人脸逼近高分辨人脸,公式如下所示。G1表示up-sample sub-network,G2表示refinement sub-network。 - adversarial loss (GAN网络误差 )
生成网络的损失定义为如下公式,该loss引导图像生成尽可能多含有高频信息。 - classification loss(分类误差)
该loss是判别器的损失函数,为了区分人脸与非人脸,人脸样本主要包括高分辨人脸和有生成器生成的低分辨人脸。该loss可以使生成网络重建image更sharper。
Objective function
将以上三个loss合并,可以得到整体目标函数,如下公式所示。
考虑到生成网络和监督网络的优化,可以修改上述loss,分为生成网络G的loss和监督网络D的loss,如下图所示。
来源:CSDN
作者:熊熊的小心心
链接:https://blog.csdn.net/Trance95/article/details/104640479