“目标检测”任务基础认识

“目标检测”任务基础认识

1.目标检测初识

目标检测任务关注的是图片中特定目标物体位置

目标检测最终目的:检测在一个窗口中是否有物体

eg:以猫脸检测举例,当给出一张图片时,我们需要框出猫脸的位置并给出猫脸的大小,如下图所示。

2.一个检测任务包含两个子任务

  • 一个是分类任务:输出这一目标的类别信息(分类标签);
  • 另一个是定位任务:输出目标的具体位置信息(用矩形框表示,包含矩形框左上角或中间位置的x、y坐标和矩形框的宽度与高度)。

3.算法发展历程

与计算机视觉领域里大部分的算法一样,目标检测也经历了从传统的人工设计特征加浅层分类器的方案,到基于深度学习的端到端学习方案的演变。而在深度学习中,很多任务都是采用**端到端(end-to-end)**的方案,即输入一张图,输出最终想要的结果算法细节和学习过程全部交给神经网络,这一点在目标检测领域体现得非常明显。

4.目标检测步骤

不管是用清晰的分步骤处理还是用深度学习的end-to-end方法完成一个目标检测任务,一个系统一定会遵循3个步骤
在这里插入图片描述
如图5.1所示。

  1. 第一步选择检测窗口
  2. 第二步提取图像特征
  3. 第三步设计分类器

4.1检测窗口选择

  • 方法:当在不同的距离下检测不同大小的目标时,最简单也最直观的方法就是用图像金字塔+各种尺度比例的框进行暴力搜索:从左到右,从上到下滑动窗口,然后利用分类方法对目标框进行识别。
  • 问题:如图5.3所示,在一个像素点处选择了长宽比例不同的框。这种利用窗口滑动来确定候选框的方法可以实现我们的预期目标,但是不难想到,这种方法在使用过程中会产生大量的无效窗口,浪费了很多计算资源,而且无法得到精确的位置。目标检测想要得到发展,必须优化这个步骤

4.2特征提取

有了候选窗口后,需要提取图像的特征进行表达,传统的有监督方法和以CNN为代表的无监督特征学习方法都可以派上用场。

仍然以人脸检测算法为例,在传统的人脸检测算法中,有几类特征是经常被使用的。

Haar特征LBP特征HOG特征
定位是经典的V-J框架使用的基本特征是传统人脸检测算法中广泛使用的纹理特征在物体检测领域应用非常广泛
表达表征的是局部的明暗对比关系可以表达物体丰富的纹理信息
特点由于Haar 特征提取速度快,能够表达物体多个方向的边缘变化信息,并且可以利用积分图进行快速计算,因此得到了广泛应用采用中心像素和边缘像素的灰度对比,可以表达物体丰富的纹理信息,同时因为使用的是相对灰度值,因此对均匀变化的光照有很好的适应性通过对物体边缘进行直方图统计来实现编码,相对于Haar 和LBP 两个特征,HOG 的特征表达能力更强、更加通用,被广泛用于物体检测、跟踪和识别等领域
  • 除了以上常用的特征外,还有其他非常优秀的传统特征描述,包括SIFT 和SURF等,这些都是研究人员通过长时间的学术研究和实际项目验证得来的,虽然在比较简单的任务中可以取得很好的结果,但是设计成本很高
  • 传统的检测算法通过对不同的特征进行组合调优,从而增加表达能力
    • 其中以ACF为代表的行人检测方法,组合了20多种不同的传统图像特征。

4.3分类器

分类器是目标检测的最后一步,经常使用的分类器有Adaboost、SVM 和Decision Tree等。接下来对这些分类器进行简要介绍。

1. Adaboost分类器
  • Adaboost是一种迭代的分类方法,在OpenCV开源库中使用的人脸检测框架的分类器正是Adaboost 分类器
  • 核心思想:在很多情况下,一个弱分类器的精度并不高,Adaboost算法的核心思想就是在很多分类器中,自适应地挑选其中分类精度更高的弱分类器,并将其进行组合,从而实现一个更强的分类器

Eg:

目标:当我们要检测一个纯红色的物体时,它的颜色为(255,0,0),但是现在只有3个灰度级别的分类器,各自对应RGB的3种颜色。我们知道,所要检测的物体必须满足3个条件,R 通道灰度值为255,G、B的通道灰度值为0。

问题:此时,使用任何一个灰度级别的分类器都无法完成这个任务,同时会出现很多的误检。例如红色分类器,在最理想的情况下就是学习到了R 的通道必须为255,但是G、B通道学习不到,因此它会检测到1×256×256种颜色,其中,256×256-1种为误检,检测精度为1/(256×256),等于0.0000152。
解决:当我们组合3种分类器,并使其各自达到最好的学习状态时,就可以完全学习到R=255、G=0、B=0这样的特征。我们在实际使用这3个分类器的时候,可以使用串联的方法让图片依次经过3个分类器进行分类过滤,如图5.4所示。

