介绍
本项目的来源是我选修的北航与华为合作的《AI开源计算系统前沿技术》课程大作业。课程请到华为的各位专家介绍了华为目前的AI软硬件体系,并讲解了许多人工智能领域的知识。
我的大作业选题是用轻量级的网络模型backbone,实现手机端人脸检测算法,并使用MindSpore Lite在端侧推理部署。比较遗憾的是整体项目开发进度慢于预期,加上移动端目标检测APP的源码中使用了JNI等我不熟悉的接口,最后没有实现移动端的部署,仅实现了人脸检测+关键点检测神经网络的搭建、训练和测试。
前期调研之后,我决定基于MindSpore框架实现论文《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》中的人脸识别和关键点检测网络MTCNN。该网络的结构并不复杂,包括PNet、RNet、ONet这三个结构相似的网络。由于我对Python和机器学习都是初学者,项目过程中遇到了不少问题。解决过程中有了一些经验心得,斗胆在此做些分享。
本项目中的MTCNN部分代码基于夜雨飘零1的Github项目和华为MindSpore官方文档撰写,包括数据集生成、网络结构定义、网络训练、模型测试的代码。
0 训练环境
笔记本训练环境:
- CPU:i7-11800H
- GPU:RTX 3070
- Windows10:
- CUDA11.6+cudnn8.x
- MindSpore1.7.0-CPU
- Pytorch1.11.0
- Ubuntu22.04:
- CUDA11.