0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

传统检测、深度神经网络框架、检测技术的物体检测算法全概述

新机器视觉 来源:新机器视觉 作者:新机器视觉 2020-10-22 15:07 次阅读

物体检测一向是比较热门的研究方向,它经历了传统的人工设计特征+浅层分类器的框架,到基于大数据和深度神经网络的End-To-End的物体检测框架的发展,然而许多人其实并未系统的了解过物体检测算法的整个发展内容。正因如此,本次阅面科技邀请了资深研究员童志军从传统检测算法核心、深度神经网络框架、检测技术难点等方面来进行干货分享。

童志军:阅面科技资深研究员,2012年毕业于东南大学获硕士学位,先后加入虹软、阿里巴巴从事图像算法和机器学习工作,曾参与淘宝“拍立淘图像搜索”、“3D试衣”等产品研发,目前主要专注于深度学习的视觉检测分类和移动端深度学习模型压缩技术。

在传统视觉领域,物体检测是一个非常热门的研究方向。受70年代落后的技术条件和有限应用场景的影响,物体检测直到上个世纪90年代才开始逐渐走入正轨。物体检测对于人眼来说并不困难,通过对图片中不同颜色、纹理、边缘模块的感知很容易定位出目标物体,但对于计算机来说,面对的是RGB像素矩阵,很难从图像中直接得到狗和猫这样的抽象概念并定位其位置,再加上物体姿态、光照和复杂背景混杂在一起,使得物体检测更加困难。

检测算法里面通常包含三个部分,第一个是检测窗口的选择, 第二个是特征的设计,第三个是分类器的设计。随着2001年Viola Jones提出基于Adaboost的人脸检测方法以来,物体检测算法经历了传统的人工设计特征+浅层分类器的框架,到基于大数据和深度神经网络的End-To-End的物体检测框架,物体检测一步步变得愈加成熟。

传统检测算法

在2001年,一篇基于Haar+Adaboost的检测方法在学术界和工业界引起了非常大的轰动,它第一次把检测做到实时,并且在当时的技术限制下,检测性能也做的非常亮眼。纵观2012年之前的物体检测算法,可以归结为三个方面的持续优化:

检测窗口的选择

拿人脸检测举例,当给出一张图片时,我们需要框出人脸的位置以及人脸的大小,那么最简单的方法就是暴力搜索候选框,把图像中所有可能出现框的位置从左往右、从上往下遍历一次。并且通过缩放一组图片尺寸,得到图像金字塔来进行多尺度搜索。

但是这种方法往往计算量很大并且效率不高,在实际应用中并不可取。人脸具有很强的先验知识,比如人脸肤色YCbCr空间呈现很紧凑的高斯分布,通过肤色检测可以去除很大一部分候选区域,仅留下极小部分的区域作为人脸检测搜索范围。由于肤色的提取非常快,只是利用一些颜色分布的信息,把每个像素判断一下,整体速度提升很多。但肤色提取只是用到简单的颜色先验,如果遇到和肤色很像的,比如黄色的桌子,很有可能被误判成人脸的候选检测区域。

进一步提高精度衍生出如Selective Search或EdgeBox等proposal提取的方法,基于颜色聚类、边缘聚类的方法来快速把不是所需物体的区域给去除,相对于肤色提取精度更高,极大地减少了后续特征提取和分类计算的时间消耗。

特征的设计

在传统的检测中,Haar由于提取速度快,能够表达物体多种边缘变化信息,并且可以利用积分图快速计算,得到广泛的应用;LBP更多的表达物体的纹理信息,对均匀变化的光照有很好的地适应性;HOG通过对物体边缘使用直方图统计来进行编码,特征表达能力更强,在物体检测、跟踪、识别都有广泛的应用。传统特征设计往往需要研究人员经验驱动,更新周期往往较长,通过对不同的特征进行组合调优,从不同维度描述物体可以进一步提升检测精度,如ACF检测,组合了20种不同的特征表达。

分类器的设计

传统的分类器包含Adaboost、SVM、Decision Tree等。

Adaboost

