卷积网络应用于目标检测算法
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卷积网络应用于目标检测算法相关的知识,希望对你有一定的参考价值。
简 介: 目标检测算法作为计算机视觉领域最基本且最具挑战性的任务之一,一直处于研究的热门领域。近年来,随着深度学习和卷积神经网络的兴起,传统的目标检测算法的性能已不能满足现今的指标要求而被基于卷积网络的目标检测算法所取代。本文在对传统目标检测算法简单介绍的基础上,重点介绍了卷积神经网络的一阶段和两阶段目标检测算法,并在最后给出了目标检测未来发展方向的预测和展望。
关键词
: 目标检测,深度学习,卷积神经网络
§01 引 言
目标检测是计算机视觉和数字图像处理的一大热门方向,其应用广泛,在自动驾驶、视频监控、工业检测、故障分析与处理等诸多领域都有其身影,通过对计算机视觉的研究也大大减小了人力资源的消耗以及人工检测的错误率。因此,目标检测作为计算机视觉中最基本的任务自然也就成为了近年来研究的热点。
从 2006
年以来, Bengio
、Hinton
等人引领了深度神经网络的浪潮,大量相关论文被发表。最早出现的卷积神经网络是 LeNet[1]
网络,这个网络虽然很小,却包含了卷积网络所有的基本模块,即卷积层、池化层、全连接层,是其他深度学习模型的基础。但深度神经网络得到人们的广泛关注是在 2012
年,在这一年 Hinton
课题组首次参加 ImageNet
图像识别比赛,并通过构建的 AlexNet[2] CNN
网络取得冠军。 2015
年, He
等人通过构建残差网络 (ResidualNetwork, ResNet[3])
使得网络的深度被大幅扩展,甚至到达了 1000
层,由此深度学习取得了迅猛的发展。
深度学习是利用多层计算模型来学习数据的特征,即数据的抽象表示,目前该技术已广泛应用于计算机视觉领域等模式识别的问题上。目标检测既是计算机视觉的基础任务之一,同时也是视频监控技术的基础任务。由于图像中的目标姿态、色彩、亮度、饱和度、分辨率、天气和场景的多变性和复杂性,对目标的检测、跟踪、动作识别、行为表述等任务在今天依旧是一项非常具有挑战性的课题,存在很大的提升潜力和发展空间。但是,从目前的理论研究和工程实现来看,基于卷积神经网络的目标检测算法相较于传统算法,已经在各方面取得了非常大的提升,几乎已经完全代替了传统的目标检测算法。
§02 传统算法
传统的目标检测算法一般分为三个阶段,即区域选择、特征提取和分类。下面对三个阶段分别进行介绍和分析。
- 区域选择:对目标位置进行定位。设置不同的尺度和长宽比,然后采用滑动窗口的策略对整幅图像进行遍历。这种穷举法的缺点显而易见,即产生了大量冗余窗口,时间复杂度极高,同时大大影响了后续的特征提取和分类预测的速度和性能。
- 特征提取:通常采用人工提取的策略,即手工设计特征提取算法对目标进行识别。由于场景多变性和目标姿态多样性,甚至光照变化引起的图像色彩和饱和度的变化都会使得人工设计的特征提取算法很难具有较强的泛用性,并且设计此算法也需要具有丰富的工程经验。此阶段常用的特征有 SIFT[4]、HOG[5]等。
- 分类:根据特征提取得到的特征对目标进行分类,分类器主要有 SVM、 AdaBoost等。分类结果的好坏直接决定于第二步提取特征的准确和置信度。
综上所述,传统检测算法滑动窗口策略的时间复杂度较高,特征提取器鲁棒性和泛用性不够强,因而其不能满足当下目标检测的要求。
§03 深度学习
传统的特征提取是采用手工设计特征提取器的方法,一般基于一些统计规律和设计者本人的先验知识,不能完全提取出原始图像的信息,因而具有较弱的泛化性能和鲁棒性。卷积神经网络通过学习的方法来自动提取图像更深层次的结构和特征,是一类专门用来处理图像数据的网络结构。卷积网络增加了局部感受野、稀疏权重和参数共享的概念,使得其具有一定的平移和尺度的不变性,更加适合图像这种二维结构的数据的学习。下面将对近年来提出的经典卷积模型进行简要介绍。
3.1 LeNet
LeNet
于 20
世纪九十年代由 Yan LeCun
提出,主要用来进行手写字符的识别和分类,它的实现确立了卷积网络的基本结构——卷积层、池化层、激活函数层和全连接层。由于提出年代久远,当时计算机硬件性能较低,并且缺乏大规模的训练数据,因此 LeNet
网络在处理复杂问题时的效果并不理想。
3.2AlexNet
AlexNet[2]
是 2012年 ImageNet
竞赛冠军获得者 Hinton和他的学生 Alex Krizhevsky
设计的,包含了几个比较新的技术点,也首次在 CNN中成功应用了 ReLU、Dropout
和 LRN,同时使用了 GPU进行算法加速。 AlexNet
把 CNN的基本原理应用到了很宽很深的网络中,其主要用到的新技术总结如下:
(1
)使用 ReLU
代替 Sigmoid
作为 CNN
的激活函数,解决了 Sigmoid
在网络较深时的梯度消失问题。
(2
)训练时使用 Dropout
机制随机忽略一部分神经元,以及数据增强 (data augmentation)
机制,避免了模型过拟合,提高模型的泛化能力。
(3
)采用最大池化 (max pooling)
,避免平均池化 (average pooling)
的模糊化效果,提升了特征的丰富性。
(4
)提出 LRN
层,对局部神经元的活动创建竞争机制,增强了模型的泛化能力。
(5
)使用 CUDA
加速深度卷积网络的训练,利用 GPU
强大的并行计算能力,处理神经网络训练时大量的矩阵运算,极大的减小了模型的训练周期。
3.3VGGNet
VGGNet[6]
由牛津大学计算机视觉组合和 Google DeepMind
公司研究员于 2014
年合作研发的卷积网络,获得了 ILSVRC2014
年比赛的亚军和定位项目的冠军。该模型全部使用 3*3
卷积核来进行特征提取,并证明了模型深度越深、参数越多,其提取特征的能力越强,效果越好。
3.4 ResNet
何凯明等人于 2015
年提出 ResNet[3]
残差网络,解决了卷积网络随着深度的增加会越来越慢难以训练的问题。当网络的深度逐渐变大时,梯度消失现象愈加明显,计算复杂度也快速上升,残差学习则有效地解决了这些问题。残差模型的核心思想是引入“ shortcut
”实现卷积层的跳跃式连接 (skip connection)
,模型如图 1
。
▲ 图3.4.1 残差模型
左图是普通的卷积块,右图是添加了 shortcut的残差块。
3.5 Inception
2014年 Christian等提出了 Inception[7-8]系列。
(1
)Inception-v1
:提出卷积核并行合并 (Bottleneck Layer)
,使得在同一层
可以提取不同的特征。网络中每一层都能学习到“稀疏”或“不稀疏”的特征,既增加了网络的宽度,也增加了网络对尺度的适应性。同时,通过 deep concat
在每个 block
后合成特征,获得非线性属性。按照这样的结构来增加网络的深度,虽然可以提升性能,但是还面临计算量大(参数多)的问题。
(2
)Inception-v2
:使用 BN
层,将每一层的输出都规范化到一个 N(0,1)
的正态分布,同时使用 1*n
和 n*1
这种非对称的卷积来代替 n*n
的对称卷积,既降低网络的参数,又增加了网络的深度。
(3
)Inception-v3
:采用并行的降维结构。
(4
)Inception-v4
:将原来卷积、池化的顺次连接(网络的前几层)替换为 stem
模块,来获得更深的网络结构。
(5
)Inception-ResNet-v2
:结合了 Inception
模块可以在同一层上获得稀疏或非稀疏的特征和 ResNet
模块既可以加速训练,还可以防止梯度弥散两者的优势。
最终, Inception
系列网络对图像识别的错误率对比如表 1
。表 1 Inception
系列模型性能对比 [8]
3.6其他卷积网络
(1
)DenseNet[9]
使用前馈和反馈的形式将每一层连接到另一层,建立了层与层之间的稠密连接,可以有效环节梯度消失、增强特征传播和重用。
(2
)Andrew
于 2017
年提出 MobileNet-v1[10]
模型,大幅减小了模型参数和运算量。
(3
)Li
于 2019
年提出 SKNet[11]
模型,允许每个神经元根据输入信息的多个尺度来自适应地调整其接受区域的大小。
▲ 图3.6.1 Inception系列模型性能对比
§04 二阶段目标检测
4.1 R-CNN
R-CNN
的全称是 Region-CNN
,是第一个成功将深度学习应用到目标检测上的算法。 R-CNN
在提取特征时,将传统的特征 (
如 SIFT
、HOG
特征等 )
换成了深度卷积网络提取的特征,解决了窗口冗余问题,提高了网络对外抗干扰能力。但模型需要生成 2000
个候选区域,较为耗时,并且图像的裁剪或拉伸会导致图像信息的丢失 [13]
。R-CNN
框架结构如图 2
。
▲ 图4.1.1 R-CNN框架结构
4.2 SPPNet
``SPP-Net[14]于 2015年由何凯明提出,是一种可以不用考虑图像大小,输出图像固定长度网络结构,并且可以做到在图像变形情况下表现稳定。
SPP-Net
的主要思想是输入整张图像,提取出整张图像的特征图,然后利用空间关系从整张图像的特征图中,在 spatialpyramid poolinglayer
提取各个 region proposal
的特征。相比于 R-CNN提取 2000个 proposal
,SPP-net只需要将整个图扔进去获取特征,这样操作速度提升了 100倍左右 [14]。
▲ 图4.2.1 SPP-NET框架结构
4.3 Fast R-CNN
Fast R-CNN[15]
于 2015
年由 Girshick
等提出,主要有两大贡献:
(1
)实现大部分 end-to-end
训练( proposal
阶段除外):所有的特征都暂存在显存中,就不需要额外的磁盘空。
(2
)提出 ROI
(Region of Interest
)池化层,相当于单层 SPPLayer
。不同的是 SPP
是 pooling
成多个固定尺度, ROI
只 pooling
到单个固定的尺度,如图 4
。
▲ 图4.3.1 Fast R-CNN框架
Fast R-CNN使用了多任务损失,使得训练速度在同等条件下比 R-CNN快 8倍。
4.4 FasterR-CNN
Faster R-CNN[16]
于 2016
年由 Ren
等提出。在结构上, Faster R-CNN
已经将特征抽取、 proposal
提取、 boundingboxregression
、classification
都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显,真正实现了端到端,其框架结构如图 5
。
▲ 图4.4.1 Fast R-CNN框架
Faster R-CNN
的不足之处在于 ROI
池化层生成的每个特征向量需要经过多个全连接层,这大大增加了计算复杂度和时间复杂度,并且其对小目标检测的效果不是很好。
4.5 Mask R-CNN
MaskR-CNN[17]
由 He等人于 2017年提出,结合了 Faster R-CNN和 FCN的思想,在一个网络中同时做目标检测和实例分割。 MaskR-CNN
的多尺度的特征提取能力得到加强,对小目标物体识别的正确率有了改进,但并没有解决时间复杂度的问题,计算起来不能满足实时监测应用的要求。
4.6TridentNet
TridentNet[18]
由 Li
等人于 2019
年提出。该网络首次提出感受野对目标检测任务中不同 scale
大小物体的影响,提出了适应于多尺度的目标检测框架。同时,使用参数共享的方法,提出了训练时 3
个 branch
,测试时只使用其中一个 branch
,这样保证推断时不会有额外参数和计算量的增加。整个模型成功地解决了目标检测中尺度不变的问题,但是并没有提高检测速度。其框架结构如图 6
。
▲ 图4.6.1 TridentNet框架结构
§05 基于回归算法
5.1YOLO
基于回归的目标检测算法省略了候选区域的生成阶段,直接将特这提取、目标分类以及目标回归在同一个卷积神经网络中实现
以上是关于卷积网络应用于目标检测算法的主要内容,如果未能解决你的问题,请参考以下文章