结果:这样虽然每一个弱分类器的检测精度不到万分之一,但最终的检测精度可以是100%,这就是Adaboost算法的核心思想。
总结:Adaboost通过弱弱联合实现了强分类器,在使用的时候通常采用顺序级连的方案。

  • 在级联分类器的前端:是速度较快、性能较弱的分类器,它们可以实现将大部分负样本进行过滤
  • 在级联的后端:是速度较慢、性能较强的分类器,它们可以实现更大计算量,精度也更高的检测

在这里插入图片描述

2. SVM分类器(简略介绍)

支持向量机(Support Vector Machine,SVM)是贝尔实验室的Vapnik 等研究人员在对统计学习理论进行了三十多年研究的基础上提出来的机器学习算法,它让统计学习理论第一次对实际应用产生了重大影响,具有非常重要的意义。

SVM 是基于统计学习VC理论与结构风险极小化原理的算法,它将基于最大化间隔获得的分类超平面思想与基于核技术的方法结合在一起,通过部分数据构建模型,对新的数据进行预测并作出分类决策,表现出了很好的泛化能力

SVM还可以通过引入核函数将低维映射到高维,从而将很多线性不可分的问题转化为线性可分问题,这在图像分类领域中的应用非常广泛。以SVM 为分类器和HOG 为特征的行人检测系列算法是其中非常经典的算法

3.Decision Tree决策树

决策树是一种树形结构,每个内部节点都表示一个属性测试,每个分支都会输出测试结果,每个叶子节点代表一种类别。

Eg:以图5.6所示的二叉树为例,从树根开始分叉,区分是人脸或者非人脸,左边是人脸,右边是非人脸。当进入第一个二叉树分类器节点判断为非人脸时,则直接输出结果,结束任务;如果是人脸,则进入下一层再进行判断。二叉树通过学习每个节点的分类器来构造决策树,最终形成一个强分类器总体的思路与级联分类器非常相似

改进:为了提升决策树的能力,我们可以对决策树进行集成,也就是将其组合成随机森林。假设刚刚提到的决策树是一棵树,对于人脸检测这样的任务,分别学习10棵树,每棵树采用不同的输入或者特征,最终以10棵树的分类结果进行投票,获取多数表决的结果将作为最终的结果,这是一种非常简单但行之有效的方法。

在使用深度学习来完成各项任务尤其是参加各类比赛的时候,一定会使用不同的模型和不同的输入进行集成。例如,常见的是使用不同裁剪子区域进行预测,或者使用不同的基准模型进行预测,最后取平均概率的方法,测试结果相比之前可以得到很大的提升。

参考文献:

《深度学习之图像识别 核心算法与实战案例 (全彩版)》 言有三 著

出版社:清华大学出版社

出版时间:2023年7月第一版(第一次印刷)

ISBN:978-7-302-63527-7

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

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

相关文章

开源 - 一款可自定义的在线免杀平台|过x60、wd等

免责声明:本工具仅供安全研究和教学目的使用,用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任,且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规,并理解并同意本声明…

工作经验总结:Hex文件解析

