02深度学习目标检测方法介绍-传统

news2024/11/26 18:31:52

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

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

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

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

前置知识:

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

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

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

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

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

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


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

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

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

       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)组成。瀑布的核心思想是将较少的计算资源分配在背景窗口,而将较多的计算资源分配在目标窗口:如果某一级决策器将当前窗口判定为背景,则无需后续决策就可继续开始下一个窗口的判断。


HOG特征与 SVM 算法(了解)

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


SIFT特征与SIFT算法(了解)

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

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

流程一:

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

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

注意:

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

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

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

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

优点:

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

缺点:

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

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

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

相关文章

Python实操 PDF自动识别并提取Excel文件

最近几天,paddleOCR开发了新的功能,通过将图片中的表格提取出来,效果还不错,今天,作者按照步骤测试了一波。 首先,讲下这个工具是干什么用的:它的功能主要是针对一张完整的PDF图片,可…

EasyAVFilter代码示例之将摄像机RTSP流转成RTMP推流输出

以下是一套完整的RTSP流转RTMP推流功能的开发源码,就简简单单几行代码,就可以完成原来ffmpeg很复杂的调用流程,而且还可以集成在自己的应用程序中调用,不需要再单独一个ffmpeg的进程来调用,方法很简单: #i…

spring中的@Configuration配置类和@Component

在Spring的开发工作中,基本都会使用配置注解,尤其以Component及Configuration为主,当然在Spring中还可以使用其他的注解来标注一个类为配置类,这是广义上的配置类概念,但是这里我们只讨论Component和Configuration&…

盲盒小程序开发方案

盲盒游戏作为一种富有趣味性和收藏价的虚拟盲盒产品,近年来在游戏市场中备受关注。本文将深入探讨盲盒游戏的开发方案,从市场趋势分析、用户体验设计、商业模式选择等多个维度,为开发者提供业且有深度的思考,以帮助他们在盲盒游戏…

容器编排学习(八)卷的概述与存储卷管理

一 卷 1 容器化带来的问题 容器中的文件在磁盘上是临时存放的,这给容器中运行的重要的应用程序带来一些问题 问题1:当容器崩溃或重启的时候,kubelet 会以干净的状态(镜像的状态)重启容器,容器内的历史数据会丢失 问题2&…

upload-labs1-17思路

1 直接写一个php文件测试一下,发现弹窗不让上传 原理很简单,就是把后缀名拿出来过滤一遍,而白名单就是弹窗的这三个 解决方法: 因为这是在前端防御的一个手段,所以直接在浏览器设置上禁用js就行了: 也可…

数据结构与算法_栈

一、什么是栈 栈是一种特殊的线性表,它只允许在固定的一端进行插入和删除的操作。 对数据进行插入和删除的一端叫做栈顶,另一端是栈底。 对栈的两项操作分别叫做入栈、出栈。 入栈就是对栈进行插入操作,除此之外,入栈也叫做进…

2023挖漏洞给报酬的网站汇总,兼职副业3天收益2000

一、众测平台(国内)二、前沿漏洞研究奖励计划三、行业SRC四、企业应急响应中心-SRC-汇总 1、互联网企业2、生活服务、住宿、购物相关企业3、物流、出行、旅游4、金融相关企业5、视频游戏直播社交娱乐6、教育、问答、知识付费7、泛科技通讯物联网云服务8、安全企业9、其他 一、…

渗透测试的八大步骤

渗透测试 其实很多安全漏洞都属于Web应用漏洞,这些Web漏洞可以通过渗透测试验证。渗透测试是利用模拟黑客攻击的方式,评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析,并且有…

【深度学习】Mini-Batch梯度下降法

Mini-Batch梯度下降法 在开始Mini-Batch算法开始之前,请确保你已经掌握梯度下降的最优化算法。 在训练神经网络时,使用向量化是加速训练速度的一个重要手段,它可以避免使用显式的for循环,并且调用经过大量优化的矩阵计算函数库。…

Vulnstack红队(一)

刚开始了解内网的时候做的,可能细节有问题的地方会比较多 0 - 环境配置 Vmware虚拟网络配置 三个靶机设置 Win7(添加一张网卡) VMnet1VMnet2Win2003 VMnet1Win2008 VMnet1 攻击机(kali)设置 VMnet2 网络拓扑 kali …

当电脑遇到msvcp110.dll丢失怎么办?最新解决方法分享

在使用电脑过程中,我们经常会遇到一些系统文件丢失的问题。其中,msvcp110.dll是Windows操作系统中的一个重要的动态链接库文件,它包含了许多与C运行库有关的函数和类。当系统中缺少或损坏这个文件时,可能会导致一些应用程序无法正…

细谈left join和join

👏作者简介:大家好,我是爱发博客的嗯哼,爱好Java的小菜鸟 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝社区论坛:希望大家能加入社区共同进步…

OpenCV 10(图像轮廓)

一、图像轮廓 图像轮廓是具有相同颜色或灰度的连续点的曲线. 轮廓在形状分析和物体的检测和识别中很有用。 轮廓的作用: - 用于图形分析 - 物体的识别和检测 注意点: - 为了检测的准确性,需要先对图像进行**二值化**或**Canny操作**。 - 画轮廓时会修改输入的图像…

【轻量化网络】MobileNet系列

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, CVPR2017 论文:https://arxiv.org/abs/1704.04861 代码: 解读:【图像分类】2017-MobileNetV1 CVPR_說詤榢的博客-CSDN博客 MobileNetV2: Inverted …

web 网页开发学习 之 vsc 的快捷方式便捷使用

我们想在vsc进行网页的开发如果能够掌握一些快捷键的技巧,那么对我们开发的帮助就会很大

windows弹出交互式服务检测怎么取消

现象 解决办法 打开控制面板->管理工具->服务->Interactive Services Detection 右键属性->常规选项卡中把启动类型选为禁用 禁用之后点击应用和确定 点击停止

Games202(P6、P7)环境光照与PRT全局光照

P6、实时环境光照 RealTime Environment Mapping 不同于全局光照 (1) IBL 我的Blog: QT with OpenGL(IBL-漫反射辐照)IBL-镜面反射(预滤波篇)IBL-镜面反射(LUT篇)QT with OpenGL(IBL-镜面反…

React refers to UMD global, but the current file is a module vite初始化react项目

vite搭建react项目 初始化项目 npm create vite 在执行完上面的命令后,npm 首先会自动下载create-vite这个第三方包,然后执行这个包中的项目初始化逻辑。输入项目名称之后按下回车,此时需要选择构建的前端框架: ✔ Project na…

机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划

简介:Smooth orientation planning is benefificial for the working performance and service life of industrial robots, keeping robots from violent impacts and shocks caused by discontinuous orientation planning. Nevertheless, the popular used quate…