如何在浏览器中运行深度网络
本教程将向我们展示如何使用 OpenCV.js 直接在浏览器中运行深度学习模型。本教程引用了一个人脸检测与人脸识别模型流水线的示例。
人脸检测网络以 BGR 图像作为输入,并产生一组可能包含人脸的边界框。我们所要做的,仅仅是选出那些具有较高置信度的边界框。
该网络名为 OpenFace(项目地址 https://github.com/cmusatyalab/openface)。
人脸识别模型接收大小为 96x96 的 RGB 人脸图像。随后它返回一个 128 维的单位向量,将输入人脸表示为单位多维球面上的一个点。因此,两张人脸之间的差异就是两个输出向量之间的夹角。
整个示例是一个 HTML 页面,其中包含使用 OpenCV.js 功能的 JavaScript 代码。你可以在下方看到该页面的嵌入内容。按 Start 按钮开始演示。按 Add a person 为一个被识别为未知的人命名。接下来我们将讨论代码的主要部分。
@htmlinclude js_face_recognition.html
-
运行人脸检测网络,检测输入图像中的人脸。 你可以调整输入 blob 的大小,以在检测质量和效率之间取得平衡。输入 blob 越大,能检测到的人脸就越小。
-
运行人脸识别网络,根据输入的人脸图像得到
128维单位特征向量。 -
执行识别。 将新的特征向量与已注册的特征向量进行匹配。返回匹配度最高的人的姓名。
-
主循环。 我们应用程序的主循环从摄像头接收帧,并对帧上检测到的每一张人脸进行识别。我们在 OpenCV.js 初始化完成且深度学习模型下载完毕后,仅启动该函数一次。