目录

一:OpenCV级联分类器概念

二:OpenCV级联分类器操作步骤

三:样本采集工作原理分析一

四:样本采集工作原理分析二

五:创建自己的级联分类器

5.1 创建自己的级联分类器第一步

5.2 创建自己的级联分类器第二步

5.3 创建自己的级联分类器第三步

5.4 创建自己的级联分类器第四步

5.5 创建自己的级联分类器第五步


一:OpenCV级联分类器概念

目前常用的实用性目标检测与跟踪的方式方法有以下两种

帧差法:识别原理就是基于前后两帧图像之间的差异进行对比,获取图像画面中正在运动的物体从而达到目标检测,缺点是画面中所有运动中物体都能识别,例如需要是被的是车辆运动,但是画面中风吹动树叶飘动也会被计算在甄别范围内,这就导致甄别物出现错误

CascadeClassifier级联分类器:那么如果只是识别车辆,那就需要把车辆需要相关信息全部统计出来(颜色、形状、大小等信息),存储在一个文件中。这个文件就叫级联分类器。级联分类器也是机器视觉和机器学习中非常重要的一个环节

二:OpenCV级联分类器操作步骤

正样本数据采集(需要检测的物体图片)

负样本数据采集(非检测物的图片)

调用opencv程序opencv_createsamples.exe程序实现样本数据采集

调用opencv程序opencv_traincascade.exe样本训练程序进行训练

生成级联分类器文件

三:样本采集工作原理分析一

使用基于Haar特征的级联分类器的对象检测这是一种基于机器学习的方法,其中从许多正负图像中训练级联函数;然后用于检测其他图像中的对象

在这里,我们将进行人脸检测举例说明

最初,该算法需要大量正图像(面部图像)和负图像(无面部图像)来训练分类器。

然后,我们需要从中提取特征

为此,使用下图所示的Haar功能

它们就像我们的卷积核一样,每个特征都是通过从黑色矩形下的像素总和中减去白色矩形下的像素总和而获得的单个值

四:样本采集工作原理分析二

现在,每个内核的所有可能大小和位置都用于计算许多功能。(试想一下它产生多少计算?即使是一个24x24的窗口也会产生超过160000个特征)。对于每个特征计算,我们需要找到白色和黑色矩形下的像素总和。为了解决这个问题,他们引入了整体图像。无论你的图像有多大,它都会将给定像素的计算减少到仅涉及四个像素的操作。很好,不是吗?它使事情变得更快

但是在我们计算的所有这些特征中,大多数都不相关。例如,考虑下图。第一行显示了两个良好的特征。选择的第一个特征似乎着眼于眼睛区域通常比鼻子和脸颊区域更暗的性质。选择的第二个特征依赖于眼睛比鼻梁更黑的属性。但是,将相同的窗口应用于脸颊或其他任何地方都是无关紧要的。那么,我们如何从16万多个功能中选择最佳特征?它是由Adaboost算法实现的

