计算机视觉目标检测流程

2023-11-18

个人接触机器视觉的时间不长,对于机器学习在目标检测的大体的框架和过程有了一个初步的了解,不知道对不对,如有错误,请各位大牛不吝指点。
 
目标的检测大体框架:


目标检测分为以下几个步骤:
1、训练分类器所需训练样本的创建:
       训练样本包括正样本和负样本;其中正例样本是指待检目标样本(例如人脸或汽车等),负样本指其它不包含目标的任意图片(如背景等),所有的样本图片都被归一化为同样的尺寸大小(例如,20x20)。
2、特征提取:
       由图像或波形所获得的数据量是相当大的。例如,一个文字图像可以有几千个数据,一个心电图波形也可能有几千个数据。为了有效地实现分类识别,就要对原始数据进行变换,得到最能反映分类本质的特征。这就是特征选择和提取的过程。一般我们把原始数据组成的空间叫测量空间,把分类识别赖以进行的空间叫做特征空间,通过变换,可把在维数较高的测量空间中表示的模式变为在维数较低的特征空间中表示的模式。
3、用训练样本来训练分类器:
       这得先明白分类器是什么?百度百科的解释是:“使待分对象被划归某一类而使用的分类装置或数学模型。”我觉得可以怎么理解,举个例子:人脑本身也算一个分类器(只是它强大到超乎想象而已),人对事物的识别本身也是一个分类的过程。人在成长或者学习过程中,会通过观察A类事物的多个具体事例来得到对A类事物性质和特点的认识,然后以后遇到一个新的物体时,人脑会根据这个事物的特征是否符合A类事物性质和特点,而将其分类为A类或者非A类。(这里只是用简单的二分类问题来说明)。那么训练分类器可以理解为分类器(大脑)通过对正样本和负样本的观察(学习),使其具有对该目标的检测能力(未来遇到该目标能认出来)。
        从数学来表达,分类器就是一个函数y=f(x),x是某个事物的特征,y是类别,通俗的说就是例如,你输入张三的特征x1,分类器就给你认出来这个是张三y1,你输入李四的特征x2,它就给你认出来这个是李四y2。那么分类器是个函数,它的数学模型是什么呢?一次函数y=kx+b?高次函数?等等好复杂的都有,我们需要先确定它的模型;确定了模型后,模型是不是由很多参数呢?例如上面的一次函数y=kx+b的k和b,高斯函数的均值和方差等等。这个就可以通过什么最小化分类误差、最小化惩罚啊等等方法来确定,其实训练分类器好像就是找这些参数,使得达到最好的分类效果。呵呵,不知道自己说得对不对。
        另外,为了使分类检测准确率较好,训练样本一般都是成千上万的,然后每个样本又提取出了很多个特征,这样就产生了很多的的训练数据,所以训练的过程一般都很耗时的。
4、利用训练好的分类器进行目标检测:
       得到了分类器就可以用来对你输入的图像进行分类了,也就是在图像中检测是否存在你想要检测的目标。一般的检测过程是这样的:用一个扫描子窗口在待检测的图像中不断的移位滑动,子窗口每到一个位置,就会计算出该区域的特征,然后用我们训练好的分类器对该特征进行筛选,判定该区域是否为目标。然后因为目标在图像的大小可能和你训练分类器时使用的样本图片大小不一样,所以就需要对这个扫描的子窗口变大或者变小(或者将图像变小),再在图像中滑动,再匹配一遍。
5、学习和改进分类器
       现在如果样本数较多,特征选取和分类器算法都比较好的情况下,分类器的检测准确度都挺高的了。但也会有误检的时候。所以更高级点的话就是加入了学习或者自适应,也就是说你把这张图分类错误了,我就把这张图拿出来,标上其正确的类别,再放到样本库中去训练分类器,让分类器更新、醒悟,下次别再给我弄错了。你怎么知道他弄错了?我理解是:大部分都是靠先验知识(例如目标本身存在着结构啊或者什么的约束)或者和跟踪(目标一般不会运动得太快)等综合来判断的。
 
        其实上面这个模式分类的过程是适合很多领域的,例如图像啊,语音识别等等。那么这整一个过程关键点在哪呢?
