对几种常用的用于目标检测算法的理解(CNN,R-CNN,Fast R-CNN,Faster R-CNN )
对几种常用的用于目标检测算法的理解
1 CNN 概述
1.1神经元
神经元是人工神经网络的基本处理单元,一般是多输入单输出的单元,其结构模型如图1所示。
图1.神经元模型
其中:Xi 表示输入信号; n 个输入信号同时输入神经元 j 。 Wij表示输入信号Xi与神经元 j 连接的权重值,bj表示神经元的内部状态即偏置值,yj 为神经元的输出.输入与输出之间的对应关系可用下式表示:
f(·)为激励函数,其可以有很多种选择,可以是线性 纠 正 函 数 ( Rectified Linear Unit , ReLU ),sigmoid函数、tanh ( x )函数、径向基函数等.
1.2 CNN
CNN 的基本结构由输入层、卷积层( conbolu-tinal layer )、池 化 层 ( pooling layer ,也 称 为 取 样层)、全连接层及输出层构成.卷积层和池化层一般会取若干个,采用卷积层和池化层交替设置,即一个卷积层连接一个池化层,池化层后再连接一个卷积层,依此类推.由于卷积层中输出特征面的每个神经元与其输入进行局部连接,并通过对应的连接权值与局部输入进行加权求和再加上偏置值,得到该神经元输入值,该过程等同于卷积过程.
1.2.1 卷积层
卷积层由多个特征面( Feature Map )组成,每个特征面由多个神经元组成,它的每一个神经元通过卷积核与上一层特征面的局部区域相连 。 卷积核是一个权值矩阵(如对于二维图像而言可为 3×3 或5×5 矩阵)。CNN 的卷积层通过卷积操作提取输入的不同特征,第 1 层卷积层提取低级特征如边缘、线条、角落,更高层的卷积层提取更高级的特征 。为了能够更好地理解 CNN ,下面以一维 CNN为例,二维和三维 CNN 可依此进行拓展 .图2所示为一维CNN 的卷积层和池化层结构示意图,最顶层为池化层,中间层为卷积层,最底层为卷积层的输入层.
图2.卷积层与池化层结构示意图
由图3可看出卷积层的神经元被组织到各个特征面中,每个神经元通过一组权值被连接到上一层特征面的局部区域,即卷积层中的神经元与其输入层中的特征面进行局部连接。然后将该局部加权和传递给一个非线性函数如 ReLU 函数即可获得卷积层中每个神经元的输出值.在同一个输入特征面和同一个输出特征面中, CNN 的权值共享,如图3所示,权值共享发生在同一种颜色当中,不同颜色权值不共享.通过权值共享可以减小模型复杂度,使得网络更易于训练.
1.2.2 池化层
池化层紧跟在卷积层之后,同样由多个特征面组成,它的每一个特征面唯一对应于其上一层的一个特征面,不会改变特征面的个数.如图3 ,卷积层是池化层的输入层,卷积层的一个特征面与池化层中的一个特征面唯一对应,且池化层的神经元也与其输入层的局部接受域相连,不同神经元局部接受域不重叠.池化层旨在通过降低特征面的分辨率来获得具有空间不变性的特征。池化层起到二次提取特征的作用,它的每个神经元对部接受域进行池化操作.常用的池化方法有最大池化即取局部接受域中值最大的点、均值池化即对局部接受域中的所有值求均值、随机池化 。
1.2.3 全连接层
在CNN 结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层.与 MLP类似,全连接层中的每个神经元与其前一层的所有神经元进行全连接.全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息 。 为了提升 CNN 网络性能,全连接层每个神经元的激励函数一般采用ReLU 函数 。最后一层全连接层的输出值被传递给一个输出层,可以采用 softmax 逻辑回归(softmaxregression )进 行 分 类,该 层 也 可 称 为 softmax 层(softmax layer ) .
对于一个具体的分类任务,选择一个合适的损失函数是十分重要的。通常, CNN 的全连接层与 MLP 结构一样,CNN 的训练算法也多采用 BP 算法 .当一个大的前馈神经网络训练一个小的数据集时,由于它的高容量,它在留存测试数据( held- outtest data ,也可称为校验集)上通常表现不佳。为了避免训练过拟合,常在全连接层中采用正则化方法———丢失数据(dropout )技术,即使隐层神经元的输出值以 0.5 的概率变为 0 ,通过该技术部分隐层节点失效,这些节点不参加 CNN 的前向传播过程,也不会参加后向传播过程 。对于每次输入到网络中的样本,由于dropout技术的随机性,它对应的网络 结 构 不 相 同,但 是 所 有 的 这 些 结 构 共 享 权值。由于一个神经元不能依赖于其它特定神经元而存在,所以这种技术降低了神经元间相互适应的复杂性,使神经元学习能够得到更鲁棒的特征。目前,关于 CNN 的研究大都采用ReLU+dropout技术,并取得了很好的分类性能 。
2 R-CNN
RCNN(Region with CNN feature)是卷积神经网络应用于目标检测问题的一个里程碑的飞跃。R-CNN具有良好的特征提取和分类性能,对图像选取若干提议区域,然后用卷积神经网络对每个提议区域做前向计算,抽取特征,再用这些特征预测提议区域的类别和边界框。该算法可以分为三步(1)候选区域选择。(2)CNN特征提取。(3)分类与边界回归。
2.1 候选区域选择
区域建议Region Proposal是一种传统的区域提取方法,基于启发式的区域提取方法,用的方法是ss,查看现有的小区域,合并两个最有可能的区域,重复此步骤,直到图像合并为一个区域,最后输出候选区域。然后将根据建议提取的目标图像标准化,作为CNN的标准输入可以看作窗口通过滑动获得潜在的目标图像,在RCNN中一般Candidate选项为1k~2k个即可,即可理解为将图片划分成1k~2k个网格,之后再对网格进行特征提取或卷积操作,这根据RCNN类算法下的分支来决定。然后基于就建议提取的目标图像将其标准化为CNN的标准输入。
2.2 CNN特征提取
标准卷积神经网络根据输入执行诸如卷积或池化的操作以获得固定维度输出。也就是说,在特征提取之后,特征映射被卷积和汇集以获得输出。
2.3分类与边界回归
实际上有两个子步骤,一个是对前一步的输出向量进行分类(分类器需要根据特征进行训练); 第二种是通过边界回归框回归(缩写为bbox)获得精确的区域信息。其目的是准确定位和合并完成分类的预期目标,并避免多重检测。在分类器的选择中有支持向量机SVM,Softmax等等;边界回归有bbox回归,多任务损失函数边框回归等 。R-CNN算法的流程如图3.
图3.R-CNN算法的流程
R-CNN的缺点:效率低下,花费时间长。导致这些问题的最大原因有三个:(1)需要事先提取多个候选区域对应的图像。这一行为会占用大量的磁盘空间;针对传统的CNN来说,输入的map需要时固定尺寸的,而归一化过程中对图片产生的形变会导致图片大小改变,这对CNN的特征提取有致命的坏处;(2)每个region proposal都需要进入CNN网络计算。(3)独立的特征抽取会导致过多次的重复的相同的特征提取,这一举动会导致大大的计算浪费。
3 Fast R-CNN
Fast R-CNN主要解决R-CNN的以下问题:1、训练、测试时速度慢R-CNN的一张图像内候选框之间存在大量重叠,提取特征操作冗余。而Fast R-CNN将整张图像归一化后直接送入深度网络,紧接送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。2、训练所需空间大R-CNN中独立的分类器和回归器需要大量特征作为训练样本。Fast R-CNN把类别判断和位置精调统一用深度网络实现,不再需要额外存储。fast R-CNN算法的流程如图4.
图4.fast R-CNN算法的流程
3.1 Fast R-CNN特征提取
通过CNN(如AlexNet)中的conv、pooling、relu等操作都不需要固定大小尺寸的输入,因此,在原始图片上执行这些操作后,输入图片尺寸不同将会导致得到的feature map(特征图)尺寸也不同。这样就不能直接接到一个全连接层进行分类。在Fast R-CNN中,提出了一个叫做ROI Pooling的网络层,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量。ROI Pooling层将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。这样虽然输入的图片尺寸不同,得到的feature map(特征图)尺寸也不同,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示(如图5),就可再通过正常的softmax进行类型识别。
图5.对每个区域提取固定维度的特征
3.2 Fast R-CNN分类回归阶段
将最后一个阶段的特征输入到两个并行的全连层中(如图6)。一个是对区域的分类Softmax(包括背景),另一个是对bounding box回归的微调。在SVM和Softmax的对比实验中说明,SVM的优势并不明显,故直接用Softmax将整个网络整合训练更好。总代价为两者加权和,Fast-RCNN把两个回归的loss进行联合训练。
图6.分类回归阶段
Fast R-CNN的缺点:region proposal的提取仍然采用selective search,整个检测流程时间大多消耗在这上面。
4 Faster R-CNN
Faster R-CNN设计辅助生成样本的RPN(Region Proposal Networks)网络来代替Fast R-CNN中的选择性搜索,将算法结构分为两个部分,先由RPN网络判断候选框是否为目标,再经分类定位的多任务损失判断目标类型,整个网络流程产生建议窗口的CNN和目标检测的CNN共享卷积神经网络提取的特征信息,节约计算成本,且解决Fast R-CNN算法生成正负样本候选框速度慢的问题,同时避免候选框提取过多导致算法准确率下降。Faster R-CNN网络模型如图7.
图7.Faster R-CNN网络模型
4.1 RPN网络
Region Proposal Networks是Faster RCNN出新提出来的proposal生成网络。其替代了之前RCNN和Fast RCNN中的selective search方法,将所有内容整合在一个网络中,大大提高了检测速度。模型结构主要为“生成anchors -> softmax判定foreground与background-> bbox reg回归fg anchors -> Proposal Layer生成proposals”。模型如图8.
图8.RPN网络
RPN网络具体结构下次再讲。