FaceKeyPointTrainDataProcessing 本工程所有代码主要用于批量实现公开人脸300w/lfpw/afw/helen人脸68个关键点检测训练数据的处理与增强操作,方便后续的训练工作 运行环境: IDE:Pycharm 依赖库:Python3.6.3 Pillow matplotlib numpy opencv-python 数据整理主要分为三个步骤: 1、训练数据下载 地址: https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/ 其中原始数据里已包含了图片数据和对应的关键点位置标签数据 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:姿态标注