机器视觉中的目标检测

今天撇去不同目标追踪算法的框架,比如KCF、TLD、Mean Shift等,忽略它们繁琐的公式,看了对目标检测的基本理解。这里做一个简单的总结,目标检测的框架一般是下图这样的:

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

1、 训练分类器所需样本的创建

训练样本一般包括正样本和负样本,正样本是指第一帧图中框定的待检测的目标,负样本是指其它不包含目标的任意图片(比如背景),所有的样本图片都被归一化同样的尺寸大小(比如20C20)。

2、 特征提取

我们一般通过图像、视频或者波形获得的数据量是很巨大的,比如一个简单的文字图像或者一个心电图波形也可能要有几千个数据。为了对这些数据进行有效的识别、分类,就需要我们对原始数据进行变换,从而来得到最能反映分类本质的特征。这就是特征选择与提取的过程。

一般来说,我们把原始数据组成的空间叫测量空间,把分类识别赖以进行的空间叫做特征空间,通过变换,我们可把在维数较高的测量空间中表示的模式转变为在维数较低的特征空间中表示的模式。(这部分和我目前正在看的SVM和核函数联系极大,公式比较繁琐,定义也比较多,目前暂未全部罗列消化,虽然最近看了一部分,大部人说用的不一定需要懂,可是感觉不懂根本无法用好,最近正在致力于消化的小目标,准备从这里开始入手machine learning)

3、 用训练样本来训练分类器

这部分首先得先明白分类器是什么?wikipedia上的解释是:在机器学习领域,分类的目标是指将具有相似特征的对象聚集,通过特征的线性组合来做出分类决定,以达到此种目的。在这里,对象的特征通常被描述为特征值,在向量中被描述为特征向量。

比如,人脑本身也算一个分类器(强大到超乎想象),人对事物的识别就是一个分类的过程,人在成长和学习过程中,会通过观察A类事物的多个具体事例来得到对A类事物性质和特点的认识,以后遇到一个新物体的时候,人脑会根据这个事物的特征去判断是否符合A类事物的性质和特点,然后将其分为A类或者B类(这里是一个简单的二分类问题)。

在这里,训练分类器(大脑)可以通过对正样本和负样本的观察(学习),是其具有对该目标的检测能力,从而遇到该目标时可以检测出来。

从数学来表达,分类器就是一个函数y=f(x),x是某个事物的特征,y是类别,通俗的说就是例如,你输入张三的特征x1,分类器就给你认出来这个是张三y1,你输入李四的特征x2,它就给你认出来这个是李四y2。那么分类器是个函数,它的数学模型是什么呢?一次函数y=kx+b?高次函数?等等好复杂的都有,我们需要先确定它的模型;确定了模型后,模型是不是由很多参数呢?例如上面的一次函数y=kx+b的k和b,高斯函数的均值和方差等等。这个就可以通过什么最小化分类误差、最小化惩罚啊等等方法来确定,其实训练分类器好像就是找这些参数,使得达到最好的分类效果。

此外,为了使分类器检测准确率较好,训练样本一般都是成千上万,然后每个样本提取出很多个特征,这样就产生了很多的训练数据,所以训练的过程一般也都是很耗时的。

4、 利用训练好的进行目标检测

得到了分类器后,我们就可以用来对输入的图像进行分类了,也就是在图像中检测是否存在我们想要检测的目标。一般的检测过程是这样的:用一个扫描子窗口在待检测的图像中不断的移位滑动,子窗口每到一个位置,就会计算出该区域的特征,然后用我们训练好的分类器对该特征进行筛选,判定该区域是否为目标。有时候可能因为目标图像的大小和你训练分类器时使用的样本图片大小不一样,所以就需要对这个扫描的子窗口变大或者变小(或者将图像变小),再在图像中滑动,重新进行匹配一遍。

5、 学习和改进分类器

现在如果样本数较多,特征选取和分类器算法都比较好的情况下,分类器的检测准确度都挺高的了。但也会有误检的时候。所以更高级点的话就是加入了学习或者自适应,也就是说你把这张图分类错误了,我就把这张图拿出来,标上其正确的类别,再放到样本库中去训练分类器,让分类器更新、醒悟,下次别再再弄错了。我们怎么知道他弄错了呢?我的理解是:(1)、可能是靠先验知识来判定(例如目标本身存在着结构啊或者什么的约束)(2)、根据跟踪速度来判定(目标一般不会运动得太快)(3)、比较在初始图片帧采集的样本集得到的残差函数值的大小来判定(比如说我们得到的目标函数使得残差值过大)(4)、也可能根据以上这些情况来综合来判断的。

