
在 CanMV K210 入门和综合项目中,人脸属性识别实验是一个很适合拆解的 AI 视觉案例。它不是只验证摄像头能否采集画面,也不是单独运行一个模型,而是把摄像头初始化、图像采集、人脸检测、人脸裁剪、关键点定位、仿射对齐、属性分类和 LCD 显示串成一条完整流程。通过这个实验,可以理解 K210 在边缘端运行多模型视觉任务的基本方式。本实验使用 CanMV K210 运行4.10_face_attribute.py。程序先通过yolo_face_detect.kmodel检测人脸位置,再通过ld5.kmodel检测人脸 5 个关键点,随后使用仿射变换把人脸对齐到标准姿态,最后通过fac.kmodel输出性别、张嘴、微笑、眼镜等属性判断结果。LCD 画面中会叠加人脸框、关键点、属性文本和 FPS 信息,便于观察 AI 推理结果与图像画面之间的对应关系。学习目标说明理解多模型串联掌握人脸检测、关键点检测和属性分类三个模型之间的数据传递关系掌握图像采集流程使用sensor初始化摄像头,并持续获取实时图像帧理解关键点对齐通过 5 个关键点和标准人脸坐标计算仿射变换矩阵掌握属性分类输出使用属性模型输出性别、张嘴、微笑、眼镜等分类结果建立 AI 视觉调试思路从模型路径、图像输入、检测框、关键点、属性阈值和 FPS 定位问题这个实验的重点不是简单显示“识别成功”,而是理解一张摄像头图像如何经过多轮 AI 推理变成可视化结果。人脸框说明检测模型找到了目标,关键点说明模型定位到了眼睛、鼻子和嘴角位置,仿射变换让人脸输入更接近属性模型训练时的标准姿态,属性文本则是最终分类结果。需要注意,这类属性识别结果适合教学演示和算法理解,不适合作为严肃身份判断、权限判断或敏感决策依据。文章目录理论基础硬件设施软件代码扩展应用总结理论基础人脸属性识别并不是一个单独步骤,而是一条多阶段视觉处理链路。摄像头采集到的是完整画面,画面中可能有人脸、背景、光照变化和其他干扰物。程序需要先找到人脸所在位置,再把人脸区域从原图中裁剪出来。直接把裁剪结果送入属性模型并不稳定,因为人脸可能有角度偏转、距离变化或姿态差异,因此还需要通过关键点检测和仿射变换进行对齐。本实验中,第一个模型yolo_face_detect.kmodel负责人脸检测,输出人脸矩形框。第二个模型ld5.kmodel负责检测 5 个关键点,通常对应两只眼睛、鼻子和两个嘴角。程序把这些关键点和标准人脸关键点dst_point做匹配,计算出仿射变换矩阵,再用image.warp_affine_ai()把人脸区域校正成更规整的 128×128 图像。第三个模型fac.kmodel才负责属性分类。FACE_PIC_SIZE = 128表示属性模型和关键点对齐阶段使用 128×128 的人脸输入尺寸。RATIO = 0.08表示在人脸检测框基础上向外扩展一定比例,避免裁剪过紧导致额头、下巴或边缘信息丢失。KPU.sigmoid()用于把模型输出转换为 0 到 1 之间的概率值,代码中使用0.7作为属性判断阈值,超过阈值时显示正向标签,低于阈值时显示反向标签。