基于haar特征的adaboost算法_目标检测算法介绍

什么是目标检测

目标检测是指从图像中找出目标,包括检测和识别两个过程,现实中由于环境的复杂性以及各类物体的形状、外观以及光照,遮挡等因素的干扰,所以目标检测一直也是计算机视觉最常见的挑战之一。

目标检测的应用

目标检测与识别应用于多个领域,在实际生活中应用也越来越广泛,例如目标跟踪,视频监控,信息安全,自动驾驶,图像检索,医学图像分析,网络数据挖掘,无人机导航,遥感图像分析,国防系统等。

基于haar特征的adaboost算法_目标检测算法介绍_第1张图片

基于haar特征的adaboost算法_目标检测算法介绍_第2张图片

传统目标检测方法

传统的目标检测与识别方法主要可以表示为: 区域选择->特征提取->分类器。 即首先在给定的图像上选择一些候选的区域,然后对这些区域提取特征,最后使用训练的分类器进行分类。 下面我们对这三个阶段分别进行介绍,如下图所示:

20a39a3e2f53f4aa5627f5c3e6531c73.png

  • 区域选择

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

由于目标的形态多样性,光照变化多样性,背景多样性等因素使得设计一个鲁棒的特征并不是那么容易。然而提取特征的好坏直接影响到分类的准确性。(这个阶段常用的特征有SIFT、HOG等)
  • 分类器

主要有SVM,Adaboost等。
  • NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。目的就是为了消除多余的框,找到最佳的目标检测位置。 我们以人脸检测为示例来看看NMS的应用。

基于haar特征的adaboost算法_目标检测算法介绍_第3张图片

我们可以看到,由于滑动窗口,同一个人可能有好几个框(每一个框都带有一个分类器得分),但是我们肯定是想得到一个最优的框。

于是我们就要用到非极大值抑制,来抑制那些冗余的框: 抑制的过程是一个迭代-遍历-消除的过程。

  1. 将所有框的得分排序,选中最高分及其对应的框:

  2. 遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。

  3. 从未处理的框中继续选一个得分最高的,重复上述过程。

基于haar特征的adaboost算法_目标检测算法介绍_第4张图片

下面是Python代码中NMS实现

import cv2picked_boxes, picked_score = nms(bounding_boxes, confidence_score, threshold)cv2.imshow(

viola-jones(人脸检测)

viola-jones算法分为以下几个部分

  •  Haar特征抽取

  • 训练人脸分类器利用Adaboost算法进行训练

  • 滑动窗口

   haar特征

  Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和 减去 白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。

基于haar特征的adaboost算法_目标检测算法介绍_第5张图片

HOG+SVM(行人检测)

HOG+SVM算法分为以下几个部分

  • 提取HOG特征

  • 训练SVM分类器

  • 利用滑动窗口提取目标区域,进行分类判断

  • NMS

  • 输出结果

HOG特征:

  • 灰度化 + Gamma变换

  • 计算梯度map

  • 图像划分成小的cell,统计每个cell直方图

  • 多个cell组成一个block,特征归一化

  • 多个block串联,并归一化

SVM

 支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

基于haar特征的adaboost算法_目标检测算法介绍_第6张图片

DMP(物体检测)

DPM是一个非常成功的目标检测算法,DPM可以看做是HOG(Histograms of Oriented Gradients)的扩展,大体思路与HOG一致。先计算梯度方向直方图,然后用SVM(Surpport Vector Machine )训练得到物体的梯度模型。

dmp算法分为以下几个部分:

  • 计算DMP特征图

  • 计算响应图

  •  Latent SVM分类器训练

  • 检测识别

深度学习目标检测方法

基于深度学习的目标检测与识别成为主流方法,主要可以表示为:图像的深度特征提取->基于深度神经网络的目标识别与定位,其中主要用到深度神经网络模型是卷积神经网络CNN。

Two-stage

先进行区域建议框(Region Proposal, RP)的生成,再通过卷积神经网络进行分类。

 步骤:特征提取 → 生成RP → 分类/回归。

d2b0ef12087471246804f03ff5351a80.png

常见的two stage目标检测算法:R-CNN、Spp-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

One-stage

直接提取特征来预测物体类别和位置。

步骤:特征提取 → 分类/回归。

6f7ae7bafe25c81530f71a6c2996c818.png

常见的one stage目标检测算法有:OverFeat、YOLO系列、SSD和RetinaNet。

本片文章简单的介绍了一下目标检测中常用的算法,后面会针对常用算法进行详细的介绍。

你可能感兴趣的:(目标检测算法对比,目标识别,adaboost)