1.项目介绍
1.1 项目简介
决策树在计算机视觉领域的应用广泛且多样,主要因为它能够处理复杂的数据结构,并提供易于解释的决策过程。在当今数字化的世界中,图像识别技术变得日益重要,广泛应用于自动驾驶、医疗诊断和安全监控等领域,帮助机器理解图像内容并执行特定任务。
在实际应用中,决策树通常与其他算法结合使用,如深度学习网络,以充分发挥各自的优点,从而提高整体的准确性和鲁棒性。例如,可以先使用深度学习模型从图像中提取高级特征,然后再用决策树进行高效的分类决策。这种方法结合了深度学习的特征学习能力和决策树的快速决策优势。
本项目利用Mind+的AI工具库中的--决策树分类器,构建了一个端到端的图像分类系统,包含模型训练和实时分类两个阶段。同时,结合HOG特征和颜色特征提取技术,开发了一个高效的鸟类图像识别系统,旨在识别特定目标(如鸟类),并在摄像头画面中实时展示识别结果。
1.2 项目效果视频
2.AI知识介绍
2.1 决策树
决策树是一种基于数据进行决策的简单方法,它通过一系列的判断规则将数据集分成不同的类别,顾名思义,它是一种树状结构,其中每个节点代表基于特征的决策,每个分支代表该决策判断的结果,每个叶节点代表最终预测或决策。通过训练数据构建决策树,可以对未知数据进行分类。
在图像识别领域,决策树可以根据图像的视觉特征,将其归类到不同的类别。
我们来根据下图来感受一下决策树的分类过程:

它们就像一个流程图,想象一下你想决定晚餐想吃什么,按照“你饿不饿?”作为根节点,使用决策树预测,如下图:

最终,你会达到一个点,你的最终决定是餐厅A的肯德基。
因此决策树是通过基于最具信息量的特征,将数据递归拆分成子集的过程,构建其的目标是创建一颗可以对新数据和未见过的数据做出准确预测的树,它们快速、简单且易于解释,并用于分类和回归任务。
决策树的生成原则:数据不断分裂的递归过程,每一次分裂,尽可能让类别一样的数据在树的一边,当树的叶子节点的数据都是一类的时候,则停止分类。这样分类的数据,每个节点两边的数据不同,将相同的数据分类到树的一侧,能将数据分类的更纯粹。减少树的高度和训练决策树的迭代次数。
注意:训练决策树的数据集要离散化,不然有可能造成训练出来的树有些节点的分支特别多,容易造成过拟合。
2.2 选择分类条件
熵是一种度量事件结果不确定性的指标。当我们获得某些条件信息时,事件的不确定性会降低。因此,可以利用熵的概念来评估数据集的纯度。
除了熵,数据集的纯度还可以用基尼系数(Gini index)来衡量。基尼系数反映了从数据集中随机抽取两个样本,它们类别标记不一致的概率。基尼系数越小,表示数据集的纯度越高。CART决策树算法就是采用Gini系数作为数据集划分依据。
2.3 图像识别与决策树的结合
在图像识别任务中,我们首先需要从原始图像中提取特征,如颜色、纹理、形状等。接着,我们可以使用决策树对提取的特征进行分类,从而实现图像识别。利用决策树结构清晰、易于理解和解释的优势,我们可以更好地理解图像识别过程中的决策逻辑。
2.3.1 特征提取的重要性
图像特征提取是图像识别与分析的核心步骤,它将原始像素数据转化为有助于表达图像内容的属性集合。恰当的特征提取方法能够增强分类器的区分能力,提升模型的泛化性能。图像特征可以反映图像的形状、颜色、纹理等多种属性,为计算机视觉任务提供了极为重要的信息。
2.3.2 图像特征的分类
图像特征大致可以分为以下几类:
颜色特征:颜色是图像中最直观的视觉特征,颜色特征提取通常包括颜色直方图、颜色矩等方法。
纹理特征:纹理特征描述了图像的表面质地,是局部区域内像素间关系的一种度量。常用的纹理特征提取方法有灰度共生矩阵(GLCM)、局部二值模式(LBP)等。
形状特征:形状特征与图像中物体的轮廓和几何结构有关。常用的形状特征提取方法包括傅里叶描述符、曲率尺度
空间(CSS)等。
2.3.3 图像特征提取技术
基于颜色的特征提取
颜色特征是最直接的图像描述,易于提取且对于图像的整体外观有很好的表达能力。
2.3.4 特征提取的算法实现
HOG特征提取算法
方向梯度直方图(Histogram of Oriented Gradients,HOG)是一种用于目标检测的特征描述符。它统计图像局部区域内的梯度方向直方图来表达图像的特征。
2.4 AI工具库介绍
在Mind+软件中有一个名为"决策树"AI工具库,如下图。

