02目标检测-传统检测方法

news2025/1/23 1:10:43

目录

一、目标学习的检测方法变迁及对比

二、 基于传统手工特征的检测算法的定义

三、传统主要手工特征与算法

Haar特征与 人脸检测算法 - Viola-Jones(了解)

HOG特征与 SVM 算法(了解)(行人检测、opencv实现)

SIFT特征与SIFT算法(了解)

DPM(物体检测)(了解)

四、传统目标检测算法基本流程

五、 基于传统手工特征的检测算法的问题

六、基于手工特征的传统算法的优缺点

优点:

缺点:


一、目标学习的检测方法变迁及对比

       “目标检测“是当前计算机视觉和机器学习领域的研究热点。从Viola-Jones Detector、DPM等冷兵器时代的智慧到当今RCNN、YOLO等深度学习土壤孕育下的GPU暴力美学,整个目标检测的发展可谓是计算机视觉领域的一部浓缩史。整个目标检测的发展历程已经总结在了下图中:

        可以看出,在2012年之前,在目标检测领域还是以传统手工特征的检测算法为主,但是随着卷积神经网络(CNN)在2012年的兴起,目标检测开始了在深度学习下的暴力美学。在深度学习下,目标检测的效果比传统手工特征效果好太多。直至今日,基于深度学习的检测算法依然是目标检测的主流。

    虽然深度学习算法在目标检测中比传统手工特征优秀太多,但是我依然不能忘记传统算法给我们带来的帮助,本文记录了我学习目标检测算法的开始,深入讲述一下传统算法在目标检测的原理和效果。

前置知识:

  • 特征提取过程常采用计算机视觉、模式识别中基于颜色、基于纹理、基于形状、基于语义等关于图像特征表示的方法。
  • 计算机视觉中常见的特征提取方法有底层特征、中层特征、高层特征三大类,常用前两类。

         底层特征(如颜色、纹理、形状等中层特征基本特征,一般是手工设计出来的特征)
         中层特征(基于底层特征进行特征高层特征学习和挖掘后的特征)
         高层特征(基于底层或者中层进行进行特征学习和挖掘后的特征,如人是否戴帽子)

  • 对于提取出的特征使用分类器进行分类判定

        (二分类)判定当前窗口中是否背景还是要检测的目标,
        (多分类)判断是否为背景,如果不是背景判断是哪一类。

二、 基于传统手工特征的检测算法的定义

       在目标检测算法的发展过程中基于手工特征的传统算法曾经是主流。这些传统算法通过设计和提取手工设计的特征来识别目标物体,包括 Haar 特征、HOG 特征、SIFT特征等。本文将深入探讨目标检测算法中基于手工特征的传统算法介绍其原理、优缺点以及在计算机视觉中的应用。


       基于手工特征的传统目标检测算法是一类早期的目标检测算法,它通过人工设计和提取特征来识别目标物体。这些特征通常是基于图像的局部信息,如边缘、纹理、颜色等。在特征提取的基础上,传统算法通常使用分类器或检测器来判断图像中是否存在目标物体,并给出目标的位置和大小

三、传统主要手工特征与算法

