模式识别课程:目标检测②传统检测算法

2023-10-27


title : 目标检测②传统检测算法

目标检测实验报告
检测所用软硬件+云服务器:
硬件:macOS或者windows电脑
软件:pycharm+生成的测试集
云服务器:滴滴云(https://www.didiyun.com/activity.html)输入博主的大师码:8996 ,可以和博主一样9折享受服务

什么是传统目标检测?
首先我们先来了解一下什么是目标检测?简单来说就是把存在的目标从图片中找到并识别出来。我们发现这对于我们人来说十分简单,但对于计算机而言,它是怎么做到的呢?
传统目标检测方法分为三部分:区域选择 → 特征提取 → 分类器

即首先在给定的图像上选择一些候选的区域,然后对这些区域提取特征,最后使用训练的分类器进行分类。下面我们对这三个阶段分别进行介绍

2.2.1区域选取
这一步是为了对目标的位置进行定位。由于目标可能出现在图像的任何位置,而且目标的大小、长宽比例也不确定,所以最初采用滑动窗口的策略对整幅图像进行遍历,而且需要设置不同的尺度,不同的长宽比。这种穷举的策略虽然包含了目标所有可能出现的位置,但是缺点也是显而易见的:时间复杂度太高,产生冗余窗口太多,这也严重影响后续特征提取和分类的速度和性能。(实际上由于受到时间复杂度的问题,滑动窗口的长宽比一般都是固定的设置几个,所以对于长宽比浮动较大的多类别目标检测,即便是滑动窗口遍历也不能得到很好的区域)

2.2.2特征的设计
传统检测方法的特征提取算法主要有两种:HOG特征和lbp算法
HOG:方向梯度直方图(Histogram of Oriented Gradient, HOG)。使用梯度直方图来描述的形状特征。主要在行人检测方面。从名字可知,主要将图像中的pixel的方向变化作为特征。因为梯度变化主要是发生在物体边缘,这样就可以知道物体的大致形状。可以进行物体分类或者检测。经典的特征提取一般需要一些超参,比如窗口大小等。
提取方法:讲一个image灰度化—>颜色空间的标准化—>计算图像每个像素的梯度 —>将图像划分成小cells—>统计每个cell的梯度直方图 —> 将每几个cell组成一个block—>将图像image内的所有block的HOG特征descriptor串联起来。 Lbp算法:LBP(Local Binary Pattern,局部二值模式),反映了局部的纹理特征,跟一个像素的邻域有关。对每个像素的邻域做减法,大于用1表示,否则用0表示则产生了一个二进制数来表示这个像素的局部纹理。这个邻域其实也相当于一个window,window的形状也是可以改变的。

2.2.3分类器的设计
一、利用AdaBoost算法进行训练
并不是所有特征都是有用的,AdaBoost特征分类器具有特征选择的能力。
AdaBoost 将一系列的弱分类器通过线性组合,构成一个强分类器,
如下所示:

在这里插入图片描述
在这里插入图片描述
是一个强分类器。

在这里插入图片描述是一个弱分类器,其为一个简单的阈值函数
在这里插入图片描述为阈值,
在这里插入图片描述
在这里插入图片描述为系数。

二、训练弱分类器
计算所有训练样本的特征值,并将其从小到大排序,随机选取一个特征值作为阈值,把所有元素分为两部分,小于阈值的一部分分类为人脸,大于阈值的一部分分类为非人脸。如下图所示,红色表示人脸,蓝色表示非人脸。

假如有5个样本,前两个为人脸,后三个为非人脸,用11000表示。如果阈值在第一个之前,通过弱分类器判定为:00000,有两个误差,如果阈值在第一个和第二个之间,通过弱分类器判定为:10000,有1个误差,如果阈值在第二个和第三个之间,通过弱分类器判定为:11000,有0个误差,依次类推,这样共有6个误差,然后从中找到一个误差最小的当成阈值,这样就训练好了一个最优的弱分类器。

在这里插入图片描述
三、训练强分类器
假设有N个训练样本

在这里插入图片描述
,其中有M个正样本,L个负样本,如果在这里插入图片描述

是人脸图像,则在这里插入图片描述

, 否则在这里插入图片描述

其步骤如下:在这里插入图片描述

每一级分类器使用的训练集中的负样本,都是上一级被错分的,即false positive,误检率或假阳性。这使得下一级分类器更加关注那些更难的(容易被错分的)样本。

2、2、4 总结:
传统检测历史久远,然而一直以来存在着两个主要问题:
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余
2)手工设计的特征对于多样性的变化没有很好的鲁棒性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模式识别课程:目标检测②传统检测算法 的相关文章

