阅读-MTCNN

原始数据

人脸数据集WIDER FACE,该数据集仅提供了大量的人脸边框定位数据。

如果使用wider face的 wider_face_train.mat 注解文件需要转换成txt格式的,我这里用h5py写了个 转换脚本. 这里我提供一个已经转换好的wider face注解文件 anno_store/wider_origin_anno.txt, 以下训练过程参数名--anno_file默认就是使用该转换好的注解文件。

在注解文件wider_origin_anno.txt格式如下 :

0--Parade/0_Parade_marchingband_1_849.jpg 448 329 570 478 
0--Parade/0_Parade_marchingband_1_117.jpg 68 359 118 394 226 382 282 425 295 304 339 330 353 279 393 315 884 377 947 418 818 390 853 434 727 341 764 372 598 246 631 275 740 308 785 341 

每四个数字代表该图片中的一个人脸边框定位数据x1, y1, x2, y2(x_left, y_top, x_right, y_bottom),第一张照片有只一个人脸,第二张照片有9个人脸

PNET

输入/输出

输入是12*12*3的图片,以及标签  =  样本类型0/1/-1  +   四个数字为一组的crop_box与真实box之间的偏差,成为回归框(bounding box regressiom)

negative样本:IOU < 0.3,标签为:0 0 0 0 0
positive样本:IOU > =0.65,标签为:1 0.01 0.02 0.01 0.02
part样本:0.4 <= IOU < 0.65,标签为: -1 0.03 0.04 0.03 0.04

P-Net主要用来生成一些候选框(bounding box)以及lable。在训练的时候该网络的顶部有3条支路用来分别做人脸分类、人脸框的回归和人脸关键点定位;在测试的时候这一步的输出只有N个bounding box的4个坐标信息和score,score可以看做是分类的输出(是人脸的概率),源代码中输出就是sigmoid函数值。

PNet训练数据

1、遍历数据集,在每一张照片的基础上:

  • 一张照片可能有多张人脸,所以有boxes。由一张照片裁剪出50张不同的大小为12*12的照片,如果Iou值小于0.3,就写入nagetive样本文件中。

具体方法:在一张照片的基础上随机生成crop_box,计算crop_box与boxes的Iou,然后按照crop_box的尺寸剪切原图片并缩放成12*12大小的图片,转换成12*12*3的结构,根据Iou对新生成的照片归类

2、遍历第一步中的那张照片的boxes,在每个box的基础上

  • # generate negative examples that have overlap with gt
  • 加入随机数,随机生成crop_box,之后步骤同上
  • # generate positive examples and part faces
  • 加入随机数,随机生成crop_box,计算crop_box与box之间的偏差,把这些偏差称为回归框,生成的训练数据的标注lable不仅有positive/part,还要加上回归框信息。计算rop_box与boxes的Iou进行归类。
# compute bbox reg label,其中x1,x2,y1,y2为真实的人脸坐标,x_left,x_right,y_top,y_bottom,width,height为预测的人脸坐标,
# 如果是在准备人脸和非人脸样本的时候,x_left,x_right,y_top,y_bottom,width,height就是你的滑动窗与真实人脸的IOU>0.65(根据你的定义)的滑动窗坐标。
# dface代码中box用的是正方形,即size=width=height代表box窗口的边长
offset_x1 = (x1 - x_left) / float(width)
offset_y1 = (y1 - y_top) / float(height)
offset_x2 = (x2 - x_right) / float(width)
offset_y2 = (y2 - y_bottom ) / float(height)

3、最后的输出

negative样本:IOU < 0.3,标签为:0 0 0 0 0
positive样本:IOU > =0.65,标签为:1 0.01 0.02 0.01 0.02
part样本:0.4 <= IOU < 0.65,标签为: -1 0.03 0.04 0.03 0.04

乱序合并标注文件

将三个样本文件合并到一个文件  PNET_TRAIN_IMGLIST_FILENAME = "imglist_anno_12.txt"

训练PNet模型

训练PNet的训练数据就是上面提到的PNET_TRAIN_IMGLIST_FILENAME

RNET

加载pnet模型,预测图片的bounding box信息

读取WIDER FACE数据集的标注信息

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值