Haar特征与 人脸检测算法 - Viola-Jones(了解)

  • Harr特征提取
  • 训练人脸分类器(Adaboost算法等)
  • 滑动窗口 (问题:互动窗口的步长好大小)

       Haar 特征是一种基于图像矩阵的特征,最早应用于人脸检测领域。Viola-Jones 算法是一种基于 Haar 特征的快速人脸检测算法,它采用Adaboost 分类器来进行特征选择和级联分类。该算法在人脸检测任务中取得了显著的性能和效率。

       2004年Paul Viola和MichaelJones在CVPR上发表了一篇跨时代意义的文章《Robust Real-Time Face Detection》,后人将文章中的人脸检测算法称之为Viola-Jones(VJ)检测器。VJ检测器在17年前极为有限的计算资源下第一次实现了人脸的实时检测,速度是同期检测算法的几十甚至上百倍,极大程度地推动了人脸检测应用商业化的进程。VJ检测器的思想深刻地影响了目标检测领域至少10年的发展。

       VJ检测器采用了最传统也是最保守的目标检测手段——滑动窗口检测即在图像中的每一个尺度和每一个像素位置进行遍历,逐一判断当前窗口是否为人脸目标。这种思路看似简单,实则计算开销巨大。VJ人脸检测之所以器能够在有限的计算资源下实现实时检测,其中有三个关键要素:多尺度Haar特征的快速计算,有效的特征选择算法以及高效的多阶段处理策略

       在多尺度Harr特征快速计算方面,VJ检测器使用积分图对特征提取进行加速。积分图可以使特征计算量与窗口的尺寸无关,同时也避免了处理多尺度问题时建图像金字塔这一耗时的过程。

       在特征选择算法方面,与传统意义上的手工特征不同的是,VJ检测器中使用的Harr特征并非是人为事先设计好的。VJ检测器使用了过完备的随机Haar特征,并通过Adaboost算法从一个巨大的特征池(约180k维)中进行特征选择,选取出对于人脸检测最有用的极少数几种特征从而降低不必要的计算开销。

       在多阶段处理方面,作者提出了级联决策结构,并将其形象地称之为“瀑布”(Cascades)。整个检测器由多级Adaboost决策器组成,每一级决策器又由若干个弱分类决策桩(Decision Stump)组成。瀑布的核心思想是将较少的计算资源分配在背景窗口,而将较多的计算资源分配在目标窗口:如果某一级决策器将当前窗口判定为背景,则无需后续决策就可继续开始下一个窗口的判断。

Haar特征:主要是差分,有四种基本特征:

value=白 - 黑

  • 第一种表示相邻像两个素点,4个方向进行差值,0度,180度,45度,135度,
  • 第二种线性特征,宽的区域表示两个像素点。
  • 第三种中心特征,相邻区域同中心点进行差分。像LDP特征。
  • 第四种多个像素点彼此的关系。

    最终选取所抽取的直方图,差分运算本身就是在梯度求解。因此Haar特征属于文理特征。

Adaboost算法:属于机器学习中的集成学习方法。

  • 初始化样本权重w,样本权重之和为1
  • 训练弱分类器
  • 更新样本权重(分类错误的样本加大权重)
  • 循环第二步
  • 结合各个分类器结果,进行投票

滑动窗口方法:

       首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。
 

HOG特征与 SVM 算法(了解)(行人检测、opencv实现)

  • 提取HOG特征
  • 训练SVM分类器
  • 利用滑动窗口提取目标区域,进行分类判断
  • NMS
  • 输出检测结果

       HOG( Histogram of Oriented Gradients) 特征是一种描述图像局部梯度方向的特征,广泛应用于行人检测和物体识别。结合 SVM(支持向量机)分类器,HOG 特征能够在复杂场景下实现目标检测任


SIFT特征与SIFT算法(了解)

  • 灰度化 + Gamma 变换 (对值进行根号求解)
  • 计算梯度map (计算每一个点在x、y方向的梯度值,利用梯度值到梯度夹角,即得到tan = x/y,求方向角)
  • 图像划分成小的cell,统计每个cell梯度直方图
  • 多个cell组成一个block,特征归一化 (拼接)
  • 多个block串联,并归一化
  • 与量化角度和cell大小有关系(cell越小,梯度维度越大),通常维度会很大。

       SIFT( Scale-Invariant Feature Transform)特征是一种基于局部极值点和尺度空间的特征,主要用于图像匹配和目标识别。SIFT 算法通过提取关键点和特征描述子,实现对图像中目标的定位和识别。

DPM(物体检测)(了解)

DPM特征提取

  • 有符号梯度
  • 无符号梯度

      有符号:整个角度空间表示为18维向量,0 ~ 360度
      无符号:0 ~ 180度,每个cell得到27维直方图
      HOG中多维情况是采用PCA对HOG进行降维。
      DPM是采用一种逼近PCA的方法进行近似处理,就是对每一个cell所提取的27维直方图进行求和表示,水平方式累加求和4个值,垂直求和27个值,在进行拼接得到最终31维的特征向量。累加方式速度有所提升。


DPM(物体检测)

  • 计算DPM特征图
  • 计算相应图(roof filter和part filter) (就是当前区域可能为目标区域的一个值,理解为能量分布)
  • Latent SVM分类器训练
  • 检测识别

四、传统目标检测算法基本流程

