跳到主要内容

02-KNN特征提取

前言

KNN特征提取是中小学学习机器学习应用最广泛功能之一。通过此功能,你可以“教会”机器辨认出不同的物体主体,如可判断戴口罩与不戴口罩,进行垃圾分类等等。

积木块

序号积木块说明
1image.png使用特征提取功能,必须先使用此积木块进行初始化,否则代码报错!
2image.png当使用特征分类的时候,提示无法加载模型的时候,可能是你的显卡性能低,无法支持GPU显卡运算模式。
此时你需重启软件,先点击cpu模式,再点击初始化特征提取器
3image.png获取当前画面的特征值,每张图片(画面)都有唯一的特征值,机器学习通过自主学习特征值进行归类学习,从而判断出不同物体
4image.png为当前摄像头画面物体绑定一个标签(即你告诉它画面的物体是什么),一般配合【特征提取积木】(序号3)使用
5image.png识别当前摄像头画面物体,返回标签名,,一般配合【特征提取积木】(序号3)使用
6image.png清除录入的所有的标签,即撤销序号4的,所有标签录入
7image.png将录好的所有标签保存成一个json文件的模型库,此json即为录入机器学习的训练结果。通过保存好模型,下次无需录入添加标签
8image.png加载训练好的模型文件,用在【初始化 特征提取器】积木后,

程序——辨认不同物体

初始化特征提取器

首次使用【初始化 特征提取器】积木,会有有卡顿的感觉,触发积木块后,软件将机器学习模型载入你电脑显卡中
image.png

录入空环境

对于机器来说,没有任何物体的空环境也算是其中一种识别结果,因此需要进行录入,将其命名为“无物体”,可以微微移动摄像头,再按数字1按键,再录入多张不同的空环境照片(推荐4,5张),多个样本录入有助于提高识别率
image.png
image.png

录入识别样本1

同理录入你真正需要识别的物体,如鼠标,将标签更改为“鼠标”,按下数字键2,进行录入。再变换鼠标的角度,再按下数字2
同一个物体以不同的角度多录入几张,可增加识别的准确度。

注:
1、识别的样本需要尽量占满画面(否则机器不知道你要识别的物体是什么)
2、识别的样本背景尽量保持干净,防止其他元素的干扰
3、录入样本的背景和最终识别的样本背景尽量一致,这样有助于提高识别率
image.png
image.png   image.png

录入识别样本2

同理,按照录入样本1的方式进行录入,记得将标签对应更改为样本的名称,如下图的“手机”,也是需要变换多个角度进行录入。
image.png
image.png

训练样本

在录入样本过程中,每次的样本录入,机器学习都会重新将其加入到数据库中进行训练,此训练过程非常,一般当我们点击录入样本后,立即就训练完结果了。

识别结果

录入成功后,不断识别物体,首次运行特征识别,需要稍等几秒,后面的特征识别几乎不需要等待。
image.png

当摄像头画面没有任何样品时,识别出“无物体”
image.png

当摄像头画面出现对应样品时,煤球猫就会说出对应的它的名称
image.png
image.png

保存训练结果

为了避免每次打开程序后都需要重新录入(训练结果是默认在显卡内存中中,而不是sb3中),

可通过此积木块进行保存,可以自主命名XXX.json
image.png
点击后,模型会保存在软件内部的文件管理中(点击下载按钮,可以保存在本地)
image.png

下一次打开程序后,点击【初始化特征提取器】,再点击【KNN 加载模型】(文件名和要加载的保持一致,后缀名保持.json格式),即可免去录入的步骤,直接使用上一次保存的模型
image.png

image.png

识别本地图片(进阶)

上面的程序录入是通过摄像头实时录入的。
如果电脑无摄像头,也可通过加载本地图片进行录入,以下的积木块组合实现的效果是一致的,唯一不同第一个积木块组是从摄像头画面录入,第二个积木块组是加载D盘的照片进行录入
image.png

识别程序内部文件(进阶)

用此积木可以识别程序内部的文件无需调用摄像头。
image.png

小技巧:

可先将录入的图片名称批量更改为连续的序号名称,如:1.png、2.png等等

通过下方的程序,则可以快速进行录入,先将x变量初始化为1,当点击积木组2时,则将对应1.png的图片进行录入,且x变量+1,下一次点击x则变为2
image.png