人脸识别0-10:insightFace-半监督系统搭建(5)-流程总结,代码分享。

以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加微信:17575010159 相互讨论技术。
人脸识别0-00:insightFace目录:https://blog.csdn.net/weixin_43013761/article/details/99646731:
这是本人项目的源码:https://github.com/944284742/1.FaceRecognition
其中script目录下的文件为本人编写,主要用于适应自己的项目,可以查看该目录下的redeme文件。

流程前言

代码的原理,训练,以及测试,数据制作,清洗等等,都已经为大家讲解了,为了项目的方便,我编写了一套数据清洗的代码,其中包括了测试训练,半监督分类等脚本,在本人源码的script目录下,其文件如下:
人脸识别0-10:insightFace-半监督系统搭建(5)-流程总结,代码分享。_第1张图片
下面我开始为大家讲解这些脚本的使用过程。

人脸检测

假设现在你的公司,有很多图片,但是比较混杂,没有对图片的人脸进行检测,更加没有对人脸进行分类,这种情况下,这样的数据我们是没有办法直接做人脸识别的。类似于这样的照片,假设有很多张:

那么我们首先是需要把人脸全部都检测出来,在本人的源码中,其中src/align/align_my.py为本人编写的源码,在原作者的代码上的基础上进行修改的。只需要执行该脚本,指定输入输出目录,就能把所有图片的人脸全部都截取出来。本人源码已经对人脸进行了矫正。

人脸分类

假设把截取出之后,类似如下,在一个文件夹,或者多个文件之中,大小为112*112
人脸识别0-10:insightFace-半监督系统搭建(5)-流程总结,代码分享。_第2张图片
当截取出来之后,我们需要对人脸进行分类了,我们执行script/faces_classer.py文件,该文件操作的步骤比较繁琐,首先我们需要创建一个输出目录,该目录下面必须创建两子文件夹,并且需要分别放入至少一张照片,并且规则的命名,,之前的博客有详细的介绍:
人脸识别0-07:insightFace-半监督系统搭建(2)-人脸分类
这里就偷懒了,大家可以看看之前的博客。

人脸聚类清洗

对人脸进行分类之后,我们需要做去重处理,可能存在大量相似或者一样的照片,只要执行script/delete_same_face.py文件即可,其会删除相同或者类似的图片。完成之后,人脸数据清洗基本完成了,但是此时为了数据精准度,是必要人一个一个的把文件夹查看的,删除掉那些不好的数据,这个地方还是比较耗时的。

数据分割

data_preproce.py脚本有两个功能,一个是数据格式规则化,一个是数据训练测试集的分割。

主要修改的参数如下:

    # 如果设置为0代表目录进行规则化,如果设置为1代表进行数据集的分割
    parser.add_argument('--rule_divi', type=int, default=0, choices=[0,1],
                        help='specify the encoding of the images.')

    # 需要规则化,或者需要进行数据集分割的根目录
    parser.add_argument('--root',
                      default='E:/1.PaidOn/1.FaceRecognition/2.Dataset/2.PaidOnData/3.TargetData/CASIA-FaceV5/3.CASIA-FaceV5_112x112',
                      help='')

先设置为0,对目录进行规则化,如果其中有空白的目录会被打印出来,需要做清除处理。要在第二次规则化才能找到空白的文件夹。规则化之后,就要做数据分割了,把rule_divi设置为1.其会在输出目录中生成train和test两个文件夹,然后我们重新把rule_divi设置为0,分别对train和test两个文件夹进行规则化。所谓的规则会,就是把文件夹,变成如下格式:
人脸识别0-10:insightFace-半监督系统搭建(5)-流程总结,代码分享。_第3张图片
人脸识别0-10:insightFace-半监督系统搭建(5)-流程总结,代码分享。_第4张图片
每个文件夹都是存储一个人的照片。

训练测试数据制作

把数据分割之后,我们需要执行im2rec.py,mydata2pack.py与文件,分别制作训练与测试数据。制作训练数据,执行im2rec.py文件分成两个步骤,首先要再train文件下生成.lst文件,即把im2rec.py的参数

    cgroup.add_argument('--list', default=False,
                        help='If this is set im2rec will create image list(s) by traversing root folder\
        and output to <prefix>.lst.\
        Otherwise im2rec will read <prefix>.lst and create a database at <prefix>.rec')

设置维ture,这样其就会再分割数据之后的train文件夹下面生成.lst文件,生成之后,再改为false,重新执行一次,就能生成.rec文件了。

再制作.bin测试文件之前,需要生成pairs.txt,通过generate_pairs_txt.py文件。再生成该文件的前提下,再执行mydata2pack.py,这样就能够生成.bin文件了,可以参考前面的博客。

人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全:https://blog.csdn.net/weixin_43013761/article/details/99696192

人脸识别0-03:insightFace-测试集数据制作-史上最全:https://blog.csdn.net/weixin_43013761/article/details/99696326

结语

到这里为止,我们半监督系统已经搭建完成了,后续会维大家讲解人脸聚类的相关知识,敬请期待。

你可能感兴趣的:(#,人脸技术,人脸识别,人脸检测)