KNN物体分类器

机器学习ML5扩展功能中最强大的功能即为KNN分类功能,通过KNN机器学习算法可以学习各种物体然后在分类识别时逐一比较确认物体的分类,实现各种意想不到的AI功能,且此功能不用连接网络,只需要一个摄像头即可实现。

KNN算法:邻近算法,或者说K最近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法 。 —— 引自百度百科

准备工作

  • 准备一个电脑
  • 准备一个摄像头,电脑自带或USB摄像头均可
  • 其他:不需要

加载插件

  • 实时模式,点击扩展功能模块,点击机器学习(ML5),返回:

  • 加载完成,**机器学习(ML5)**积木块出现:

开始编程

使用逻辑

注意:初始化KNN及打开摄像头执行一次即可,不要多次执行。

初始化-摄像头及KNN

案例:口罩识别

喂图片数据+设置分类标签

  • 将不同的口罩分别对应不同的分类标签,学习训练多张照片,学习过程中可以移动摄像头识别多个
  • 动图如下:

训练+识别+根据结果进行控制

  • 编写程序,按下S键执行循环检测
  • 识别结果如下,发现识别效果非常准
  • 动图如下:

重复训练

  • 可以进行重复训练,或者清除数据后再训练,再次训练前停止识别。

积木说明

Block 功能说明
此积木执行之后需要重新打开摄像头才会生效。
开启摄像头,如果画面翻转可以镜像开启,部分电脑摄像头开启需要一定时间,可以在后面加几秒钟等待时间。
调用电脑摄像头拍照保存到电脑上,可以在之后导入KNN分类器中进行训练。
切换摄像头,如果没有识别到可以重启一下软件或使用电脑自带相机软件判断摄像头是否识别。
当使用舞台显示摄像头画面时通过此积木可以设置透明度让舞台背景与摄像头画面并存。
通过此积木可以开关FaceApi和PoseNet的识别结果
初始化KNN分类器,加载模型,清除已经训练后的数据,进行训练前需要先执行此模块,注意不用多次执行此模块。
从电脑摄像头拍一张照片并加入名称为tag1的分类中。同一种类别的图片加入同一个分类,不同类别的图片加入不同的分类,例如石头剪刀布的模型则所有石头加入一个分类,所有剪刀一个分类,所有布一个分类,所有背景一个分类。
从电脑文件夹中一次加载多张图片到名称为tag1的分类中。同上一个积木的用法,注意路径可以使用变量传递。
将所有分类中的图片使用KNN模型进行训练生成模型。每一次添加图片之后都需要重新训练才能生效。注意此积木执行需要较大算力,会导致电脑卡顿一段时间(电脑性能越强越流畅)。
模型训练完成之后可以通过此积木进行连续识别。注意需要先训练再识别,添加图片需要先调用此积木停止识别。
获取识别结果。注意KNN算法中,未学习的图片会返回最像的那一个结果,即使相似度只有1%,因此建议可以先学习背景以便去除干扰。
清除标签为tag1的分类中的所有图片。注意清除完需要重新训练才能获得结果。
清除整个分类器中的所有数据。注意清除完需要重新训练才能获得结果。
从电脑上加载之前导出的模型,加载完成之后无需训练,可以直接初始化然后开始识别。
将当前训练好的模型导出到电脑存储,方便后续直接使用无需训练,点击之后弹出文件路径选择框,选择路径即可保存。注意需要模型已经训练好才能导出。

常见问题FAQ

Q 学习了两个不同的人脸,为什么还是不能区分?
A KNN算法用于图片的分类,不能用于特定人脸的识别,请使用[FaceApi算法]进行人脸识别。