如果你买了一个低配ECS服务器,1~2G内存这种配置,想在上面部署一个在线的人脸识别或物体检测推理服务。最快的方式当然是用node或python等部署一个Web服务,用Pytorch,tensorflow等作为深度推理模型的引擎,然而等你都准备好了,你会沮丧的发现,你得到的总是process killed.
谁叫你没钱呢,租不起专用的机器学习服务器,紧巴巴的资源是经不起Pytorch,tensorflow等框架折腾的。
但是理论上1G内存对于人脸识别等也够啊,虽然不是很宽裕。那么只有用C/C++来实现这个在线服务了,包括web和DNN引擎,一点点抠。
实现功能
人脸识别和物体检测, (如果没有识别出人脸,则去检测物体)
人脸识别使用 dlib的预训练模型, 物体检测采用 Yolo3 基于coco的预训练模型
用dlib库实现yolo3模型
Yolo3的c (darknet)实现,对于CPU的计算没有优化,只是一个参考。而 dlib库对于CPU可以 有avx, mkl和openblas等方式优化,在intel cpu上优化还是相当可观的的,至少有3~5倍的提升。因此,不打算直接采用darknet的代码,而是用dlib的库来实现计算。具体的各层的计算方式如下: