在前面说过,树莓派上使用face_recognition是十分慢的,这里讲解一下作者自己的提速方法:
face_recognition在不同机器上识别时间对比
可能是因为我在树莓派上使用了多线程,opencv等原因树莓派上识别时间比较久,后来关闭了多线程识别时间平均为13,但是可见树莓派上识别任然是十分缓慢的。
设备 | 使用语言 | 识别时间 |
---|---|---|
台式ubuntu16.04 | python | 0.5s |
树莓派 | python | 23 |
原因分析
在前面我有整理过face_recognition的资料,上面有介绍识别的过程。这里主要分析软件上的原因,不考虑硬件。
face_recognition的识别过程和时间分析如下(本测试全在树莓派上进行):
识别步骤 | 作用 | 使用函数 | 花费时间 | 备注 |
---|---|---|---|---|
1 | 读入图片 | load_image_file | 0.02S | |
2 | 寻找人脸 | batch_face_locations | 8s | 使用hog |
3 | 提取特征 | face_encodings | 6s | |
4 | 面部比较 | compare_faces | 0.05 | 比对了15张人脸特征 |
可以看出时间主要花费在【寻找人脸】和【提取特征】这两步,所以解决方案从里面开始入手。
提速方案
这里只提出了一部分结局方案,其他的方案正在研究中,以后有其他的解决方案作者添加到这里。
- 更换【寻找人脸】方法
这里使用的HOG方法,这是face_recognitinon 里面自带的,虽然识别比较准确,但是速度相对较慢。所以这里替换成opencv自带的的HARR寻找人脸模型。
待续。。。