(1)特征选取:
        感觉目标比较盛行的有:Haar特征、LBP特征、HOG特征和Shif特征等;他们各有千秋,得视你要检测的目标情况而定,例如:
        拳头:纹理特征明显:Haar、LBP(目前有将其和HOG结合);
       手掌:轮廓特征明显:HOG特征(行人检测一般用这个);
        (在博客中,我会参考各牛人的博客和资料来整理Haar特征、LBP特征、HOG特征和Shif特征等这些内容,具体见博客更新)
(2)分类器算法:
        感觉目标比较盛行的有:SVM支持向量机、AdaBoost算法等;其中检测行人的一般是HOG特征+SVM,OpenCV中检测人脸的一般是Haar+AdaBoost,OpenCV中检测拳头一般是LBP+ AdaBoost;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机视觉目标检测流程 的相关文章

  • RuoYi-spring-boot修改项目名称

    前言 若依是个不错的框架 想用若依框架来做项目 需要修改下项目名称为自定义的名称 比如school 1 找到硬盘对应的位置把名称改成我自定义的名称school 同时把路径也换成school 2 修改所有pom xml文件 1 总pom xm
  • 2.3.3 Servlet, 生命周期, 体系结构, xml配置, 请求和响应对象, 转发与重定向, ServletContext共享数据

    目录 一 Servlet概述 二 Servlet快速入门 2 1 案例需求 编写一个普通的java类 通过浏览器可以访问 2 2 servlet执行原理 三 Servlet生命周期 3 1 生命周期相关 3 1 1 思想介绍 3 1 2 代
  • osgEarth的Rex引擎原理分析(一一六)地理数据坐标系分类

    目标 一一五 中的问题203 地理数据的坐标系一般有两大类 一是地理坐标系 GCS 是经纬度单位的椭球坐标系 二是投影坐标系 PCS 是平面直角坐标系 投影坐标系 PCS 的定义一般会包含两方面的定义信息 1 基准面 Datum 与GCS相
  • 各种系统框架图简介(转载)

    原文出处 http space itpub net 6517 viewspace 609654 1 Spring 架构图 Spring 是一个开源 框架 是为了解决企业 应用程序开发复杂性而创建的 框架的主要优势之一就是其分层架构 分层架构
  • dubbo整合nacos没有注册成功

    这里大家整合的时候一定要注意dubbo3 0的版本 nacos整合的话要是2 0以上的版本 不然就会出现服务注册不上的情况 下面是nacos的下载地址 推荐大家使用这一个 还是比较主流的 Nacos 快速开始
  • 红帽6虚拟机安装流程

    红帽虚拟机的安装流程 redhat6 本篇文章将会带大家完整的安装linux红帽虚拟机 傻瓜式配置红帽虚拟机 超详细安装流程 1 下载好所需要的镜像文件 并且放在一个固定的文件夹中 如果没有iso文件 评论一下 发给你 2 打开虚拟机创建新
  • Typora软件的安装以及Typora中相应主题的拷贝和安装(网页下载到安装目录,安装Typora必看)

    1 首先 进入Typora官方中文网站 Typora官方中文网站 https typoraio cn 2 下载相应版本的Typora软件 直接进行安装即可 3 进入Typora软件 打开 主题 可以看到基本的主题 4 下载更多好看的Typo
  • MongoDB的安装与基本使用

    首先 得从MongoDB官网下载到对应操作系统的数据库安装包 MongoDB官网 https www mongodb com MongoDB下载地址 https www mongodb com download center communi
  • python中idx函数_python 常用函数、内置函数清单

    文章内容摘自 http www cnblogs com vamei 1 type 查询变量的类型 例 gt gt gt a 10 gt gt gt print a 10 gt gt gt print type a 2 dir 查询一个类或者
  • maven本地仓库配置

    来配置一下maven本地仓库 第一步 下载到官网下载maven包 下载地址 http maven apache org download cgi 第二步 找个盘符创建个文件夹将将下载的maven报放进去 然后将下载的包解压了 第三步 配置M
  • 树莓派3B+使用镜像烧录安装系统与配置教程(入门向)

    设备 Raspberry 3B 开发板一块 显示屏 台式计算机或笔记本电脑 显示屏 HDMI转VGA线或HDMI线或USB视频采集卡 千万不要用HDMI线从树莓派直接连接到显卡的HDMI口或者笔记本的HDMI口 轻则平安无事 重则电脑CPU
  • React移动端项目-02

    一些不实装功能的静态页面 底部导航栏 问答 页面 目标 实现问答页面的静态结构和样式 操作步骤 将资源包的样式拷贝到 pages Question 目录下 然后在该目录下的 index js中编写组件代码 import NavBar fro
  • UVA 1601 The Morning after Halloween - Japan 2007

    include
  • 创建任意程序为系统服务

    网上流传的创建系统服务的方法我看着真麻烦 把我自己弄的很简单的代码共享下 create SERVICENAME bat ECHO OFF sc delete SERVICENAME sc create SERVICENAME start a
  • 51单片机按键识别与LED显示(显示0-9的数字)

    实验内容 单片机外接10个按键 编号为0 9 编程实现任意按键则LED显示对应数字 一 硬件电路原理图 1 共阴共阳两种不同的方式 2 数码管显示表 3 矩阵键盘介绍 矩阵键盘是 单片机 外部设备中所使用的排布类似于矩阵的键盘组 矩阵式结构
  • WIN10+VS2013+CUDA10安装方法

    1 先安装VS 先安装VS 先安装VS 安装CUDA会配置VS文件 反向的话VS中找不到文件 VS安装参考 https blog csdn net m0 37477061 article details 83447773 2 安装CUDA
  • E-R模型应用示例

    E R模型应用示例 例1 1 设有某计算机系统集成制造公司需要建立一个零配件物资管理系统 该公司组装不同型号计算机所用的零配件由不同供货商供给 存放在多个仓库中 由多名仓库管理员管理 试用E R模型对该公司的零配件管理工作进行分析 根据该公
  • STM32移植lwip之官方源码解析

    本篇目标 分析stm32的ETH MAC控制器 初始化及lwip是如何与stm32底层连接的 材料准备 官方资料 包含代码和移植手册 stm32官方移植lwip资料 修改代码 包含移植后的代码 STM32官方移植lwip修改代码 修改参考
  • C++智能指针:shared_ptr用法详解

    C 智能指针 shared ptr用法详解 shared ptr是C 11里的新特性 其包装了new操作符在堆上分配的动态对象 如 shared ptr

