当前位置:网站首页 > R语言数据分析 > 正文

pointrcnn训练自己的模型(mtcnn模型训练)



MTCNN是多任务级联CNN的人脸检测深度学习模型,该模型中综合考虑了人脸边框回归和面部关键点检测。该级联的CNN网络结构包括PNet,RNet,ONet。本文主要介绍人脸检测中常用的数据处理方法,包括Bounding Box绘制,IOU计算,滑动窗口生成,回归框偏移值计算,面部轮廓关键点以及面部轮廓关键点回归。

PNet(Propose NetWork) 用来获取面部窗口和相应的候选框的回归向量。然后采用非极大值抑制方法non-maximum suppression(NMs)对生成的面部候选框进行合并操作。PNet网络结构如下:

RNet(Refine Network)获取PNet检测出来的人脸候选框,进行网络训练,进一步矫正人脸候选框的回归向量,并同样对候选框执行非极大值抑制。RNet网络结构如下:

ONet(Output Newwork)主要生成最终的人脸回归框和面部轮廓关键点。ONet的网络结构如下所示:

本文主要介绍回归框的PNet/RNet/ONet数据预处理部分的相关算法。由于PNet的网络输入是12*12的图片,所以要对训练图片进行预处理。本文采用的数据集为WIDER FACE数据集,可以从如下地址下载:

该数据集有32,203图片并且有93,703张脸被标记,如下图所示:

首先读取标度的人脸图片数据,如下所示:

可以用PIL把图片中人脸的bounding box绘制出来,示例代码如下:

可以通过滑动窗口或者随机采样的方法获取训练数据,训练数据分为三种正样本,负样本,中间样本。其中正阳本是生成的滑动窗口和Guarant True Box的IOU大于0.65,负样本是IOU小于0.3,中间样本是IOU大于0.4小于0.65。

IOU(Intersection-Over-Union)的计算流程如下:

蓝色的框为生成的滑动窗口,红色的框为Guarant Box,其中(x, y)表示回归框的顶点坐标。IOU为两个框相交的面积除以两个框的总面积,如果IOU越大表示生成的滑动窗口和真实的窗口越接近。这样IOU的计算公式可以表示为:

IOU的计算代码如下所示:

其中box为滑动窗口,boxes为多个guarant box(一个图片可以有多个人脸,所以会有多个guarant box)。

那么怎么生成滑动窗口的图片呢?比较简单的方式是采用随机方法,如下所示:

生成12*12的滑动窗口图片示例如下所示,是一个负样本:

考虑到直接采用坐标信息进行回归框的预测,网络收敛比较慢。所以在回归框预测的时候一般采用回归框的坐标偏移进行预测,相当于归一化的一种方式。回归框的坐标偏移如下图所示:

生成滑动窗口后,对应滑动窗口和Guarant True Box的偏移值,即可算出来,如下所示:

这样生成滑动窗口的时候,对正样本及中间样本,同时保存相应的offset值,如下所示:

生成Offset示例代码如下所示,主要是随机生成一个(x,y)坐标的偏移值:

在人脸检测的时候,除了用到回归框的信息外,还会利用到人脸面膜轮廓的关键点信息,主要包括眼睛,嘴,鼻子的坐标。该训练数据可从如下地址下载到:

上述的数据集包括LFW中的5,590张图片和7,876张从网上下载下来的图片,坐标信息包括:左眼,右眼,鼻子,左嘴,右嘴。例如下面坐标对应图片为:(x1,x2,y1,y2)

Bounding Box和面部landmark生成代码如下所示:

mtcnn 模型训练 mtcnn训练数据_MTCNN

人脸的面部轮廓关键点不采用绝对坐标,同样使用的是回归值,不过该回归值对应的是Bounding Box的相对坐标,如下所示:

相应的计算公式如下所示:

对所有的landmark点计算offset后生成如下数据:

那么如何生成训练数据的面部轮廓关键点呢?生成方法类似于回归框的方式,在guarand true landmark点上加上一个随机偏移量,然后再计算offset值。示例code如下:

如果面部关键点的训练数据比较少,可以通过数据预处理的方式(比如回归框图像镜像,翻转等操作)增加landmark训练数据。

到此这篇pointrcnn训练自己的模型(mtcnn模型训练)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • treeworld破解版无限(treeagepro破解版)2025-10-28 17:27:07
  • resnet50和101哪个好(resnet50 101)2025-10-28 17:27:07
  • vbs for循环语句(vbscript for循环)2025-10-28 17:27:07
  • tornado的翻译(to odd 翻译)2025-10-28 17:27:07
  • rang me up什么意思(rang up是什么意思)2025-10-28 17:27:07
  • srore的中文翻译(sorcerer翻译)2025-10-28 17:27:07
  • third缩写(forty-third缩写)2025-10-28 17:27:07
  • strrep用法(str的用法)2025-10-28 17:27:07
  • rbac权限系统设计(rbac权限模型图)2025-10-28 17:27:07
  • orcale默认用户(oracle默认sid)2025-10-28 17:27:07
  • 全屏图片