流程一:

       给定一张待检测图片,将这张图片作为检测算法的输入,然后对图片采用滑动窗口方式进行进行候选框的提取,然后对每个候选框中的图像进行特征提取(特征的提取主要基于前面的前置知识中介绍方式提取),并用分类器进行特征分类的判定,得到一系列的当前检测目标的候选框,这些候选框可能存在重叠的状况,此时使用非极大值抑制算法NMS对候选框进行合并或过滤,得到的最后的候选框就是最终的检测目标即输出结果。

流程二:
       给定一张图片作为输入,采用特征提取+目标框回归的方法来进行目标区域的提取,最后同样利用NMS进行候选框的合并,最终得到目标输出结果。

注意:

  • 流程一:适用于传统的目标检测方法基于深度学习的目标检测方法
  • 流程二:适用于基于深度学习的目标检测方法

五、 基于传统手工特征的检测算法的问题

  • 1.通过传统方法设置特征,一方面很难设计,另一方面设计出来的特征往往存在各种问题,比如对于某一个特定条件不适应,即不鲁棒,效率低
  • 2.通过滑动窗口的方式来提取目标框,并对目标框进行分类判定的这种策略,在提取滑动窗口时的流程是非常繁琐耗时

六、基于手工特征的传统算法的优缺点

优点:

  • a.相对简单:基于手工特征的传统算法通常较为简单和易于实现不需要大量的训练样本
  • b.较低的计算复杂性:由于特征提取过程通常较为简单,传统算法在计算上较为高效。
  • c.可解释性强:手工特征是由人工设计的,具有较好的可解释性有助于分析算法的性能和结果

缺点:

  • a.依赖于特征设计:基于手工特征的传统算法的性能很大程度上依赖于特征设计的质量和选择。不同的任务需要不同的特征,因此需要耗费大量的人力和时间来进行特征设计和调优。
  • b.不适应复杂场景:传统算法通常对于复杂场景的处理能力较弱特别是在目标尺度、形状变化较大或存在遮挡的情况下
  • c.无法处理大规模数据:随着数据规模的增大,基于手工特征的传统算法的计算复杂性和识别性能将受到限制。

上一篇:01目标检测-问题引入

下一篇:03目标检测-传统方法与深度学习算法对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql数据库的全量与增量的备份以及恢复

目录 一、全量备份与恢复 1.全量备份 2.删掉某个数据库 3.全量恢复数据库 二、增量备份与恢复 1.查看增量是否开启,我们发现log_bin开启证明开启了 2.创建一个数据库并创建表中信息 3.插入数据 4.进行一次全量的备份 5.做完备份刷新一下数据库,…

(UI资源)4k Full Fantasy GUI + over 400 png + samples

资源包含超400个4k高清png文件 窗口资源包含:登录、角色创建、探索日志、库存、商店、设定、手工艺、NPC对话、技能、6个弹出窗口 72个独特的图标 4种颜色主题的56个图标 按钮:大按钮(3种色)、小按钮(5种颜色)、复选框和单选按钮 其他要素 使用简单的填充脚本轻松自定义健康与…

【多线程】常见的几种锁策略以及synchronized的锁策略

目录 一、乐观锁与悲观锁 二、读写锁与互斥锁 三、轻量级锁与重量级锁 四、自旋锁与挂起等待锁 五、公平锁与非公平锁 六、synchronized锁策略 1、锁升级 2、锁消除 3、锁粗化 一、乐观锁与悲观锁 乐观锁与悲观锁描述了两种不同的加锁态度,乐观锁就预测锁冲…

怎么为Web服务器配置虚拟主机?【步骤演示】

在安装了Web服务器Apache后,为了更好地使用Apache,还需要学习如何对Apache进行配置。在项目开发中,经常需要配置虚拟主机和访问权限,下面对Web服务器的配置进行详细讲解。 配置虚拟主机 在默认情况下,Apache只有Chwe…

Detectron2 安装踩坑

在服务器上安装Detectron2: 设备:NVIDIA GeForce RTX 3090 显卡驱动和cuda: 安装detectron2时,报错为: Installing collected packages: detectron2Running setup.py develop for detectron2error: subprocess-exited…

智能博弈技术军事应用展望

