MTCCNN人脸侦测(Pytorch实现)

人脸侦测(MTCNN实现)

MTCNN思想

MTCCNN人脸侦测(Pytorch实现)
MTCCNN人脸侦测(Pytorch实现)

网络结构(三级级联神经网络)

第一层网络:P网络
MTCCNN人脸侦测(Pytorch实现)
设计特点:1、全连接层是为了限制输入图片的大小
2、池化层多加了一层一方面是为了提取更加丰富的人物轮廓特征信息,另一方面则是为了减少运
算的参数量
3、输入图片扩大了一倍是因为多加了一层池化,因此要让输入的信息量足够大
4、五层网络,训练速度最慢,但精度最高
第二层网络:R网络
MTCCNN人脸侦测(Pytorch实现)
设计特点:1、全连接层是为了限制输入图片的大小
2、池化层多加了一层一方面是为了提取更加丰富的人物轮廓特征信息,另一方面则是为了减少运
算的参数量
3、输入图片扩大了一倍是因为多加了一层池化,因此要让输入的信息量足够大
4、四层网络,训练速度较慢,但精度较高
第二层网络:O网络**
MTCCNN人脸侦测(Pytorch实现)

数据集和标签制作

数据集制作
MTCCNN人脸侦测(Pytorch实现)
IOU的计算(代码实现:https://blog.****.net/qq_39086406/article/details/103183879)
1、IOU=交集面积/并集面积
2、交集面积计算方法:假设矩形A:[x1,y1,x2,y2],矩形B:[x3,y3,x4,y4],则交集C:[Max(x1,x3),Max(y1,y3),Min(x2,x4),Min(y2,y4)],Sj=max(0,x2-x1)*max(y2-y1)
3、并集面积=两个矩形面积之和-交集面积
MTCCNN人脸侦测(Pytorch实现)
标签制作
MTCCNN人脸侦测(Pytorch实现)
**代码实现:**https://blog.****.net/qq_39086406/article/details/103183820

网络训练

训练注意要点:
1、由于训练时三个网络互不相关,因此三个网络可以同时训练
2、对于置信度的损失函数选用BCELoss,对于偏移量的损失函数选用MSELoss
3、部分样本不参与置信度损失的计算
4、负样本不参与偏移量损失的计算
**代码实现:**https://blog.****.net/qq_39086406/article/details/103183782

网络测试(使用)

测试流程图
MTCCNN人脸侦测(Pytorch实现)
图像金字塔:做图像金字塔的目的是为了适应不同大小人脸尺寸的图片,因为扫描框是12x12固定不变的
NMS(非极大值抑制):做NMS的原因是因为每个网络输出的同一张人脸的框可能有很多个,而我们只需要置
信度最大的框(代码实现:https://blog.****.net/qq_39086406/article/details/103183879)
代码实现:https://blog.****.net/qq_39086406/article/details/103183782

效果展示

MTCCNN人脸侦测(Pytorch实现)
MTCCNN人脸侦测(Pytorch实现)
召回率:97.56% 精确度:98.23%