我这个学期给本科生二年级教授“C/C++程序设计”,期末项目是实现一个简单的CNN inference,不能使用第三方库,只能手写代码实现。很多同学的第一反应是这个太难了,其实并非如此,本文详细介绍为何不难。
我前几日写过一篇文章介绍这样设计项目的初衷《[C/C++]期末作业实现一个CNN?》。为了让同学们更好起步,在我的研究生冯远滔同学帮助下,提供了一个训练好的模型,这个简单的CNN模型结构如下图。
这个模型可以区分图像中是否有人脸,图像尺寸128x128,输出是含两个元素的向量,两个数值分别表示是背景和人脸可能性。这个模型的所有参数都以C语言静态数组方式导出到CPP文件中。模型只包含conv、relu,maxpool和fc四种层。conv只有三层,且仅有3x3一种卷积核。这些都大大简化了实现难度。当然我鼓励学生实现更通用的CNN inference。这个简单模型的所有资料可以在 https://github.com/ShiqiYu/SimpleCNNbyCPP 下载 (或左下角“原文链接”)。
这个GitHub项目中,以代