这个库包含了两大功能:第一部分是图像特征提取与决策树模型训练,第二部分是通过预训练模型进行图像分类。通过此库,我们通过训练数据集并应用一个决策树模型,完成一个图像分类项目。



3.软硬件环境准备
3.1软硬件器材清单

请点击此处下载Mind+:https://mindplus.cc/ ,如果你想进一步了解Mind+的功能,请点击此处链接:https://mindplus.dfrobot.com.cn/catalog
关于行空板M10相关教程,请查看此链接:https://www.unihiker.com.cn/wiki/m10/get-started
硬件连接
将USB摄像头连上行空板。

3.2软件环境准备
在Mind+软件中点击左下角'扩展库',在用户库中搜索此链接:https://gitee.com/chenqi1233/ext-sklearn-tree,搜索并点击加载'决策树分类器'库。

在加载本库时,会自动检查并下载运行库需要的python依赖包,点击'立即下载'即可。
4. 理解决策树模型的特征提取过程
4.1 训练并应用决策树模型
我们使用自定义的数据集,训练一个决策树模型,完成特定的图像分类任务。我们以鸟类识别为例,使用鸟类数据集训练一个能识别斑鸠、鸽子、乌鸫的鸟类图像识别模型。
4.2 数据集准备
要训练一个识别鸟类的模型,我们要准备一个以下格式的鸟类图片数据集(数据集见最后附录)。

Python
birds_dataset/数据集总文件夹名称
├── train/训练集,训练集是模型学习图像特征和分类的主要数据来源。
│ ├── banjiu/ 斑鸠图片
│ ├── gezi/ 鸽子图片
│ └── wudong/ 乌鸫图片
└── test/测试集,用于评估模型的性能
├── banjiu/ 斑鸠图片
├── gezi/ 鸽子图片
└── wudong/ 乌鸫图片
4.3 模型训练
将鸟类数据集文件夹拖入行空板M10的文件目录下,如下图。

我们可以使用以下训练代码加载数据集完成训练,

这段代码将完成基本的图像分类任务。可以根据需要调整决策树的参数,比如max_depth来控制树的深度,或者min_samples_split来控制节点分裂所需的最小样本数。这些调整可以帮助优化模型的表现,减少过拟合的风险。
观察终端我们能够看到,模型在验证集上的准确率达到了65%,说明最终训练的模型性能不错。

当程序运行结束后,我们能看到右侧'行空板M10中的文件'中自动生成了两个的文件,decision_tree_model.pkl和label_encoder.pkl,这就是我们训练得到的鸟类识别模型和标签编码器。

4.4 应用模型完成推理
接下来,我们就可以使用训练好的决策树模型和标签编码器完成识别任务了。我们可以使用以下代码实现图片推理,并使用以下代码使用opencv库,通过摄像头,实时显示视频画面,从视频画面中识别出现的鸟类。

点击右上角的运行,会出现一个窗口实时显示摄像头拍摄的画面,当拿起鸟类图片对准摄像头,就能看到行空板M10上出现识别的文字,终端也打印出显示识别结果和置信度。

5.资料附录
见网盘链接:https://pan.baidu.com/s/1ia4Fg0Wu8UfpUpDF5_fEBw?pwd=58bv
评论