传统机器学习——级联分类器的物体识别(失败总结)

传统机器学习——级联分类器的物体识别(失败总结)

智能机器人实验室——杭州电子科技大学 Wang

本周看了部分书之后,突然来了灵感,级联分类器是否可以做常用物体检测,于是着手实验。

实验总共进行了三次,分别为:人脸及眼睛识别、带柄水杯未处理识别、带柄水杯二值化后识别。

1.人脸识别

1.1收集数据

(1)随机在一个文件夹下建立positive和negative两个数据集以及两个train和vec空文件夹,从网上找的人脸数据集,其中positive里全部为人脸图片(150+),图片大小不唯一,但是每张图片的height与width比例必须保持1:1;negative里面均为非人脸图片(200+),图片大小随机。

(2)用python编辑器分别对positive和negative的图片进行路径生成,保存为dat文件或者txt文件格式。

1.2训练模型

(1)打开cmd,进入D盘,运行D:\OpenCV-3.3.0\build\x64\vc15\bin下的opencv_createsamples,然后按照提示,依次输入所需要的指令文件,生成.vec文件保存在vec文件夹下;
在这里插入图片描述

(2)训练模型,运行D:\OpenCV-3.3.0\build\x64\vc15\bin下的opencv_traincascade,同样按照提示输入指令,进行模型训练,训练结果保存在train文件夹下,文件名为cascade.xml;
在这里插入图片描述

1.3结果

利用第二步训练得到的模型文件,进行摄像头实时人脸检测,效果不错,最关键的,实时性很好

在这里插入图片描述

2.水杯未处理识别

2.1收集数据

用一个python脚本,在网上下载了大该三百张水杯图片,负样本仍然用原来的图片;

2.2处理图片

由于网上的水杯图片参差不齐,所以需要重新裁剪,将带柄水杯抠出来,resize成格式相同的图片,最后正样本数量大概七十张(偏少),然后其他处理方式和实验一相同;

2.3训练模型

同实验一;

2.4结果

效果很差,无法识别;

3.水杯二值化识别

3.1图片处理

与实验二不同,由于我的样本背景过于复杂,于是我将所有正样本转化为二值图,这样就会出现一个很明显的水杯阴影,也就是说,我利用二值图的阈值关系,将水杯背景去除,只留下水杯图片;
在这里插入图片描述

3.2训练模型

同实验一,唯一不同的是实验时我将摄像头的输入进行了二值化;

3.3结果

在这里插入图片描述
在这里插入图片描述
上图分别为原图与二值图。效果看起来还可以,而且最重要一点,实时性很好;但是其局限性却很大;

4.分析

级联分类器作为OpenCV中一种较高级的机器学习方法,在物体检测方面的实际应用效果差强人意。由上面三个实验可以看出,级联分类在进行人脸或者眼睛的识别时效果确实不错,但是第二个实验又揭露其短板,在一个特征较多的环境中,其训练出来的模型在识别时表现出来的结果却不令人满意,究其原因在于,级联分类采用的是一种类HAAR或LBP矩阵特征进行检测,这两个特征的相似之处在于对灰度较为敏感,而且作为矩阵特征,只能对一些简单的水平、竖直结构(人的眼睛水平)有较好的识别能力,而对于复杂的物体,其识别能力很狭窄。

与此同时,级联分类对环境较为敏感,如果要进行识别,最好将背景剔除或者在一个背景较为简单的环境。

综上,级联分类器适合做一些简单环境的部分规则物体检测以及人脸识别,不适用复杂环境下的物体识别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值