什么是目标检测

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

目标检测的应用

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

传统目标检测方法

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

  • 区域选择

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

  • 特征提取

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

  • 分类器

主要有SVM,Adaboost等。

  • NMS(非极大值抑制)

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

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

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

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

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

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

下面是Python代码中NMS实现

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

viola-jones(人脸检测)

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

  • Haar特征抽取

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

  • 滑动窗口

 haar特征

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

HOG+SVM(行人检测)

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

  • 提取HOG特征

  • 训练SVM分类器

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

  • NMS

  • 输出结果

HOG特征:

  • 灰度化 + Gamma变换

  • 计算梯度map

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

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

  • 多个block串联,并归一化

SVM

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

DMP(物体检测)

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

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

  • 计算DMP特征图

  • 计算响应图

  • Latent SVM分类器训练

  • 检测识别

深度学习目标检测方法

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

Two-stage

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

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

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

One-stage

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

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

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

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

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

  1. keras优化算法_目标检测算法 - CenterNet - 代码分析

    代码出处 吃水不忘打井人,分析github上的基于keras的实现: xuannianz/keras-CenterNet​github.com 代码主体结构 模型训练的主函数流程如下所示,该流程也是使 ...

  2. 照片美妆---基于Haar特征的Adaboost级联人脸检测分类器

    本文转载自张雨石http://blog.csdn.net/stdcoutzyx/article/details/34842233 基于Haar特征的Adaboost级联人脸检测分类器 基于Haar特征 ...

  3. OpenCV中基于Haar特征和级联分类器的人脸检测

    使用机器学习的方法进行人脸检测的第一步需要训练人脸分类器,这是一个耗时耗力的过程,需要收集大量的正负样本,并且样本质量的好坏对结果影响巨大,如果样本没有处理好,再优秀的机器学习分类算法都是零. 今年3 ...

  4. OpenCV中基于Haar特征和级联分类器的人脸检测(三)

    使用机器学习的方法进行人脸检测的第一步需要训练人脸分类器,这是一个耗时耗力的过程,需要收集大量的正负样本,并且样本质量的好坏对结果影响巨大,如果样本没有处理好,再优秀的机器学习分类算法都是零. 今年3 ...

  5. 目标检测论文解读复现之十五:基于YOLOv5的光学遥感图像舰船 目标检测算法

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  6. 基于Grad-CAM与KL损失的SSD目标检测算法

    基于Grad-CAM与KL损失的SSD目标检测算法 人工智能技术与咨询 来源:<电子学报>,作者侯庆山等 摘 要: 鉴于Single Shot Multibox Detector (SSD ...

  7. 目标检测YOLO实战应用案例100讲-基于深度学习的无人机航拍图像目标检测算法研究与应用

    目录 基于深度学习的无人机航拍图像目标检测算法研究与应用 基于深度学习的目标检测相关知识理论

  8. 路面裂痕检测YOLO算法、目标检测算法实现地面裂缝检测

    道路裂纹检测YOLO算法,目标检测,目标识别,裂纹检测 路面裂痕检测YOLO算法.目标检测算法实现地面裂缝检测 车头定位 交通标志识别 车道线识别 自己标注数据,训练模型,效果很好4360063193 ...

  9. 找不到匹配的key exchange算法_目标检测--匹配策略

    CVPR2020中的文章ATSS揭露到anchor-based和anchor-free的目标检测算法之间的效果差异原因是由于正负样本的选择造成的.而在目标检测算法中正负样本的选择是由gt与anchor ...

最新文章

  1. python词频作图_基于Python的词频分析与云图生成
  2. mysql主从复制错误:Last_SQL_Error: Error #39;Duplicate entry #39;327#39; for key #39;PRIMARY#39;#39; ...
  3. socket通信时如何判断当前连接是否断开--select函数,心跳线程,QsocketNotifier监控socket...
  4. 【四种解法】剑指 Offer 39. 数组中出现次数超过一半的数字
  5. iOS内存管理(ARC,MRC)
  6. pythonjam进不去怎么办_教程看了一遍又一遍,自学Python还是连门都进不去?
  7. 我喜欢这样的老大[10-24]
  8. div 文字 input 垂直居中
  9. Java BigDecimal类
  10. 太极助手发公开信解释越狱捆绑原因
  11. 三极管基极限流电阻计算
  12. 微信三个平台区分(开放,公众,商户平台)(转)
  13. 与老师连这得计算机如何上网,观潮的老师教案
  14. 第二工业大学计算机应用大专录取分,上海第二工业大学2017年分省分专业录取分数线...
  15. 《管理者财务知识一本通》读书笔记一
  16. python3 file_Python3-file
  17. 【怎样制作ppt】Focusky教程 | 调节音乐的音量(插入的音乐、背景音乐、录音的音量)
  18. HTML5期末大作业:中国传统节日网页设计——端午节(9个页面) HTML+CSS+JavaScript 节日网页HTML代码 学生网页课程设计期末作业下载...
  19. 微信小程序的开发制作_搭建_工具_模板_一键生成
  20. Node.js运行app.js时候报错933

热门文章

  1. 多维数组java_Java多维数组
  2. 博弈论分析题_博弈论复习题及答案分析
  3. 中级计算机知识点,计算机操作员中级基础知识教程解析.doc
  4. Transfer Learning从入门到放弃(二)
  5. python计算题库_python练习题-
  6. linux的用户和组的管理
  7. 为什么前端工作越来越难找了?
  8. 子之错父之过什么意思_生活|为什么子不教,父之过,这是什么意思?
  9. React 界面样式设计
  10. java使用阿里云oss sdk