一、Hex文件简介 由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。一般用于MCU程序烧录,可以把hex文件理解为带有地址信息的bin数据的记录集合。(注:烧录时如果使用bin文件则需要指明对应首地址的位置,而使用hex文件…

最新2024FL Studio21.2.3中文免费版数字音乐工作站(DAW)

FL Studio 21作为一款功能强大的数字音乐工作站(DAW),被广泛应用于各种音乐制作场景中。以下是一些具体的案例: FL Studio 21 Win-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55981 FL Studio 21 Mac-安装包下载如下…

<网络安全>《45 网络攻防专业课<第十一课 - NTFS/EFS/BitLocker数据加密与解密>》

1 NTFS文件系统 磁盘加密 1.1 NTFS安全简介 NTFS是Windows 2000及之后的操作系统的标准文件系统。NTFS不仅在性能上比起FAT 32强,NTFS支持的最大文件大小、最大分区大小也比FAT32大,NTFS还支持配额、安全功能。 在NTFS分区中,对于某个文件或…

一个C#开发的大小只有8KB的贪吃蛇开源游戏!

大家好,我是编程乐趣。 今天给大家推荐基于C#开发的、一个贪吃蛇开源项目,这个项目除了实现贪吃蛇的功能外,重点是讲解如何把编译后的程序,从65MB精简为8KB。 项目地址 https://github.com/MichalStrehovsky/SeeSharpSnake 编译…

Java SourceDataLine 播放音频 显示频谱

Java SourceDataLine 播放MP3音频 显示频谱 1 添加依赖2 快速傅里叶变换2.1 FFT.java2.2 Complex.java 3 音频播放3.1 Player.java3.1 XPlayer.java 4 显示频谱5 结果 项目Value音频格式 添加依赖*.wav(JDK 原生支持)*.pcm(JDK 原生支持)*.au(JDK 原生支持)*.aiff(JDK 原生支持…

vue3项目引入本地js文件,实现一个音频播放按钮

目前有一个需求就是在网页上放置一个音乐控制按钮,并且是在vue3项目里面。于是小白的我遇到了2个问题,第一个问题是如何实现没有进度条的播放按钮,这个网上有现成的代码,可以通过js代码切换不同的图片或者是别的样式,并…

SparkSQL学习02-编程入口

文章目录 1 DataFrame的构建方式方式一:JavaBean反射的方式1.1 创建Scala类1.2 创建Scala对象 方式二:动态编码的方式 2 DataSet的构建方式3 RDD和DataFrame以及DataSet之间的相互转换3.1【RDD-->DataFrame】和【RDD-->DataSet】3.2【DataFrame--&…

java基础之 SPI机制

SPI机制说明 什么是SPI Service Provider Interface 机制是Java提供的一套用来被第三方实现或扩展的API,他可以用来启用框架扩展和替换组件。通过“基于接口的编程 策略模式 配置文件”组合实现的动态加载机制。SPI机制为某个接口寻找服务实现的机制,…

二叉树基础知识总结

目录 二叉树基础知识 概念 : 根节点的五个形态 : 特殊的二叉树 满二叉树 : 完全二叉树 : 二叉搜索树 : 平衡二叉搜索树 : 二叉树的性质 : 二叉树的存储结构 二叉树的顺序存储结构 二叉树的链式存储结构 二叉树的遍历方式 : 基础概念 前中后遍历 层序遍历 :…

【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理

一、缓存穿透 1、概念 缓存穿透(查不到数据),是指当用户想要查询数据的时候,会先去Redis中取命中,如果Redis中没有该数据,那么就会向数据库中去查找数据。如果数据库中也没有,则该次查询结果失…

Spring学习笔记(五)--Spring的AOP模块

一、AOP的底层原理 AOP的底层原理是动态代理,动态代理有两种方式:JDK动态代理和CGLib动态代理,在有接口的实现类时我们通常用JDK的动态代理方式(默认情况)为类创建代理对象,JDK的动态代理方式可以实现无入…

ORM中常用的字段和参数,正反向概念

django表查询测试环境搭建 首先,在此之前我们先来回顾一下之前学习的orm内容 1. django自带一个小型的sqlite3的小型数据库 但是这个数据库的功能非常有限,并且针对日期类型的数据兼容性很差 2. 切换数据库数据(MySQL) 2.1 在django1.x版本中你需要在_…

PotPlayer+Alist挂载并播放网盘视频

文章目录 说明技术WebDAVPotPlayer 操作步骤一:Alist开启WebDAV代理二:PotPlayer连接Alist 说明 Alist网页端播放视频受限,主要是文件大于20MB,由于官方限制,无法播放需要使用user-agent修改插件,设置百度…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-24-处理单选和多选按钮-上篇

1.简介 在工作和生活中,经常会遇到我们需要进行选择的情况,比如勾选我们选择性别,男女两个性别总是不能同时选中的,再比如我们在选择兴趣爱好时,我们可以选择多个自己感兴趣的话题,比如:篮球、…

sqllabs第46关 order by 注入

简介:(order by注入-错误回显-POST注入) 请求方法:POST 方法:order by注入错误回显数字型注入 先了解下 order by参数注入: order by 注入是指其后面的参数是可控的, order by 不同于我们在 whe…

gem5学习(23):经典缓存——Classic Caches

目录 一、Interconnects 1、Crossbars 二、Debugging 官网教程:gem5: Classic caches 默认缓存是一个带有MSHR(未命中状态保持寄存器)和WB(写缓冲区)的非阻塞缓存,用于读取和写入未命中。缓存还可以启用…

[java基础揉碎]this

引出this: 什么是this: java虚拟机会给每个对象分配 this,代表当前对象。 这里的this就是new出来的这个对象 this的本质: this是个引用在堆中指向它自己: this的细节: 访问成员方法: 访问构造器:

精英ECS Z97-MACHINE V1.0 BIOS MX25L6406E

官网上的两个BIOS我都无法亮机,这是我保存出来的BIOS,不知道是否能使用五代的处理器 官网:Z97-MACHINE|Motherboard|产品|ECS 精英电脑 国外老哥的看法:ECS Z97-MACHINE Closer Look: The BIO…

RocketMQ-架构与设计

RocketMQ架构与设计 一、简介二、框架概述1.设计特点 三、架构图1.Producer2.Consumer3.NameServer4.BrokerServer 四、基本特性1.消息顺序性1.1 全局顺序1.2 分区顺序 2.消息回溯3.消息重投4.消息重试5.延迟队列(定时消息)6.重试队列7.死信队列8.消息语…