随机推荐

  • MATLAB自动生成标记点

    在测试算法准确性的过程中 需要在图像上生成一些大小已知的标记点来识别 同时又需要生成的标记点位置随机 以测试算法的适用性 本人搜索自动生成标记点没有找到相关内容 因此将完成思路整理如下 随机生成点位置 MATLAB生成随机点很容易实现 使用
  • 解决django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is required; you have 1.0.

    最近在配置环境时遇到这样的问题 在网上查找了很多资料 比如注释base py中的代码 又或是添加如下代码 这些方法对我来说都不管用 后面又查到说可以降低django的版本 随后我重新安装了django2的版本 然后报以下错误 TypeErr
  • layui php+PHPExcel 拉取excel表格数据一键导入

    需求 大量数据需要导入数据库 直接拉取excel表格进行读取数据并存入数据库 过程中不对文件进行存储 使用上传过程中的缓存文件 前端代码 layui php
  • vs2019配置Qt5开发环境

    使用visual studi 2019配置qt5开发环境 以及创建qt项目s 一 下载安装visual Studio2019 1 进入visual studio 官网下载community 2019版本 安装器 2 下载完成后启动visua
  • Vue2里的computed的传参方法

    在使用element ui的时候 后台返回的字段需要你来判断显示什么 这时候可能就需要计算属性了 但是使用computed无法传值 可以通过computed定义的函数里面返回一个函数来接受传值 进行判断 如果直接使用computed传参是报
  • 使用nrm管理npm仓库

    引言 目前遇到了这样的问题 因为个人和公司的npm仓库环境不一样 导致使用时需要频繁的切换npm指向 所以 为了提高工作效率 就采用了nrm的方式来管理多个npm仓库 老规矩 先举一个 For example 当前有两个仓库指向 分别是 公
  • PyCharm安装教程最新版(社区版)

    1 官网下载地址 PyCharm the Python IDE for Professional Developers by JetBrains 2 安装 直接Install进行安装 最后点击finish即可 3 新建项目并测试 新建一个项
  • 线程安全分析

    1 成员变量和静态变量是否线程安全 如果它们没有被共享 则线程安全 如果它们被共享了 根据它们的状态是否能够改变 又分两种情况 如果只有读操作 则线程安全 如果有读写操作 则这段代码是临界区 需要考虑线程安全 2 局部变量是否线程安全 局部
  • 编译工具Make

    文章目录 make指令 指定目标 隐藏指令 通配符 伪目标 多目标 Makefile的命令 变量 变量的基础 赋值变量 函数调用 字符串操作函数 文件名操作函数 循环函数 条件判断函数 条件判断语句 隐式规则 隐式规则举例 隐式规则中的变量
  • Linux性能监控 -- vmstat命令

    文章目录 示例 字段说明 示例 输入vmstat命令后 第一个参数表示每1秒获取一次服务器资源 第二个参数表示总共获取10次 若第二个参数不设置 则表示持续获取服务器资源 字段说明 数据项 含义 r 表示有多少任务需要CPU执行 通常与后5
  • Button与ImageButton的点击监听事件-onClick

    Button与ImageButton自身都有一个onClick点击事件 通过自身的 setOnClickListener OnClickListener 的方法添加点击事件 所有控件都有一个OnClick事件 通过点击事件的监听可以实现点击
  • 吐血总结《Mysql从入门到入魔》,图文并茂

    文章目录 1 数据库操作 1 1显示数据库 1 2 创建数据库 1 3 使用数据库 1 4 查看当前数据库 1 5 删除数据库 2 表操作 2 1 创建表 2 2 更新表 2 2 1 添加列 2 2 2 删除列 2 3 查看表结构 2 4
  • CTF基本赛制与题型

    CTF简介 CTF的全称为Capture The Flag 即夺旗赛 CTF竞赛活动蓬勃发展 已成为了锻炼信息安全技术 展现安全能力和水平的绝佳平台 CTF号称计算机界的奥林匹克 CTF目标 CTF参赛队伍的目标为获取尽可能多的flag 参
  • 随机抽样一致性算法(RANSAC)示例及源代码

    作者 王先荣 大约在两年前翻译了 随机抽样一致性算法RANSAC 在文章的最后承诺写该算法的C 示例程序 可惜光阴似箭 转眼许久才写出来 实在抱歉 本文将使用随机抽样一致性算法来来检测直线和圆 并提供源代码下载 一 RANSAC检测流程 在
  • maven死活下载不了jar包的问题

    对应 问题6 选择适合自己的更新方式 通过排除法排除过的问题 1 idea版本问题 换了4个版本都有问题 2 电脑问题 差点重装 3 网络问题 换了手机网络一样不行 4 仓库 xml配置 或者maven插件版本的问题 试了很多版本 包括id
  • Spring Boot整合fastjson

    SpringBoot在构建RESTful风格的web服务时 默认使用的是Jackson作为JSON解析器 个人使用比较习惯的 json 框架是 fastjson 所以 spring boot 默认的 json 使用起来就很陌生了 所以很自然
  • Dynamics CRM: 使用setFilterXml来过滤需要在表单的Subgrid控件中进行展示的记录

    我们经常在表单中会用到subgrid控件 通常在一个表单中插入subgrid用来显示另外一个实体中的记录 而显示的内容我们是通过定义不同的视图来进行显示的 也可以通过javascript来进行一些控制 今天这篇博文我们使用另外一种方法来实现
  • KDUpdater 入门 (Qt5)

    KDTools 2 3 0 是KDAB公司的一个Qt4工具包 采用商业 GPL LGPL 三重授权 http www kdab com kdab products kd tools 该工具包中包含一个KDUpdater的组件 为Qt程序的自
  • t-SNE降维算法详解(附matlab代码)

    什么是t SNE t SNE的主要用途是可视化和探索高维数据 它由Laurens van der Maatens和Geoffrey Hinton在JMLR第九卷 2008年 中开发并出版 t SNE的主要目标是将多维数据集转换为低维数据集
  • 计算机视觉目标检测流程

    个人接触机器视觉的时间不长 对于机器学习在目标检测的大体的框架和过程有了一个初步的了解 不知道对不对 如有错误 请各位大牛不吝指点 目标的检测大体框架 目标检测分为以下几个步骤 1 训练分类器所需训练样本的创建 训练样本包括正样本和负样本