源自:指挥与控制学院 作者:马悦 吴琳 郭圣明 摘 要 为利用智能技术解决现代战争中的意图判断、威胁评估与指挥控制, 提高军事决策水平, 将军事问题转化为博弈问题, 综合利用博弈论和人工智能(artificial intelligence, AI&#xff…

【Python 实战】---- 实现批量图片的切割

1. 需求场景 在实际开发中,我们会遇到一种很无聊,但是又必须实现的需求,就是比如协议、大量的宣传页面、大量的静态介绍页面、或者大量静态页面,但是页面高度很高,甚至高度可能会达到50000px,但是为了渲染…

手动开发-实现SpringMVC底层机制--小试牛刀

文章目录 前端控制器Controller注解RequestMapping注解自定义容器LingWebApplicationContext设计handlerList完成分发请求Service注解和AutoWired注解RequestParam注解完整代码 在这里说的底层机制的实现主要是指:前端控制器、Controller、Service注入容器、对象自动…

对话式人工智能的数据采集方案

基于噪声数据训练对话式人工智能 聊天机器人、虚拟助手、机器人等对话式人工智能 (Conversational AI Agents ) 在我们的日常生活中已随处可见。许多企业希望以更低的成本增强与客户之间的互动,并为此在该领域进行大量投资。大量数据表明,对话式人工智能…

泛型工具类型和操作符

前言 TypeScript 内置了一些常用的工具类型。 PartialRequiredOmitPick.... 操作符 typeof typeof 操作符可以用来获取一个变量声明或对象的类型 const p {x:2,y:cm} let g:typeof p {x:3,y:ff} 这里g需要满足: 有x属性且值是number类型 有y属性且值是string类型…

海鲜进口一站式数字化管理,提高工作效率

2022年,中国水产品进口国top10有:厄瓜多尔(主要品种为白虾、剑鱼、沙丁鱼、金枪鱼等)、俄罗斯(主要品种为鳕鱼、鲑鱼、鲱鱼等)、越南(主要品种为巴沙鱼、冻虾等)、印度(主…

认识HTTP请求

要分析HTTP请求和响应必然少不了抓包工具,关于抓包工具的设置和下载推荐看抓包工具Fiddler的下载与设置 通过抓包得到的一个HTTP请求 HTTP请求的格式 结构分析 一.请求行 1.post是方法,可以表示一条HTTP请求要进行的操作是什么,post通常表示…

使用终端MobaXterm连接Centos

1. 下载MobaXterm 官网: https://mobaxterm.mobatek.net/download.html 2. MobaXterm连接Linux 1 、查看刚才安装的 Linux 的 IP 地址 2、连接 3. Linux自带了JRE 由于javac指令不能运行,所以Linux只自带了JRE!!!

【C++】- set和map的具体使用(multiset和multimap的介绍)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

error:Failed building wheel for XXX

解决方案适用于大多数的pip 安装时出现的Failed building wheel for XXX 出现问题 按以往快速安装包的经验,第一反应当然是使用简单又快捷的terminal命令加上镜像,如下: pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple结…

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程 一、群晖套件中下载Cloud Sync 二、同步到百度云盘 打开Cloud Sync,点击左上角的号,云供应商选择百度云。 这里可以选择双向备份,也可以只上穿到百度云的仅上传本地更改。因为百…

D盘无法格式化?3个方法!轻松解决问题!

“我的电脑d盘好像中病毒了,我想将它格式化但是每次操作都显示d盘无法格式化。这是为什么呢?我应该怎么解决?” 有时候,我们的电脑可能会出现一些问题,导致我们不得不将某些磁盘进行格式化操作。这时候问题就出现了。有…

CSP 202005-1 重复局面

题目背景 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用大小为 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 k、q、…

Polarion导入需求(Word)

简介 将需求文档导入Polarion并实现自动创建工作项具有多个优势,这些优势有助于提高项目管理和协作的效率,以下是一些主要的优势点:减少手动工作: 自动创建工作项可以显著减少手动数据输入的工作量。不再需要手动逐一创建每个工作…

聚类-kmeans

聚类算法是无监督学习算法,指定将数据分成k个簇。然后通过每个点到各个簇的中心的欧氏距离来分类。 kmeans本身会陷入局部最小值的状况,二分kmeans可以解决这一点。 二分kmeans是遍历所有的簇,将其分成2个,比较哪一个分裂结果更…