人脸检测:MTCNN的训练步骤和样本的处理

采用数据集:

人脸检测和人脸框回归:WIDER_FACE

特征点标定:Celeba

P-net:

P-net的任务是人脸检测和人脸框回归,所以该阶段仅需要使用WIDER FACE数据集。为什么没带特征点标定任务?P-net输入12*12的图像,图像太小,不适合做特征点标定,我个人理解是loss函数根据人脸带不带关键点来训练的;其实widerface和celeb都是用了,第一阶段到第三阶段都使用;

(1)取候选窗,生成训练图片

下载的原始数据集并不能直接用于训练,而是在原始图像上截取候选框图像。随机截取候选框,根据IoU计算候选框所属类别,并将其resize到12*12大小,将resize后的候选框图像保存到对应的类别文件夹下。每个类别生成一个txt文档,存放图片路径以及对应的候选框位置信息。

根据IoU计算选择的候选框是属于negative(IoU<0.3)、positive(IoU>0.65)、part(0.4<IoU<0.65),三者的比例为3:1:1。其中positive和negative用于人脸检测,positive和part用于人脸框回归。

(2)生成imdb,训练数据

使用positive和negative类别中的图像生成人脸检测所需的数据cls.imdb

使用positive和part类别中的图像生成人脸框回归所需的数据roi.imdb

(3)构建网络和solver,开始训练

(4)使用生成的训练模型,生成难例样本,继续训练下一阶段的网络;都是微调网络;

P-net网络中是没有fc层的,不需要固定大小,R-net和O-net都是有fc层的,训练的输入必须的固定的;


测试时候:

1:做不同的Scale,先第一阶段和第二阶段的输出推荐窗口,只是分类和框的回归;在第三阶段之后才开始输出定位的结果;

猜你喜欢

转载自blog.csdn.net/wfei101/article/details/80024499