arm : now=1.0GHz armv7l 512M RAM 16G sd card
enable_neon -mfpu=vfpv3 -march=armv7-a
detect 23.7ms(一米多近两米)(3米距离68ms)
feature point 19ms
alignment 9ms
elm-in-elm test 61ms
make.cpp为主文件
command /*.cpp封装函数 被make.cpp调用
new/*.cpp为ELM-In-ELM基本算法
elm/*.cpp 调用new 实现人脸识别
align/*.cpp 封装人脸对齐函数
native/*.cpp 封装人脸检测函数
libzmq/*.cpp 封装zmq常用函数
zmq/*.cpp 为无界面server代码 方便ARM调试
Qt/server/* 为Qt可视化界面代码 采用CMake管理 Qmake保证不能用
Android系统可视化界面代码请见另外一个仓库 AS-ELM ,使用时注意OpenCV的配置
本项目统一使用CMake管理,为了方便用户PC上使用,不再需要分模块编译,现使用当前目录下CMakeLists完成统一编译。
mkdir build;cd build;cmake ..;make -j4;
cmake -DCMAKE_BUILD_TYPE=Release ..
本项目PC版本运行在Arch系统:
OpenCV,需要手动安装OpenCV的依赖项VTK;
本项目保存了当时依赖的Dlib库的源文件,可以自行编译安装;
在ARM与可视化界面(PC上的QT,安卓上的App)的信息通讯依赖于ZeroMQ,通过Arch官方库安装;
其他依赖项没想起来欢迎反馈QAQ
new.cpp里面有对ELMs的隐含层节点数和子模型数量的设置
test.cpp里面size_box是训练图像的标准大小
nor是人脸检测的参数
训练集数量 | 测试集数量 | 直方图均衡化 | PIE样本说明 |
---|---|---|---|
3 | 21 | 0.849 | 一张正面两张不同方向光照(一半白一半黑) |
5 | 19 | 0.682 | 一张正面两个方向光线各两张(强光和弱光) |
6 | 18 | 0.667 | 两张正面、两个方向光线各两张(强光和弱光) |
4 | 20 | 0.799 | 一张正面两张不同方向光照+戴眼镜 |
3 | 21 | 0.676 | 两张不同方向光照+戴眼镜 |
2 | 22 | 0.638 | 两张不同方向光照 |
3 | 21 | 0.346 | 三张强光正脸 |
3 | 21 | 0.861 | 3张弱光正脸 |
3 | 21 | 0.732 | 3张稍微亮光正脸 |
选择训练样本同样很重要,如果有应用场景,最好在输入训练样本时控制样本条件,这样可以提高识别成功率。