点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

近年来,对象检测引起了广泛的关注。从智能手机到交通监控,目标检测已遍及每个领域。时间和准确性是对象检测中的关键约束。目标检测算法的成功取决于其特征表示技术和学习算法,后者仅关注图像的关键部分。在本文中,我们将研究一种技术“使用简单特征的增强级联进行快速对象检测”,在OpenCV级联分类器中使用以及研究级联分类器功能的用法。

图像表示技术

图像由像素组成,像素操作成本很高。因此,我们需要更好的图像表示。

1.两个矩形特征:

甲二矩形特征计算两个矩形区域内的像素的总和之间的差。这些区域具有相同的大小和形状,并且在水平或垂直方向上相邻。上图中的A和B是示例。

2.三个矩形特征:

甲三矩形特征计算在一个中心的矩形从总和中减去2米外面的矩形内的总和。上图中的C是三边形特征类型。

3.四个矩形特征:

一个四矩形特征计算对角对矩形之间的区别。上图中的D是示例。

位置x,y处的积分图像包含x,y(含)以上和左侧的像素之和:

ii(x,y)是积分图像,I(x,y)是原始图像。

使用以下重复对:

s(x,y)是累积行总和。s(x,-1)= 0且ii(-1,y)=0。使用积分图像,可以用较少的引用获得任何矩形和。这是示例:

矩形D中像素的总和只能使用四个数组引用来计算。位置1处的积分图像的值是矩形A中像素的总和。位置2处的值为A + B,位置3处的值为A + C,位置4处的值为A + B + C + D。D内的总和可以计算为4 + 1-(2 + 3)。

同样,可以在六个数组引用中计算两个矩形特征,对于三个矩形特征,可以计算八个,对于四个矩形特征,则可以计算九个。这些矩形的图像表示为有效学习提供了足够的对象信息。

AdaBoost用于分类器学习

每个图像子窗口有超过180,000个矩形要素,其数量远大于像素数。即使可以非常有效地计算每个功能,但计算完整的集合也很昂贵。弱学习算法用于选择最能区分正例和负例的单个矩形特征。对于每个特征,弱学习者确定最佳阈值分类函数,以使最少数量的示例被错误分类。

在输入图像上移动一个窗口,并为图像的每个子部分计算Haar特征。从分类函数中学习到的阈值将对象和非对象分开。没有任何一个功能可以执行错误率低的分类任务。描述一个对象需要大量特征。通过对弱学习者做出的决策进行加权平均,可以获得准确的分类器。

注意级联

级联的分类器用于提高检测性能,同时从根本上减少计算时间。

图像的所有部分对检测物体都不有用。因此,消除这些负样本可减少计算时间。从上图可以看出,级联分类器有很多阶段。每个阶段都包含根据上一节中提到的增强算法训练的分类器。

窗口将在图像的区域上滑动,这些区域在初始阶段将被分类为正或负。如果该区域标记为负,则窗口将滑动到下一个区域。如果为正,则分类器将进入下一阶段。如果标签在最后阶段为正,则找到对象,通过消除负样本减少了计算时间。

Haar级联分类器的实现

import cv2face_classifier = cv2.CascadeClassifier('haarcascade_frontalface_alt_tree.xml')

加载图像并应用级联分类器。

img=cv2.imread("wp4419229.jpg")
faces = face_classifier.detectMultiScale(img, 1.001, 4)

现在使用“面”在对象上绘制矩形。

if faces is ():print("No faces found")
for (x,y,w,h) in faces:cv2.rectangle(resized, (x,y), (x+w,y+h), (127,0,255), 2)print("reached")cv2.imshow('image',resized)cv2.waitKey(0)

detectMultiScale函数的参数

第一个参数是图像,第二个参数是缩放因子,第三个参数是最小邻居数。Haar级联分类器在滑动窗口协议上运行,并使用缩放因子。目标窗口以最小大小开始,并且在测试了该大小的所有窗口之后,使用缩放因子将窗口放大,直到达到最大大小。

使用上述协议,我们将获得许多对单个面孔的响应。邻居的最小数量是较低的阈值,即,如果响应高于阈值,则该区域为有效对象,最小和最大大小都可以作为参数传递。

使用级联分类器以提高准确性