一个弱分类器往往判断精度不高,通过Adaboost自适应地挑选分类精度高的弱分类器并将它们加权起来,从而提升检测性能。比如说,人脸检测中一个候选窗口需要判断是否为人脸,其中一些弱分类器为颜色直方图分量(如红黄蓝三种颜色),如果黄色分量大于100,那我就认为这块可能是人脸的候选区域,这就是个非常简单的弱分类器。可是,单个这么弱的分类器判断是很不准的,那么我们就需要引入另外一些分量做辅助。比如再引入红色分量大于150,将几个条件叠加起来,就组成了一个比较强的分类器。

这里弱分类器的设计往往就是确定颜色判断的阈值,为什么会选择100呢?其实这是我们需要学习得到的阈值,学习得到,当阈值设定为100时,分类的精度是最高的。另外,为什么要选择红黄蓝三种颜色?同样,因为它们分类的精度更高。通过不断进行特征挑选并学习弱分类器,最终组合提升为Adaboost强分类器。

SVM分类器

SVM通过最大化分类间隔得到分类平面的支持向量,在线性可分的小数据集上有不错的分类精度,另外通过引入核函数将低维映射到高维,从而线性可分,在检测场景被广泛使用。

比如线性SVM分类器就是一些支持向量,将物体表示为一些特征向量,实际当中学到的分类器就是一些系数向量,这些系数向量和特征向量做一个加权的话可以得到分类分数,对分数进行阈值判断,就可以判断是否是某一类。

Decision Tree

决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一种类别。

用从树根到树叶的二叉树来举个简单例子。假如从树根进来有个二分类,我们需要区分它是人脸或者是非人脸,左边是非人脸,右边是人脸。当我进入第一个二叉树分类器节点判断,如果是非人脸的话直接输出结果,如果是人脸候选的话进入下一层再做进一步的分类。通过学习每个节点的分类器来构造决策树,最终形成一个强分类器。

Random Forest

通过对决策树进行Ensemble,组合成随机森林更好的提高分类或者回归精度。假设刚刚提到的决策树是一棵树,那么现在我想学十棵树,每个树采用不同的输入或者分类准则,从不同维度来做分类。以十棵树的分类结果进行投票,8个树认为这个框是人脸,2个认为是非人脸,最终输出为人脸。投票策略可以更好地降低分类误差,在实际场景中得到广泛应用。

从传统方法到深度学习

众所周知,检测算法的演变分为两个阶段,一个就是基于传统特征的解决方法,另外一个就是深度学习算法。在2013年之前传统方法还算是主流,大家都是基于传统的feature优化检测方法。然而,在2013年之后,,整个学术界和工业界都逐渐利用深度学习来做检测。

实际上,这是由于深度学习在分类上超越了很多传统的方法,在2012年的ImageNet上,Hinton两个学生就曾用ConvNet获得了冠军。与传统方法相比,深度学习在分类精度上提高很多。起先,深度学习只是在分类上有非常明显的提升,之后也带动了检测这一块。从物体分类到物体检测,利用了深度学习比较强的feature的表达能力,可以进一步提高检测的精度。

检测方面有两个比较典型的公开测试集,PASCAL VOC和COCO。从这两个测试集上可以看到传统的检测方法和深度学习的检测方法在精度上的差别非常的大。传统的物体检测方法因为其特征比较弱,所以每类都需要训练一个检测器。每个检测器都是针对特定的物体训练,如果有20类的话,就需要跑20次前向预测,相当于单次检测的20倍,作为一个2C端产品,时间消耗和精度性能使得传统方法检测的应用场景不是很多。

目前最新的检测都是基于深度学习的方法,最开始的RCNN,它算是深度学习应用到检测里的鼻祖,从起初它平均49.6的精度记录,到如今已然提升了快40个点。而在传统的方法中SVM-HOG,它的精度才到了31.5,和深度学习相比低了很多。

值得注意的是,传统检测方法随着数据量增大检测性能会趋于饱和,也就是说随着数据量的增大,检测性能会逐渐提高,但到了一定程度之后数据量的提高带来的性能增益非常少。而深度学习的方法则不同,当符合实际场景分布的数据越来越多时,其检测性能会越来越好。