6、 小总结

上面模式分类的过程适合很多领域,例如图像、语音识别等等,它的关键点在于两个方面。

(1)    特征选取:比如说目前比较盛行的有: Haar特征、LBP特征、HOG特征和Shif特征等;他们各有千秋,视要检测的目标情况而定,例如:拳头:纹理特征明显:Haar、LBP(目前有将其和HOG结合);手掌:轮廓特征明显:HOG特征(行人检测一般用这个)

(2)    分类器算法

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

目标识别与追踪真心涉及到很多很多算法和machine learning的基础知识,并且有不断地涌现的大牛提出各种算法,简单的哲学,复杂的数学!!感觉身体被掏空,在此勉励自己,希望自己能在机器视觉领域更上一层楼!

时间: 2024-10-27 05:23:29

机器视觉中的目标检测的相关文章

目标检测 1 : 目标检测中的Anchor详解

咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目标检测中,使用一个矩形的边框来表示.在图像中,可以基于图像坐标系使用多种方式来表示矩形框. 最直接的方式,使用矩形框的左上角和右下角在图像坐标系中的坐标来表示. 使用绝对坐标的\((x_{min},y_{min},x_{max},y_{max})\). 但是这种绝对坐标的表示方式,是以原始图像的像素

一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码

计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不仅需要知道这是哪一类图像,而且要知道图像中所包含的内容有什么及其在图像中的位置,因此,其工业应用比较广泛.那么,今天将向读者介绍该领域中表现优异的一种算算法--"你只需要看一次"(you only look once,yolo),提出该算法的作者风趣幽默可爱,其个人主页及论文风格显示了其性

深度学习之目标检测常用算法原理+实践精讲

第1章 课程介绍本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 第2章 目标检测算法基础介绍本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-stage.two-stage.多任务网络).相关算法的基本流程.算法性能的评价指标.不同算法的优缺点和性能比较等,并结合实际的应用场景和案例来介绍目标检测算法的重要性和实用

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络 资源获取链接:点击这里 第1章 课程介绍 本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 1-1 课程导学 第2章 目标检测算法基础介绍 本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-sta

目标检测综述

这篇综述是我统计信号处理的作业,在这里分享一下,将介绍计算机视觉中的目标检测任务,论述自深度学习以来目标检测的常见方法,着重讲yolo算法,并且将yolo算法与其他的one-stage以及two-stage方法进行比较. 目录 1.介绍 2.YOLO 2.1 YOLOv1 2.2 YOLOv2 2.3 YOLOv3 3.其他方法 RCNN FastRCNN FasterRCNN SSD RetinaNet 4.实验结果比较 5.总结 参考文献 1. 介绍 目标检测在现实中的应用很广泛,我们需要检

AI佳作解读系列(五) - 目标检测二十年技术综述

计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注. 上周四,arXiv新出一篇目标检测文献<Object Detection in 20 Years: A Survey>,其对该领域20年来出现的技术进行了综述,这是一篇投向PAMI的论文,作者们review了400+篇论文,总结了目标检测发展的里程碑算法和state-of-the-art,并且难能可贵的对算法流程各个技术模块的演进也进行了说明,还深入到目标检测的特定领域,如人脸检

One Stage目标检测

在计算机视觉中,目标检测是一个难题.在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析.如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别.如果该物体都不能检测得到,则后续的分析就无从入手.因此,目标检测占据着十分重要的地位.在目标检测算法中,通常可以分成One-Stage单阶段和Two-Stage双阶段.而在实际中,我经常接触到的是One-Stage算法,如YOLO,SSD等.接下来,对常接触到的这部分One-stage单阶段目标检测算法进

语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.

from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里,先介绍几个概念,也是图像处理当中的最常见任务. 语义分割(semantic segmentation) 目标检测(object detection) 目标识别(object recognition) 实例分割(instance segmentation) 语义分割 首先需要了解一下什么是语义分割(s

常见的目标检测中的背景建模方法

Author: JW. ZHOU 2014/6/13 最近一直在做前景检测方面的研究,刚开始主要是做一些工程性的应用,为了解决工程方面的问题,下了不少功夫,也看了不少最近国内外的文章.一直想做个总结,拖着拖着,终究却写成这篇极不成功的总结. 背景建模或前景检测的算法主要有: 1. Single Gaussian (单高斯模型) Real-time tracking of the human body 2. 混合高斯模型(Mixture of Gaussian Model) An improved