随机推荐

  • ROS机器人建模与仿真(一)--URDF机器人建模

    前言 经过ROS的保姆级教程之后 相信大家对ROS应该有一个基本的认识了 关于各种工具的使用其实等到真正有所需求之后再去查找即可 roswiki始终是最好的最一手的信息来源 本系列的博客主要用来记录如何让在ROS的环境下进行机器人的建模与仿
  • Oracle,PL/SQL常用函数列表

    常用字符函数 函数 描述 LOWER char 将字符串表达式char中的所有大写字母转换为小写字母 UPPER char 将字符串表达式char中的所有小写字母转换为大写字母 INITCAP char 首字母转换成大写 SUBSTR ch
  • 模板方法模式与策略模式的区别

    原文 http www tuicool com articles 6JBN7z3 如果你还不了解模板方法模式和策略模式 请先阅读 策略模式 strategy 和 模板方法模式 模板方法模式的主要思想 定义一个算法流程 将一些特定步骤的具体实
  • 安利一个快速后台开发框架(ruoyi)

    http www ruoyi vip
  • 19年11月最新Win10 LTSC系统封装部署教程(超详细)

    写在前面 在本着认真负责 不交差 不敷衍的情况下 尽可能详细的描述整个过程 本文的经验方法大多数来自于网上朋友们的无私分享 在实际操作中遇到的坑我会在下文中进行标注 有任何意见或疑问欢迎留言讨论 感谢平台提供一个舒适的交流环境 v 0 15
  • (差分)曼彻斯特编码及NRZ

    曼彻斯特编码 Manchester Encoding 也叫做相位 编码 Phase Encode 简写PE 是一个同步时钟编码技术 被 物理层使用来编码一个同步位流的时钟和数据 它在 以太网媒介系统中的应用属于数据通信中的两种位同步方法里的
  • 【const】与指针、数组、结构体的使用

    目录 指针与数组 指针与const const const的作用 const int 与 int const const的错误使用 const char arr和char arr 10 的区别 结构体与const 指针与数组 指针可访问数组
  • vue3.0 PC端自适应不同分辨率电脑

    使用rem单位去做页面的适配 先来了解一下什么是rem rem是CSS3新增的一个相对单位 root em 根em 我们可以通过去设定X rem Y px x和y为自定义数值 如图设定1rem 10px 第一步 安装相应的依赖为我们自动将全
  • Masked Autoencoders Are Scalable Vision Learners(屏蔽自编码器是可扩展的视觉学习器)--文献翻译和笔记

    论文链接 2111 06377 Masked Autoencoders Are Scalable Vision Learners arxiv org 论文标题 Masked Autoencoders Are Scalable Vision
  • Entity Framework中使用SQLite的一些问题

    SQLite数据相当的不错 我目前在一些小型网站都用这个数据库来取代Access 下面就是关于在ASP NET的Entity Framework当中使用SQLite的一些经验和一些小问题的解决办法 想要在ASP NET中使用SQLite 首
  • js md5 解密_JS逆向小结(开始)

    最近想研究一下JS逆向的相关知识 先分享一篇大佬的小总结 明天正式开搞 1 我的逆向分析流程 对于js逆向来说 基本遵循一个简单的流程 我是先进行刷新网页进行抓包 找到自己的目标请求 大部分时候是一个 但是有时回事多个 先前返回的数据可能在
  • 【Linux】Linux常用快捷键

    前言 由于需要 梳理了一下常用的快捷键 以便忘记时查找 Linux系统快捷键 Bash解释器 1 Tab键 补齐命令 补齐路径 显示当前目录下的所有目录 2 清屏 clear Ctrl L L 大小写均可 3 中断 暂停进程 ctrl c
  • bmFont的使用方法

    1 打开 bmfont exe 2 字体设置 选择 Font settings 在这里我们选择微软雅黑 微软雅黑支持中文 字符编码 选择 Unicode 你还可以在 Font settings 对话框里进行字体大小 字体平滑程度等设置 3
  • Qt开发教程:实现全屏显示

    Qt开发教程 实现全屏显示 在Qt开发中 有时候需要让程序窗口全屏显示 以提升用户体验 本教程将介绍如何使用Qt实现全屏显示 设置窗口属性 在Qt中 我们可以通过设置窗口属性来控制窗口显示方式 在此之前 我们需要在 pro文件中添加以下代码
  • IDEA中用java建库、建表、插入、打印的方法

    数据库 mysql 连接方式 jdbc 文件组织结构 create db java package jdbc import java sql public class create db 建立数据库连接 并创建一个新数据库 按照传入的参数
  • Sourcetree连接远程仓库需要登陆,但是一直登陆不上的问题解决方法

    授权类型选用 基础 只需要登陆你用户名和密码 将https作为首选协议 连接成功后可改ssh
  • 机器学习大作业---文献综述

    机器学习大作业 文献综述 机器学习技术在材料化学预测方面最新应用综述 怎么写综述 摘抄自https www zhihu com question 303494762 answer 555476024 文献综述和综述论文是有区别的 文献综述可
  • 飞天平台安全相关

    飞天平台安全相关 1 capability机制 用户的身份认证 authentication 是基于密钥机制的 用户对资源的访问控制是基于权能 capability 机制进行授权 authorization 的 capability是用于访
  • c++入门系列(二)之标识符

    什么是标识符 标识符是指用来标识某个实体的一个符号 在不同的应用环境下有不用的含义 这句话相当于废话 在计算机编程语言中 标识符是用户编程时使用的名字 用于给变量 常量 函数 语句块等命名 以建立起名称与使用之间的关系 通俗的话说 标识符是
  • 模式识别课程:目标检测②传统检测算法

    title 目标检测 传统检测算法 目标检测实验报告 检测所用软硬件 云服务器 硬件 macOS或者windows电脑 软件 pycharm 生成的测试集 云服务器 滴滴云 https www didiyun com activity ht