前言
近期分享给大家一个快速制作人脸识别数据集制作的方法,此项目分为MATLAB版和Python版,这二者都有目录式的数据集制作和Voc数据集的制作,在这里为大家着重介绍逻辑结构设计,代码部分为会更新至仓库中,这里为将以MATLAB为蓝本为大家介绍其逻辑结构
MATLAB版本
函数整体介绍:
当你下载此项目后打开MATLAB可以发下如下结果:
MakeVocDataSet.m : 代表制作Voc数据集
MakeDataSet.m : 代表制作普通图像分类的数据集,其导入格式为目录式
FindFace.m : 回调函数(发现人脸)
函数流程讲解
FindFace.m:
此函数主要作用是检测出图像中的人脸以及人脸的坐标。
通过RGB空间域转换到ycbcr空间域,检测符合黄种人肤色的人脸部分,大家也可以根据空间域自行调节,便于自己使用。
MakeVocDataSet.m (用来创建VOC式数据集)
此函数主要作用是通过摄像头对准人脸部分进行制作数据集,核心流程步骤如下:
- 读取摄像头
- 构造True循环
- 获取视频画面
- 对视频画面进行归一化(可设置成自己需要的大小方便后面计算人脸框,避免因外接相机不同造成Bug)
- 调用FindFace.m 函数,返回值分别为:人脸图像、X轴坐标值、Y轴坐标值
- 判断返回值中是否存在人脸图像或XY值(有时候画面中没有人脸或人脸被遮挡会报错跳出TURE循环)
- 如果返回值判断为不存在人脸则disp(No Face)
- 如果返回值判断为存在人脸则执行下面的程序
- 给图像命名。图像全名 = 图像名称 + 图像格式
- 存储命名结束的图像至指定位置
- 给txt文件信息部分进行赋值。txtinfo = 图像全名+空格+标签+空格+Xmin+空格+Ymin+空格+Xmax+空格+Ymax
- 对txtinfo进行创建txt文件并存储。txt全程 = 图像名称 + .txt
- 结束if 和 while 1 == 1 循环
MakeDataSet.m(用来创建目录式数据集)
- 读取摄像头
- 构造True循环
- 获取视频画面
- 调用FindFace.m 函数,返回值分别为:人脸图像、X轴坐标值、Y轴坐标值
- 判断返回值中是否存在人脸图像或XY值(有时候画面中没有人脸或人脸被遮挡会报错跳出TURE循环)
- 如果返回值判断为不存在人脸则disp(No Face)
- 如果返回值判断为存在人脸则执行下面的程序
- 对获取到的人脸画面进行归一化(可设置成自己需要的大小方便训练数据的大小)
- 给图像命名。图像全名 = 图像名称 + 图像格式
- 存储命名结束的图像至指定位置
- 结束if 和 while 1 == 1 循环
txt2xml.py (用来将txt文件转化为xml文件)
Python版本
程序的逻辑结构可以参考MATLAB版本,在语法上二者有些许差异但是在逻辑上二者一致。