基于Dlib、OpenCV开发人脸识别程序的开发建议

前言

在去年十月的时候参加了一个小比赛,做了一个人脸识别程序并很意外地获得省里面的一等奖,视频演示链接在这里有同学想要做这方面的毕业设计or课程设计,发一篇博客来分享一下当时的开发过程。

视频演示链接

Github链接

项目简介

可以看一下我的这个博客

开发流程

一:安装Dlib的环境

这部分有点麻烦,不论是Windows还是linux,我都花了一段时间去配置,部分python依赖包需要连接外网才能顺利下载下来,这部分就靠自己摸索吧,多试试就可以成功了!

Windows版参考链接1

Linux的我找不到当时配置时参考的博客了

二:阅读Dlib库的接口、使用方法

这里我没有阅读Dlib的官方文档,我直接阅读了ageitgey的Github的源码部分、以及他的文档,参考他的源码去调用Dlib的人脸识别接口的,最终包装成自己的库。

自己封装的库文件地址,可以参考一下,里面有详尽的注释(写的不好,轻喷)

三:开发

这部分就看自己的需求啦

这里可以提一点小见解:

  • 做简单一点的人脸识别,直接用人脸检测算子+人脸编码然后对比人像编码的距离就可以了。
  • 我开发的时候是为了尽量避免角度对人脸造成的影响,就在Dlib官方的基础上加入了人脸矫正功能
    • 我做的是一个比较low、但确实有用的人脸矫正算法
    • 就是基于眼睛、鼻子上检测到的关键点,对图像进行简单的水平旋转
    • 矫正后理论上可以提升编码的稳定性(因为尽可能排除角度因素了)
    • 这部分的代码在Faces.py的330行左右
  • 对于一些人头偏移角度过大可能造成人脸检测算子检测不到的问题,因为我的使用场景特殊,是100%有人脸,所以我会在检测不到人像的时候对图像旋转几个角度再检测,我管它叫旋转鲁棒性(其实是当时看到一篇论文的题目有这个字眼,自己就搬过来用了)。至于是否采用这样的操作,可以结合自己的使用场景来决定。
posted @ 2019-03-12 10:40  FZU_ZhangYang  阅读(1023)  评论(0编辑  收藏  举报