深度学习的物体检测

深度学习早期的物体检测,大都使用滑动窗口的方式进行窗口提取,这种方式本质是穷举法 R-CNN。后来提出Selective Search等Proposal窗口提取算法,对于给定的图像,不需要再使用一个滑动窗口进行图像扫描,而是采用某种方式“提取”出一些候选窗口,在获得对待检测目标可接受的召回率的前提下,候选窗口的数量可以控制在几千个或者几百个。

之后又出现了SPP,其主要思想是去掉了原始图像上的crop/warp等操作,换成了在卷积特征上的空间金字塔池化层。那么为什么要引入SPP层呢?其实主要原因是CNN的全连接层要求输入图片是大小一致的,而实际中的输入图片往往大小不一,如果直接缩放到同一尺寸,很可能有的物体会充满整个图片,而有的物体可能只能占到图片的一角。SPP对整图提取固定维度的特征,首先把图片均分成4份,每份提取相同维度的特征,再把图片均分为16份,以此类推。可以看出,无论图片大小如何,提取出来的维度数据都是一致的,这样就可以统一送至全连接层。

实际上,尽管R-CNN 和SPP在检测方面有了较大的进步,但是其带来的重复计算问题让人头疼,而 Fast R-CNN 的出现正是为了解决这些问题。Fast R-CNN使用一个简化的SPP层 —— RoI(Region of Interesting) Pooling层,其操作与SPP类似,同时它的训练和测试是不再分多步,不再需要额外的硬盘来存储中间层的特征,梯度也能够通过RoI Pooling层直接传播。Fast R-CNN还使用SVD分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层。

Fast R-CNN使用Selective Search来进行区域提取,速度依然不够快。Faster R-CNN则直接利用RPN(Region Proposal Networks)网络来计算候选框。RPN以一张任意大小的图片为输入,输出一批矩形区域,每个区域对应一个目标分数和位置信息。从 R-CNN 到 Faster R-CNN,这是一个化零为整的过程,其之所以能够成功,一方面得益于CNN强大的非线性建模能力,能够学习出契合各种不同子任务的特征,另一方面也是因为人们认识和思考检测问题的角度在不断发生改变,打破旧有滑动窗口的框架,将检测看成一个回归问题,不同任务之间的耦合

R-CNN到Faster R-CNN都是一些通用的检测器。深度学习中还有许多特定物体检测的方法,如Cascade CNN等,随着技术的发展,深度学习的检测越来越成熟。

难点

尽管深度学习已经使得检测性能提升了一大截,但其实依旧存在许多难点。主要难点就是复杂光照情况(过暗、过曝)以及非刚性物体形变(如人体、手势的各种姿态)、低分辨率和模糊图片的检测场景。

众所周知,目前大多数检测算法还是静态图的检测,而海量视频数据已然出现了,未来检测数据支持的类别肯定越来越多,涵盖的面越来越广,检测技术在这方面也需要继续发展。基于视频时序连续性的物体检测和像素级的实例检测将是未来重点突破的方向。

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

责任编辑:psy

原文标题:物体检测算法全概述:从传统检测方法到深度神经网络框架

文章出处:【微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4064

    浏览量

    90724
  • 分类器
    +关注

    关注

    0

    文章

    152

    浏览量

    13107
  • 物体检测
    +关注

    关注

    0

    文章

    8

    浏览量

    9143

