目标检测如何计算召回率_计算机视觉目标检测的框架与过程

d65f48c293bf59bd22d2cd9340da3a26.png

计算机视觉

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

目标的检测大体框架:

f7abc64db65a7a4c2f4f45add941668e.png

计算机视觉

目标检测分为以下几个步骤:

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结合);

(2)分类器算法:

感觉目标比较盛行的有:SVM支持向量机、AdaBoost算法等;其中检测行人的一般是HOG特征+SVM,OpenCV中检测人脸的一般是Haar+AdaBoost,OpenCV中检测拳头一般是LBP+ AdaBoost;

在计算机视觉领域,涉及到的特征、算法等等还是非常非常多的,不断有牛人在提出新的东西(简单的哲学+复杂的数学),也不断有牛人在改进以前的东西,然后随着岁月的脚步,科技在不停地狂奔着!

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

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

相关文章

修改wap游戏服务器,修改wap游戏服务器

修改wap游戏服务器 内容精选换一换部署游戏应用前,您需要准备硬件以及华为云的环境,主要包括以下内容:硬件环境:您需要准备一台带有显卡的Windows机器,硬盘至少20G,用于运行游戏客户端。若您不需要运行游戏…

python_10_文件操作

文件操作逻辑? 打开文件,赋值给一个对象用对象操作文件关闭文件如何打开文件? 在windows中,默认格式gbk,python3.x默认unicode(utf-8),要指定编码值 语法: f open(“文件…

e5cc温控仪通讯参数设定_自动化工程师:施耐德 PLC常见两种编程通讯控制实例,收好不谢...

1、第一种是采用 UNTLW1协议进行联机编程:参数设置与通讯配置检查:用 Premium的专用编程电缆“TSXPCX3030-C(USB接口,有专门的驱动)”通过调试机与CPU上的TER口进行连接,连接好后,点击某单栏里的“PLC(P)”菜单&#x…

flask登录验证用ajax,基于 Ajax 请求的 Flask-Login 认证

index.htmlexample.py## index.htmlindex.html test login by Leetao未点击var load_msg function () {$.get(/hello?api_keytest_login,function(data){$(#test_login)[0].innerText data})}example.pyfrom flask import Flask, request, jsonify, render_templatefrom fla…

折叠菜单,选择下拉(手风琴)

无聊,就自己写了一个手风琴的下拉菜单,写之前要介绍以下几个JQuery函数的用法: 1.children()方法 ,表示当前元素下的子元素,函数内可以有参数,参数为“子元素”的名称。 2.slideToggle()方法,在…

anglar ajax执行2次的原因,AngularJS与Ajax表单提交需要单击两次

我需要从HTML页面执行以下活动:用户输入电子邮件和密码进行注册用户单击时将表格发送到控制器 SubmitControl使用AJAX创建到RESTful Server的JSON请求,服务器进行相应的响应。根据服务器的响应,用户应获得警报窗口,并register.htm…

4.6上午

背单词,复习前一天背的单词 转载于:https://www.cnblogs.com/lolita-ran/p/6674320.html

dt程序网站服务器配置,ZKWeb 官网与演示站点的部署步骤 (Linux + Nginx + Certbot)

因为没有给域名续费,加上私人时间不足,ZKWeb 的官网和演示站点已经停止了几个月的时间。 最近时间开始变多,所以重新购买了别的域名和服务器把官网和演示站点重新部署上去。 在此前站点是托管在共享主机上的 Windows IIS 上的,而…

零窗口探测怎么抓包_万事俱备,只待“窗口”!航天任务中的重要环节:“发射窗口”!...

1999年11月20日06时30分07秒,神舟一号腾空而起,揭开了我国载人航天的华丽篇章。2003年10月15日09时00分00秒杨利伟驾乘神舟五号成功进入太空,我国成为了世界第三个自主探寻宇宙的人类国家。载人航天工程在过去的20年间一共发射了从神舟一号到…

yum 安装oraclejdk_四、CentOS 7安装Oracle JDK

CentOS 7安装Oracle JDK,查看Linux是否自带的JDK,如有openJDK,则卸载CentOS7.1 JDK安装1、卸载自带OPENJDK用 java -version 命令查看当前jdk版本信息#java -version用rpm -qa | grep java 命令查询操作系统自身安装的java#rpm -qa | grep ja…

性能测试 获取 服务器间响应时间,性能测试指标分析TPS、响应时间、并发量等...

然后我们再来看性能测试的指标是怎么来的呢?1、产品和运营要给出业务需求:这个服务,在多长时间段,多少人会访问2、性能要求上,通常情况下的APP或者web应该如何?一般情况下通用的标准是页面显示时间预判&…

【手把手教你树莓派3 (二)】 启动wifi模块

概述 树莓派3内置了wifi和蓝牙模块,我们不用像以前的版本那样,再去购买一个外接的模块练到raspberry上。 当我们第一次启动了树莓派的时候,必然使用了网线,但是之后的每一次使用,我们当然更希望使用wifi连接树莓派和路…

python如何写一个图片进去_python写个图片爬虫

[rootMGServer pythonscript]# vim getimg.py#!/usr/bin/python#encoding:utf8import requests,sys,re#定义一个方法,获取网站图片,并下载def getimg(url):#请求url内容pagerequests.get(url)#获取内容pagetextpage.content#定义正则表达式。regrsrc.*?…

广域信息服务器,网络工程师之广域信息服务

1、广域信息服务WAIS(Wide Area Information Search)是一种网络信息查询系统,它可以和关键字对服务器数据库进行全文索引,获取索引所得的信息。2、WAIS运行模式,采用客户机和服务器方式。运行方式,standalone和inetd方式。包括三部…

长方形与圆最近连线LISP_餐桌到底选方还是圆?可千万别买错了,今天我们好好聊聊...

最近我被所潜装修群里一则消息刷屏了,几个人你争我夺、言辞激烈,爬楼一看原来是纠结「餐桌选圆还是方」。要说我们中国人真的是什么都能纠结起来,今天我也给大家好好聊聊餐桌究竟该怎么选!1、方桌 VS 圆桌1.方桌的特点现代家庭方桌…

jquery 字符串去首尾空格_jquery $.trim()去除字符串空格详解

jquery $.trim()去除字符串空格详解语法jQuery.trim()函数用于去除字符串两端的空白字符。作用该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止)。它会清除包括换行符、空格、制表符等常见的空白字符。参数如果参数str不是字符串类型&#xff0c…

python 当前时间的前一天_python中time、datetime模块的使用

python中time、datetime模块的使用1、前言如果您从事过python web的开发,那一定有过这样的经历,对于各种复杂繁琐的业务逻辑,掺杂着各种各样的时间约束,让人很容易搞的头晕眼花,比如展示出一天内用户进行过的所有操作记…

mycat 分表子查询_还不懂MyCat?一文带你深入剖析,实现MySQL读写分离

前言系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中…

常量

定义常量:(const 关键字) 例如:const int a100; 1、必须在声明时初始化,指定了其值后不再改写(存在改写现象会编译器报错) 2、不能从一个变量中提取值来初始化常量(如需这么做应该用只读字段) 3、转载于:https://www.c…

浪潮服务器5112面板灯_SA5112M4 – IPMI设置

SA5112M4 – IPMI设置1. 浪潮IPMI管理模块简介浪潮IPMI管理模块是按照IPMI2.0标准实现对服务器系统管理功能。IPMI管理模块实现的功能有:系统的实时监控在检测到故障的情况下可实现告警的上报、告警的指示和启动系统的自我保护。系统的远程控制能通过命令行和Web实现…