YCRB色彩空间域助力快速完成人脸识别数据集

311 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

前言

  近期分享给大家一个快速制作人脸识别数据集制作的方法,此项目分为MATLAB版和Python版,这二者都有目录式的数据集制作和Voc数据集的制作,在这里为大家着重介绍逻辑结构设计,代码部分为会更新至仓库中,这里为将以MATLAB为蓝本为大家介绍其逻辑结构

MATLAB版本

函数整体介绍:
当你下载此项目后打开MATLAB可以发下如下结果:
MakeVocDataSet.m : 代表制作Voc数据集
MakeDataSet.m : 代表制作普通图像分类的数据集,其导入格式为目录式
FindFace.m : 回调函数(发现人脸)

函数流程讲解

FindFace.m:
此函数主要作用是检测出图像中的人脸以及人脸的坐标。
通过RGB空间域转换到ycbcr空间域,检测符合黄种人肤色的人脸部分,大家也可以根据空间域自行调节,便于自己使用。

MakeVocDataSet.m (用来创建VOC式数据集)
此函数主要作用是通过摄像头对准人脸部分进行制作数据集,核心流程步骤如下:

  1. 读取摄像头
  2. 构造True循环
  3. 获取视频画面
  4. 对视频画面进行归一化(可设置成自己需要的大小方便后面计算人脸框,避免因外接相机不同造成Bug)
  5. 调用FindFace.m 函数,返回值分别为:人脸图像、X轴坐标值、Y轴坐标值
  6. 判断返回值中是否存在人脸图像或XY值(有时候画面中没有人脸或人脸被遮挡会报错跳出TURE循环)
  7. 如果返回值判断为不存在人脸则disp(No Face)
  8. 如果返回值判断为存在人脸则执行下面的程序
  9. 给图像命名。图像全名 = 图像名称 + 图像格式
  10. 存储命名结束的图像至指定位置
  11. 给txt文件信息部分进行赋值。txtinfo = 图像全名+空格+标签+空格+Xmin+空格+Ymin+空格+Xmax+空格+Ymax
  12. 对txtinfo进行创建txt文件并存储。txt全程 = 图像名称 + .txt
  13. 结束if 和 while 1 == 1 循环

MakeDataSet.m(用来创建目录式数据集)

  1. 读取摄像头
  2. 构造True循环
  3. 获取视频画面
  4. 调用FindFace.m 函数,返回值分别为:人脸图像、X轴坐标值、Y轴坐标值
  5. 判断返回值中是否存在人脸图像或XY值(有时候画面中没有人脸或人脸被遮挡会报错跳出TURE循环)
  6. 如果返回值判断为不存在人脸则disp(No Face)
  7. 如果返回值判断为存在人脸则执行下面的程序
  8. 对获取到的人脸画面进行归一化(可设置成自己需要的大小方便训练数据的大小)
  9. 给图像命名。图像全名 = 图像名称 + 图像格式
  10. 存储命名结束的图像至指定位置
  11. 结束if 和 while 1 == 1 循环

txt2xml.py (用来将txt文件转化为xml文件)

Python版本

程序的逻辑结构可以参考MATLAB版本,在语法上二者有些许差异但是在逻辑上二者一致。