原文标题:物体检测算法全概述:从传统检测方法到深度神经网络框架

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解深度学习、神经网络与卷积神经网络的应用

    处理技术也可以通过深度学习来获得更优异的效果,比如去噪、超分辨率和跟踪算法等。为了跟上时代的步伐,必须对深度学习与神经网络技术有所学习和研究
    的头像 发表于 01-11 10:51 690次阅读
    详解<b class='flag-5'>深度</b>学习、<b class='flag-5'>神经网络</b>与卷积<b class='flag-5'>神经网络</b>的应用

    浅析深度神经网络压缩与加速技术

    深度神经网络深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似
    的头像 发表于 10-11 09:14 386次阅读
    浅析<b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>压缩与加速<b class='flag-5'>技术</b>

    基于改进FCOS的表面缺陷检测算法

    首先使用深度卷积神经网络提取输入图像特征图,然后使用分类网络、回归网络、中心度网络对特征图上的所有特征点逐个进行
    发表于 09-28 09:41 226次阅读
    基于改进FCOS的表面缺陷<b class='flag-5'>检测算法</b>

    卷积神经网络的定义、结构和发展历史

    卷积神经网络(Convolutional Neural Network,CNN)是一种非常重要的机器学习算法,主要应用于图像处理领域,用于图像分类、目标识别、物体检测等任务。该算法
    发表于 08-21 17:26 483次阅读

    cnn卷积神经网络算法 cnn卷积神经网络模型

    cnn卷积神经网络算法 cnn卷积神经网络模型 卷积神经网络(CNN)是一种特殊的神经网络,具有很强的图像识别和数据分类能力。它通过学习权重
    的头像 发表于 08-21 17:15 1128次阅读

    卷积神经网络深度神经网络的优缺点 卷积神经网络深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经
    发表于 08-21 17:07 2211次阅读

    卷积神经网络算法流程 卷积神经网络模型工作流程

    ,其独特的卷积结构可以有效地提取图像和音频等信息的特征,以用于分类、识别等任务。本文将从卷积神经网络的基本结构、前向传播算法、反向传播算法等方面探讨其算法流程与模型工作流程,并介绍其在
    的头像 发表于 08-21 16:50 1492次阅读

    卷积神经网络算法比其他算法好吗

    卷积神经网络算法比其他算法好吗 卷积神经网络(Convolutional Neural Networks, CNN)是一种用于图像识别和处理等领域的
    的头像 发表于 08-21 16:49 445次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    卷积神经网络的介绍 什么是卷积神经网络算法 卷积神经网络涉及的关键技术 卷积神经网络(Convo
    的头像 发表于 08-21 16:49 1406次阅读

    卷积神经网络的工作原理 卷积神经网络通俗解释

    。CNN可以帮助人们实现许多有趣的任务,如图像分类、物体检测、语音识别、自然语言处理和视频分析等。本文将详细介绍卷积神经网络的工作原理并用通俗易懂的语言解释。 1.概述 卷积神经网络
    的头像 发表于 08-21 16:49 2667次阅读

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法 卷积神经网络(Convolutional Neural Network,CNN)是一种
    的头像 发表于 08-17 16:30 887次阅读

    基于强化学习的目标检测算法案例

    摘要:基于强化学习的目标检测算法检测过程中通常采用预定义搜索行为,其产生的候选区域形状和尺寸变化单一,导致目标检测精确度较低。为此,在基于深度强化学习的视觉目标
    发表于 07-19 14:35 0次下载

    无Anchor的目标检测算法边框回归策略

    导读 本文主要讲述:1.无Anchor的目标检测算法:YOLOv1,CenterNet,CornerNet的边框回归策略;2.有Anchor的目标检测算法:SSD,YOLOv2,Faster
    的头像 发表于 07-17 11:17 591次阅读
    无Anchor的目标<b class='flag-5'>检测算法</b>边框回归策略

    华为云ModelArts入门开发(完成物体分类、物体检测)

    利用ModelArts框架可以完成图像分类、物体检测、预测分析、声音分类、文本分类等功能。介绍如何使用ModelArts完成图像分类、物体检测、自我学习等功能运用。
    的头像 发表于 07-10 16:26 1280次阅读
    华为云ModelArts入门开发(完成<b class='flag-5'>物体</b>分类、<b class='flag-5'>物体检测</b>)

    基于 FPGA 的目标检测网络加速电路设计

    第一部分 设计概述 /Design Introduction目前主流的目标检测算法都是用CNN来提取数据特征,而CNN的计算复杂度比传统算 法高出很多。同时随着CNN不断提高的精度,其网络
    发表于 06-20 19:45