使用级联分类器,我们可以提高深度神经网络分类器(二进制或多类)的准确性。我们可以使用级联分类器来裁剪仅包含对象的图像,并将其单独传递给分类器。由于消除了图像的不必要部分,因此提高了准确性。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

基于OpenCV Haar实战级联分类器的使用相关推荐

  1. OpenCV中的级联分类器Cascade Classifier(面部识别)

    OpenCV中的级联分类器Cascade Classifier Goal In this tutorial you will learn how to: Use the CascadeClassifi ...

  2. Python+OpenCV:训练级联分类器(Cascade Classifier Training)

    Python+OpenCV:训练级联分类器(Cascade Classifier Training) Introduction Working with a boosted cascade of we ...

  3. Haar特征级联分类器的训练与检测

    Haar特征级联分类器的训练与检测 1. 样本的创建 1.1 准备正样本图片集 1.2 截取目标区域 1.3 创建正样本描述文件vec文件 1.4 准备负样本图片集 1.5 创建负样本描述文件 2. ...

  4. OpenCV系列之级联分类器训练 | 六十二

    简介 使用弱分类器的增强级联包括两个主要阶段:训练阶段和检测阶段.对象检测教程中介绍了使用基于HAAR或LBP模型的检测阶段.本文档概述了训练自己的弱分类器的级联所需的功能.当前指南将逐步完成所有不同 ...

  5. OpenCV系列之级联分类器 | 六十一

    目标 在本教程中, 我们将学习Haar级联对象检测的工作原理. 我们将使用基于Haar Feature的Cascade分类器了解人脸检测和眼睛检测的基础知识. 我们将使用cv::CascadeClas ...

  6. 基于OpenCV的实战:轮廓检测(附代码解析)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动 ...

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

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

  8. OpenCV实战5: LBP级联分类器实现人脸检测

    OpenCV中的HAAR与LBP数据 HAAR特征数据   参看 haarcascade_frontalface_alt.xml 各标签     LBP特征数据     参看 lbpcascade_f ...

  9. 【youcans 的图像处理学习课】22. Haar 级联分类器

    专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 [youcans 的图像处理学习课]22. Haar 级联分类器 3. Haar 特征及其加 ...

最新文章

  1. Redis重要文档、数据结构、操作行为
  2. 居家学习的核心操作准则:45分钟的专注
  3. openWRT自学---针对backfire版本的主要目录和文件的作用的分析整理
  4. react 交互_如何在React应用程序中跟踪用户交互
  5. 45万年薪web前端工程师,给你一条“不归路”-系统的web前端学习路线
  6. Android之——图片的内存优化
  7. 黑客第二课:脱屌第一步 —— Vim Fundamentals
  8. C#从sqlite3中读数据到DataTable中报错 :System.Data.ConstraintException:“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
  9. android 应用市场 审核速度,安卓市场上传APP软件要多长时间审核?
  10. 三国志战略版360区S4服务器合并信息,三国志战略版s3赛季服务器合并与规则一览...
  11. sys.path.append()
  12. 大数据行业六大核心发展趋势
  13. 五脏六腑在脸上的反射区图片_面部五脏反射穴位图
  14. word,添加文献脚注
  15. 点餐系统(设计模式)
  16. 教你简单4步制作“截图工具”,再也不用微信或QQ截图了
  17. 三角函数π/2转化_高中数学:三角函数知识点
  18. 绝代芳华!AI复原90年前梅兰芳:眉目传情,栩栩如生
  19. Jeecg-boot开发环境搭建(Windows版)
  20. 优惠券系统-第一章-系统设计

热门文章

  1. @程序员,如何“终身成长”与跨界?
  2. 算力超英伟达?华为推出两款“昇腾”芯片;五大AI战略正式公布
  3. 独家 | 5大冠军出炉!李开复的AI挑战赛,冠军们聊到了这么些感受
  4. 推荐好用 Spring Boot 内置工具类
  5. 全方位,多角度理解ThreadLocal
  6. 百度 71 个炸天的开源项目!你知道几个?
  7. Java开发最常犯的10个错误,打死都不要犯!
  8. Spring Cloud 中国社区一周年技术沙龙-北京站
  9. 目标检测入门和实现思路!
  10. Transformer深至1000层还能稳定训练,微软实习生一作,LSTM之父转发