为此,我们将所有特征应用于所有训练图像。对于每个特征,它会找到最佳的阈值,该阈值会将人脸分为正面和负面。显然,会出现错误或分类错误。我们选择错误率最低的特征,这意味着它们是对人脸和非人脸图像进行最准确分类的特征。 (此过程并非如此简单。在开始时,每个图像的权重均相等。在每次分类后,错误分类的图像的权重都会增加。然后执行相同的过程。将计算新的错误率。还要计算新的权重。继续进行此过程,直到达到所需的精度或错误率或找到所需的功能数量为止

最终分类器是这些弱分类器的加权和

之所以称为弱分类,是因为仅凭它不能对图像进行分类,而是与其他分类一起形成强分类器该论文说,甚至200个功能都可以提供95%的准确度检测。他们的最终设置具有大约6000个功能。 (想象一下,从160000多个功能减少到6000个功能。这是很大的收获)

五:创建自己的级联分类器

5.1 创建自己的级联分类器第一步

准备好自己需要检测物的正样本图像

准备好自己需要检测物的负样本图像

如下图正样本为需要识别的车辆 

如下图,负样本是除了车辆以外的物体,如树木、行人、路牌等 ,排除识别

5.2 创建自己的级联分类器第二步

下载好OpenCV win10系统安装包

从安装包中的opencv\build\x64\vc15\bin 找到

opencv_createsamples.exe

opencv_traincascade.exe

opencv_world342.dll

将以上文件拷贝到正负样本文件路径下

5.3 创建自己的级联分类器第三步

创建正负样本的图像路径的txt文件

5.4 创建自己的级联分类器第四步

通过命令行执行命令进行样本采集生成car_samples.vec正样本矢量集文件

 opencv_createsamples.exe -info car_list.txt -vec car_samples.vec   -num 80 -w 33 -h 33
info字段填写正样本描述文件;
vec用于保存制作的正样本;
num制定正样本的数目;
w和-h分别指定正样本的宽和高

5.5 创建自己的级联分类器第五步

通过命令行执行命令进行训练生成

opencv_traincascade.exe -data data -vec car_samples.vec  -bg ng_data.txt  -numPos 80 -numNeg 240 numStages 7 -w 33 -h 33 -minHitRate 0.995 -maxFalseAlarmRate 0.45 -mode ALL
data:指定保存训练结果的文件夹;
vec:指定正样本集;
bg:指定负样本的描述文件夹;
numPos:指定每一级参与训练的正样本的数目(要小于正样本总数);
numNeg:指定每一级参与训练的负样本的数目(可以大于负样本图片的总数);
numStage:训练的级数;
w:正样本的宽;
h:正样本的高;
minHitRate:每一级需要达到的命中率(一般取值0.95-0.995);
maxFalseAlarmRate:每一级所允许的最大误检率;
mode:使用Haar-like特征时使用,可选BASIC、CORE或者ALL;
另外,还可指定以下字段:
featureType:可选HAAR或LBP,默认为HAAR;

创建自己的级联分类器第五步

效果展示如下:

最终得到的cascade.xml  即为级联分类器最终文件 

【OpenCV】 级联分类器训练模型相关推荐

  1. OpenCV级联分类器Cascade Classifier

    OpenCV级联分类器Cascade Classifier 级联分类器Cascade Classifier 目标 理论 OpenCV中的Haar级联检测 结果 级联分类器Cascade Classif ...

  2. C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码

    一.目标识别技术概述 1.摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例.深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标 ...

  3. OpenCV级联分类器训练与使用实战教程-贾志刚-专题视频课程

    OpenCV级联分类器训练与使用实战教程-1012人已学习 课程介绍         基于OpenCV新版本3.1.0详细讲述了HAAR与LBP级联分类器的基本原理与使用技巧,通过视频中人脸实时检测与 ...

  4. opencv级联分类器快速训练工具傻瓜式训练软件教程

    opencv级联分类器训练一般需要理解参数含义和基本原理,然后还要写基本转换图片和标注化数据集,今天我为大家一个小工具,只需要导入图片就可以快读训练自己的模型,而且不需要写任何代码,傻瓜式操作,不用配 ...

  5. opencv级联分类器(linux系统)

    1.概述 级联分类器这个坑早该挖的了,由于本人之前使用的是win10系统家庭版的某种关系,并没有成功训练出xml,趁着换了Linux和比赛需要就再次挖挖坑,这里用到的是Opencv自带的两个分类器来训 ...

  6. opencv 级联分类器

    转自:https://blog.csdn.net/wuxiaoyao12/article/details/39227189 好久没有来写blog了,学生生涯终结,就不好好总结了,今天把opencv里关 ...

  7. Opencv级联分类器实现人脸识别

    在本章中,我们将学习如何使用OpenCV使用系统相机捕获帧.org.opencv.videoio包的VideoCapture类包含使用相机捕获视频的类和方法.让我们一步一步学习如何捕捉帧 - 第1步: ...

  8. 基于OpenCV Haar实战级联分类器的使用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近年来,对象检测引起了广泛的关注.从智能手机到交通监控,目标检测已 ...

  9. Haar+Adaboost级联分类器分解(三):利用并查集合并检测结果窗口

    转载:http://www.aichengxu.com/view/1501260 前一篇文章分析了OpenCV级联分类器结构,即"强分类器串联,弱分类器并联",这一节我们来聊聊 ...

最新文章

  1. html流式布局怎么用,css 流式布局什么意思?
  2. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
  3. Nginx:proxy_pass、root、rewrite、alias 的使用详解
  4. 「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程
  5. POJChallengeRound2 Guideposts 【单位根反演】【快速幂】
  6. Spring MVC,Ajax和JSON第2部分–服务器端代码
  7. 近期两篇双目图像超分辨算法论文解读 |AAAI2020 SPL2020
  8. 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
  9. android 开机小企鹅_手机root是好是坏 小编来帮你分析
  10. 一个对iBatis的总结写的不错(转载)
  11. uwsgi怎么启动停止
  12. 十年PHP架构师的成长之路,程序员必备
  13. 最大似然估计和最小二乘法 含代码
  14. arccos用计算机,arccos0(arccos在线计算器)
  15. mybatis之 trim prefix=( suffix=)
  16. Facebook TSDB论文翻译
  17. 安装mysql staring server 一直停滞,乃至失败-已解决
  18. 出现Only the original thread that created a view hierarchy can touch its views.的错误
  19. 函数的引用透明性(referential transparency)
  20. FFmpeg压缩MP4视频命令

热门文章

  1. 2022淘宝双11喵果总动员怎么玩?天猫双十一喵果组队玩法攻略
  2. 相机内参模型Scaramuzza/ocam详解
  3. HBase启动遇到VM warning ignoring option PermSize=128m support was removed in 8.0
  4. Java 验证码识别之多线程打码兔
  5. Mac Mini2018 开箱(视频)全球首映!Kindle 开箱一并奉上(文字)
  6. 转:罗永浩多年前的求职信,人家牛逼是种习惯
  7. 01.Signal and Image Noise Models 信号与图像噪声模型
  8. sirs模型_数学建模常用算法——传染病模型(一)SI模型
  9. Android 语音播放Media Player
  10. kvaser怎么用?Kvaser 汽车CAN通讯协议总线分析仪新手常见入门问题解决方案教程