7. 机器学习¶
图像章节中的大多数检测器都是为某个特定目标手工编码的:用于色块跟踪的手工调校的颜色范围、用于边缘滤波的手工推导的权重图案、用于直线和圆形查找器的固定几何假设。每个算法只覆盖一类任务,要增加一个新目标就意味着要编写一个新算法。机器学习改变了这套工作流。应用程序不再是每个目标一个算法,而是加载一个训练好的模型——一组在桌面端用大量示例图像离线产生的权重——并在摄像头上运行它。运行人脸检测器的同一个引擎,也可以运行手部姿态估计器、人体姿态跟踪器、物体分类器,或任何其他模型所训练的对象。
ml 模块就是这套工具集。每一项操作都构建在单个 Model 对象之上,该对象从闪存加载模型文件,管理其量化的输入和输出张量,将每次推理派发给摄像头上合适的引擎,并将得到的张量送入一个可选的后处理器,由它将张量转换回应用程序可以据以行动的结果形式——边界框、关键点、类别,或任何该模型所对应的对象。
ml 模块
小结