CNN 卷积层定点加速优化
· 为了提升CNN前向库的卷积层运算速度,对卷积模块im2col+sgemm方法的浮点版本采用定点量化加速。使用 intel 针对 CPU 的优化 SIMD 指令集 AVX 和 AVX2 实现,完成了 int8 或是 int16 的整型数据输入,int16 类型输出,相较于 32 位的浮点数据,带宽可以提升一倍,理论上运算时间可以缩短为原来的一半。
· AVX指令集,C,C++
3D 三维姿态估计和人脸姿态对齐
· 为了解决人脸评分环节中获取各种姿态样本难度大的情况,采用3DDFA(3DDenseFaceAlignment)和3DDMM(3D Morphable Model)原理生成各个姿态的模型。3DMM 人脸建模参数估计输入 2D 原图和 68 个人脸关键点信息,通过弱投影的方法迭代优化人脸姿态、形状和表情参数,将参数输入给 3DDFA 生 成目标姿态下的 2D 图片。论文提供开源 Matlab 代码,本人负责 3DDFA 中三角剖分、目标角度人脸旋转 和纹理生产模块的 C 语言和 CUDA 代码实现,主要难点在于 GPU 并行计算时可能遇到的数据访问冲突问 题。最终完成了 Matlab 转 C 的及 CUDA 的实现,一致性验证通过,使用 GPU 运行效率达到了可以实际运用的要求。
· Matlab,CUDA,C,C++
组内人脸抓拍和人脸识别算法库的维和和迭代优化
· 负责组内人脸应用相关的检测、跟踪、评分、属性、活体、建模、比对模块的算法库维护和版本迭代,根 据同事提供的 caffemodel 编写高效率的预处理和后处理前向库,同时根据各个平台(P4、TX1、Hisi、ARM NT、MA 等)的特性进行运算资源和效率的优化,包括模型量化、资源调度评估、多线程评估、硬核计算 评估等。另外负责测试用例、验证工具、脚本的编写。
· Linux、makefile、python、shell
NT 平台人脸算法库的搭建和维护
· 独立负责NT嵌入式平台(arm+DSP)人脸应用算法库的开发和维护,搭建了一套完整的人脸检测跟踪评 分活体过滤建模比对的系统,根据应用场景设计算法流程。已交付给门禁和汽车电子产品部门使用,门禁 解锁的人脸算法耗时在 200ms 以内,人脸抓拍(检测跟踪评分过滤)的性能做到了在 12.5 帧率下可以支 持 30 个人脸检出。
· C、makefile
特征升级模型版本迭代
· 为了使不同版本的建模模型之间能够比对,训练由全连接层构成的网络,升级后的模型性能介于老版本和 新版本的识别性能之间。并且负责特征升级算法库的维护和迭代。
· Caffe、Python、C、C++
模型量化
· 独立负责人脸属性模块的量化工作,量化模型相比浮点模型具有更高的计算效率并且对一些低端的硬件平 台较为友好,基于 caffe 添加量化层,统计 blob 中的数据分布计算最优的量化位数。属性模型的输出分 支较多,会产生量化后精度下降的问题,通过不同的量化方案择优和 finetune 进一步提升性能,相比浮点 模型性能下降一个点以内。
· Caffe、fintune、Python、C++