/FaceKeyPointTrainDataProcessing

本工程代码用于批量实现公开人脸300w/lfpw/afw/helen人脸68个关键点检测训练数据的处理与增强操作,方便后续的训练工作

Primary LanguagePython

FaceKeyPointTrainDataProcessing

本工程所有代码主要用于批量实现公开人脸300w/lfpw/afw/helen人脸68个关键点检测训练数据的处理与增强操作,方便后续的训练工作

运行环境:

IDE:Pycharm
依赖库:Python3.6.3 Pillow matplotlib numpy opencv-python

数据整理主要分为三个步骤:

1、训练数据下载

地址:

其中原始数据里已包含了图片数据和对应的关键点位置标签数据

2、原数据扩展

2.1 旋转变换

详见img_transformations.py
包括图片几何旋转与关键点坐标标签对应变换,其中旋转中心为图片中心,旋转角度以5为步长从-30到+30角度数

2.2 遮挡变换

详见img_transformations.py
遮挡部分必须在人脸区域以内,遮挡占比为20%,遮挡形状为三角形、正方形、圆形,遮挡颜色随机

2.3 估计姿态角度

详见face_attitude.py
这部分计算主要是根据opencv库中Camera标准姿态映射和选取68个关键点中的14个进行欧拉角的计算所得,该方法主要适用于计算正常表情的人脸姿态角,但对于夸张表情人脸的姿态估计偏差较大

2.4 截取人脸框数据

详见getFaceBox.py
主要根据关键点最值坐标,人脸框宽高为最值坐标差值的1.2倍,人脸框图片大小可根据训练模型输入来确定

2.5 人脸属性标注

详见autoMarkTools.py
该部分参数需要手动进行判断与标注,作为模型辅助训练的参考,针对一些异常人脸的判别和特征学习,相关属性需要根据实际需要来定义,一般为某种状态的真假1或0

3、数据合并

详见annotations.py
该部分主要对每张图片的所有标签进行整合处理,标准格式是一行文本为以空格为间隔的一系列标签:
1列:图片路径;2-137列:关键点xy坐标;138-143列:属性标注;144-146:姿态标注