2017-08-26 21:25:07 Touch_Dream 阅读数 2542
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

基于深度学习的目标检测目前主要是基于卷积神经网络和候选区域region proposal。本文将从四个方面对其进行阐述。

一、传统目标检测

主线:区域选择->特征提取->分类器
1、区域选取
采用滑动窗口的策略对整幅图像进行遍历,而且需要设置不同的尺度,不同的长宽比。这种穷举的策略虽然包含了目标所有可能出现的位置,但是缺点也是显而易见的:时间复杂度太高,产生冗余窗口太多,这也严重影响后续特征提取和分类的速度和性能。
2、特征提取
由于目标的形态多样性,光照变化多样性,背景多样性等因素使得设计一个鲁棒的特征并不是那么容易。然而提取特征的好坏直接影响到分类的准确性。(这个阶段常用的特征有SIFT、HOG等)
3、分类器
主要有SVM, Adaboost等。
总结:
主要的问题是基于滑动窗口的区域选择策略上没有任何的针对性,另外一点是手工设计的特征对于多样性的变化并没有很好的鲁棒性。(因为背景和目标不会一成不变)

二、基于region proposal 深度学习目标检测

region proposal算法主要的解决是滑动窗口的问题,使得滑动的窗口更具有针对性。region proposal(候选区域)是预先找出图中目标可能出现的位置。但由于region proposal利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率。这大大降低了后续操作的时间复杂度,并且获取的候选窗口要比滑动窗口的质量更高(滑动窗口固定长宽比)。比较常用的region proposal算法有selective Search和edge Boxes。
有了候选区域,剩下的工作实际就是对候选区域进行图像分类的工作(特征提取+分类)。

2014年,RBG(Ross B. Girshick)大神使用region proposal+CNN代替传统目标检测使用的滑动窗口+手工设计特征,设计了R-CNN框架,使得目标检测取得巨大突破,并开启了基于深度学习目标检测的热潮。

R-CNN的目标检测流程:
(1) 输入测试图像
(2) 利用selective search算法在图像中提取2000个左右的region proposal。
(3) 将每个region proposal缩放(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征。
(4) 将每个region proposal提取到的CNN特征输入到SVM进行分类。
针对上面的框架给出几点解释:

  • 上面的框架图是测试的流程图,要进行测试我们首先要训练好提取特征的CNN模型,以及用于分类的SVM:使用在ImageNet上预训练的模型(AlexNet/VGG16)进行微调得到用于特征提取的CNN模型,然后利用CNN模型对训练集提特征训练SVM。

  • 对每个region proposal缩放到同一尺度是因为CNN全连接层输入需要保证维度固定。

  • 上图少画了一个过程——对于SVM分好类的region proposal做边框回归(bounding-box regression),边框回归是对region proposal进行纠正的线性回归算法,为了让region proposal提取到的窗口跟目标真实窗口更吻合。因为region proposal提取到的窗口不可能跟人手工标记那么准,如果region proposal跟目标位置偏移较大,即便是分类正确了,但是由于IoU(region proposal与Ground Truth的窗口的交集比并集的比值)低于0.5,那么相当于目标还是没有检测到。

小结:R-CNN在PASCAL VOC2007上的检测结果从DPM HSC的34.3%直接提升到了66%(mAP)。如此大的提升使我们看到了region proposal+CNN的巨大优势。

但是R-CNN框架也存在着很多问题:

(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器

(2) 训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件

(3) 速度慢: 使用GPU, VGG16模型处理一张图像需要47s。

针对速度慢的这个问题,SPP-NET给出了很好的解决方案。
2)SPP-NET (ECCV2014, TPAMI2015)

(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

先看一下R-CNN为什么检测速度这么慢,一张图都需要47s!仔细看下R-CNN框架发现,对图像提完region proposal(2000个左右)之后将每个proposal当成一张图像进行后续处理(CNN提特征+SVM分类),实际上对一张图像进行了2000次提特征和分类的过程!

有没有方法提速呢?好像是有的,这2000个region proposal不都是图像的一部分吗,那么我们完全可以对图像提一次卷积层特征,然后只需要将region proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个region proposal的卷积层特征输入到全连接层做后续操作。(对于CNN来说,大部分运算都耗在卷积操作上,这样做可以节省大量时间)。现在的问题是每个region proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度。SPP-NET恰好可以解决这个问题,使得问题不需要多次CNN计算,而是将整个图做一次性CNN特征提取,然后在待选框的特征只需要在最后特征图中找到对应的位置即可!

参考:小结:使用SPP-NET相比于R-CNN可以大大加快目标检测的速度,但是依然存在着很多问题:

(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练训练边框回归器

(2) SPP-NET在微调网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)

针对这两个问题,RBG又提出Fast R-CNN, 一个精简而快速的目标检测框架。
有了前边R-CNN和SPP-NET的介绍,我们直接看Fast R-CNN的框架图:
这里写图片描述
与R-CNN框架图对比,可以发现主要有两处不同:一是最后一个卷积层后加了一个ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。

(1) ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入。
(2) R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。
(3) Fast R-CNN在网络微调的过程中,将部分卷积层也进行了微调,取得了更好的检测效果。
小结:Fast R-CNN融合了R-CNN和SPP-NET的精髓,并且引入多任务损失函数,使整个网络的训练和测试变得十分方便。在Pascal VOC2007训练集上训练,在VOC2007测试的结果为66.9%(mAP),如果使用VOC2007+2012训练集训练,在VOC2007上测试结果为70%(数据集的扩充能大幅提高目标检测性能)。使用VGG16每张图像总共需要3s左右。

缺点:region proposal的提取使用selective search,目标检测时间大多消耗在这上面(提region proposal 2~3s,而提特征分类只需0.32s),无法满足实时应用,而且并没有实现真正意义上的端到端训练测试(region proposal使用selective search先提取处来)。那么有没有可能直接使用CNN直接产生region proposal并对其分类?Faster R-CNN框架就是符合这样需要的目标检测框架。

4)Faster R-CNN(NIPS2015)
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks)

在region proposal + CNN分类的这种目标检测框架中,region proposal质量好坏直接影响到目标检测任务的精度。如果找到一种方法只提取几百个或者更少的高质量的预选窗口,而且召回率很高,这不但能加快目标检测速度,还能提高目标检测的性能(假阳例少)。RPN(Region Proposal Networks)网络应运而生。

RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,因为anchor机制和边框回归可以得到多尺度多长宽比的region proposal。
这里写图片描述
我们直接看上边的RPN网络结构图(使用了ZF模型),给定输入图像(假设分辨率为600*1000),经过卷积操作得到最后一层的卷积特征图(大小约为40*60)。在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,最后一层卷积层共有256个feature map,那么这个3*3的区域卷积后可以获得一个256维的特征向量,后边接cls layer和reg layer分别用于分类和边框回归(跟Fast R-CNN类似,只不过这里的类别只有目标和背景两个类别)。3*3滑窗对应的每个特征区域同时预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region proposal,这种映射的机制称为anchor。所以对于这个40*60的feature map,总共有约20000(40*60*9)个anchor,也就是预测20000个region proposal。

这样设计的好处是什么呢?虽然现在也是用的滑动窗口策略,但是:滑动窗口操作是在卷积层特征图上进行的,维度较原始图像降低了16*16倍(中间经过了4次2*2的pooling操作);多尺度采用了9种anchor,对应了三种尺度和三种长宽比,加上后边接了边框回归,所以即便是这9种anchor外的窗口也能得到一个跟目标比较接近的region proposal。

NIPS2015版本的Faster R-CNN使用的检测框架是RPN网络+Fast R-CNN网络分离进行的目标检测,整体流程跟Fast R-CNN一样,只是region proposal现在是用RPN网络提取的(代替原来的selective search)。同时作者为了让RPN的网络和Fast R-CNN网络实现卷积层的权值共享,训练RPN和Fast R-CNN的时候用了4阶段的训练方法:

(1) 使用在ImageNet上预训练的模型初始化网络参数,微调RPN网络;

(2) 使用(1)中RPN网络提取region proposal训练Fast R-CNN网络;

(3) 使用(2)的Fast R-CNN网络重新初始化RPN, 固定卷积层进行微调;

(4) 固定(2)中Fast R-CNN的卷积层,使用(3)中RPN提取的region proposal微调网络。

权值共享后的RPN和Fast R-CNN用于目标检测精度会提高一些。

使用训练好的RPN网络,给定测试图像,可以直接得到边缘回归后的region proposal,根据region proposal的类别得分对RPN网络进行排序,并选取前300个窗口作为Fast R-CNN的输入进行目标检测,使用VOC07+12训练集训练,VOC2007测试集测试mAP达到73.2%(selective search + Fast R-CNN是70%), 目标检测的速度可以达到每秒5帧(selective search+Fast R-CNN是2~3s一张)。

需要注意的是,最新的版本已经将RPN网络和Fast R-CNN网络结合到了一起——将RPN获取到的proposal直接连到ROI pooling层,这才是一个真正意义上的使用一个CNN网络实现端到端目标检测的框架。

小结:Faster R-CNN将一直以来分离的region proposal和CNN分类融合到了一起,使用端到端的网络进行目标检测,无论在速度上还是精度上都得到了不错的提高。然而Faster R-CNN还是达不到实时的目标检测,预先获取region proposal,然后在对每个proposal分类计算量还是比较大。比较幸运的是YOLO这类目标检测方法的出现让实时性也变的成为可能。

总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目标检测的流程变得越来越精简,精度越来越高,速度也越来越快。可以说基于region proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。

基于回归方法的深度学习目标检测算法

Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并不能满足实时的要求。YOLO一类的方法慢慢显现出其重要性,这类方法使用了回归的思想,既给定输入图像,直接在图像的多个位置上回归出这个位置的目标边框以及目标类别。
1、YOLO
我们直接看上面YOLO的目标检测的流程图:

(1) 给个一个输入图像,首先将图像划分成7*7的网格

(2) 对于每个网格,我们都预测2个边框(包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率)

(3) 根据上一步可以预测出7*7*2个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可。

可以看到整个过程非常简单,不需要中间的region proposal在找目标,直接回归便完成了位置和类别的判定。
那么如何才能做到直接在不同位置的网格上回归出目标的位置和类别信息呢?上面是YOLO的网络结构图,前边的网络结构跟GoogLeNet的模型比较类似,主要的是最后两层的结构,卷积层之后接了一个4096维的全连接层,然后后边又全连接到一个7*7*30维的张量上。实际上这7*7就是划分的网格数,现在要在每个网格上预测目标两个可能的位置以及这个位置的目标置信度和类别,也就是每个网格预测两个目标,每个目标的信息有4维坐标信息(中心点坐标+长宽),1个是目标的置信度,还有类别数20(VOC上20个类别),总共就是(4+1)*2+20 = 30维的向量。这样可以利用前边4096维的全图特征直接在每个网格上回归出目标检测需要的信息(边框信息加类别)。

小结:YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。而且由于每个网络预测目标窗口时使用的是全图信息,使得false positive比例大幅降低(充分的上下文信息)。但是YOLO也存在问题:没有了region proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,这也导致了YOLO的检测精度并不是很高。
2、SSD
(SSD: Single Shot MultiBox Detector)
上面分析了YOLO存在的问题,使用整图特征在7*7的粗糙网格内回归对目标的定位并不是很精准。那是不是可以结合region proposal的思想实现精准一些的定位?SSD结合YOLO的回归思想以及Faster R-CNN的anchor机制做到了这点。
这里写图片描述
上图是SSD的一个框架图,首先SSD获取目标位置和类别的方法跟YOLO一样,都是使用回归,但是YOLO预测某个位置使用的是全图的特征,SSD预测某个位置使用的是这个位置周围的特征(感觉更合理一些)。那么如何建立某个位置和其特征的对应关系呢?可能你已经想到了,使用Faster R-CNN的anchor机制。如SSD的框架图所示,假如某一层特征图(图b)大小是8*8,那么就使用3*3的滑窗提取每个位置的特征,然后这个特征回归得到目标的坐标信息和类别信息(图c)。

不同于Faster R-CNN,这个anchor是在多个feature map上,这样可以利用多层的特征并且自然的达到多尺度(不同层的feature map 3*3滑窗感受野不同)。

小结:SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准。SSD在VOC2007上mAP可以达到72.1%,速度在GPU上达到58帧每秒。

总结:YOLO的提出给目标检测一个新的思路,SSD的性能则让我们看到了目标检测在实际应用中真正的可能性。

四、提高目标检测方法

R-CNN系列目标检测框架和YOLO目标检测框架给了我们进行目标检测的两个基本框架。除此之外,研究人员基于这些框架从其他方面入手提出了一系列提高目标检测性能的方法。

(1) 难分样本挖掘(hard negative mining)

R-CNN在训练SVM分类器时使用了难分样本挖掘的思想,但Fast R-CNN和Faster R-CNN由于使用端到端的训练策略并没有使用难分样本挖掘(只是设置了正负样本的比例并随机抽取)。CVPR2016的Training Region-based Object Detectors with Online Hard Example Mining(oral)将难分样本挖掘(hard example mining)机制嵌入到SGD算法中,使得Fast R-CNN在训练的过程中根据region proposal的损失自动选取合适的region proposal作为正负例训练。实验结果表明使用OHEM(Online Hard Example Mining)机制可以使得Fast R-CNN算法在VOC2007和VOC2012上mAP提高 4%左右。

(2) 多层特征融合

Fast R-CNN和Faster R-CNN都是利用了最后卷积层的特征进行目标检测,而由于高层的卷积层特征已经损失了很多细节信息(pooling操作),所以在定位时不是很精准。HyperNet等一些方法则利用了CNN的多层特征融合进行目标检测,这不仅利用了高层特征的语义信息,还考虑了低层特征的细节纹理信息,使得目标检测定位更精准。

(3) 使用上下文信息

在提取region proposal特征进行目标检测时,结合region proposal上下文信息,检测效果往往会更好一些。(Object detection via a multi-region & semantic segmentation-aware CNN model以及Inside-Outside Net等论文中都使用了上下文信息)

1、https://zhuanlan.zhihu.com/p/28814010/edit

2015-06-24 15:15:38 wyh7280 阅读数 4613
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪
2017-05-06 10:04:07 u010773275 阅读数 2960
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

深度学习行人检测应用二

涉及论文

*Luo, P., et al. (2014). Switchable deep network for pedestrian detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.

摘要

提出一种可切换深度网络,Switchable Deep Network(SDN)用于行人检测。SDN可以自动学习多级特征,显著性特征和不同身体部分的混合。行人检测面临一些挑战,如背景杂乱,由姿势、视角不同和一些其他因素造成的行人表现多变性。其中一个主要贡献是提出一种SRBM(Switchable Restricted Boltmann Machine),来给不同级的混乱进行建模。在特征级,自动估计了显著性map来对每个测试样本为了从可区分的区域中区分背景clusters。在身体部分级,可以推断出最合适的全身和部分集合的模型。并且提出了一种高效预训练SDN的方法。本算法在Caltech和ETH数据集上进行了评估。

Contributions

  1. 提出一种同意的深度模型来联合学习特征,显著性特征,以及可代表全身和部分混合的模型。
  2. 通过介绍了一种利用RBM的可切换的构建思路来丰富了传统CNN网络。
  3. 提出了一种类EM算法来预训练可变换层。

核心内容

深度模型概要

SRBM

基本构架

图 1 网络结构图
图 1 网络结构图

RBM就是限制玻尔兹曼机。RBM的实现是根据可视层和隐层的联合分布,然后做最大似然法估计。类似于聚类。
SRBM,顾名思义,可切换。不像RBM是无监督,SRBM是同时观察输入和标注的,因为有有监督信息可以提高分类性能。
能量函数:

能量函数
K代表部分的序号。Θ = {W, b, c, U, d},U是全连接权重,d是偏置矩阵。可切换参数 代表这一部分被激活。输出的特征是各部分隐藏特征的线性组合。 是代表每个可区分行人区域的显著性特征。
图 2行人和显著性特征
图 3 行人和显著性特征
上图(b)中,显著性把行人和背景区分开来,背景出m值为0,行人处为1。
类似于RBM,可见层和隐藏层是条件独立的,当给出其他的参数,条件概率可以写成:
这里写图片描述
这里写图片描述

图 4得分系统和最终得分,其中B_p是得到的和结果,

这里写图片描述

m显著性可以看做是初始输入x和这里写图片描述输入 的联系。

预训练算法

预训练算法
图 4 预训练算法

预训练分为两部分,(1)初始化(2)EM。初始化用k-means聚类输入,训练常规RBM,给每部分权重矩阵初始化。EM中,在E-step估计s然后固定,M-step最大化log最大似然log p(x,y|s),以 为参照。
由于从上述公式看出需要学习5个参数,这个计算量比较大,于是可以采用类EM的算法来简化。首先将可切换参数认为是伪观测参量,在这种强狂下,可以通过E-step直接估计他们的值。然后在M-step通过其他四个参数更新他的值。这种策略大约减少了20%的运算量。

EM算法

用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计,EM算法每次迭代分为两步,E,求期望,M,求极大。
输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z|θ),条件分布P(Z|Y, θ)
输出:模型参数θ
1.选择参数的初值θ^((0)),开始迭代
2.E步:记θ^((i))为第i次迭代参数θ的估计值,联合分布P(Y,Z|θ),条件分布P(Z|Y, θ);
Q(θ,θ^(i) )=E_z [logP(Y,Z│θ)│Y,θ^((i) ) ]
=∑_z▒〖logP(Y,Z│θ)P(Z|Y,θ^((i) ))〗
分布都是当前情况下的分布。
3.M步:求使Q(θ,θ^(i) )极大化的θ,确定第i+1次迭代的参数的估计值θ^(i+1)
Q(θ,θ^(i+1) )=〖argmax〗_θ Q(θ,θ^(i) )
4.重复(2)(3)直到收敛。

SDN

基本构架

系统整体网络构架
图 4 系统整体网络构架
整个网络分三部分,卷积层,可切换层(SRBM)和逻辑斯蒂回归。卷积层得到中低级特征,可切换层得到高级混合模型和身体全身和部分的显著性特征,逻辑斯蒂回归得到预测结果。可扩展。
输入数据六通道,尺寸108*36。前三通道是三个不同尺度的BB(bounding box)resize之后YUV域的Y通道值,后三通道是前三通道用Sober边缘检测的结果,这样设计是处于多尺度和边缘信息的考虑。
得到64通道数据,9*9*6
这里写图片描述
W滤波器参数矩阵,b偏置项。对结果max pooling得到图中的body,然后送入可切换层,每个切换层采用K部分(本文采用K=10)。在可切换层中,整体与部分并存,body整体分为几个身体的部分,本文采用的是分为三个部分如(d)。最后进行逻辑斯蒂回归预测结果。

预训练和微调

Gabor滤波器初始化卷积层滤波器,因为Gabor滤波器可以捕捉行人的边缘形状。可切换层在之前的算法预训练。
微调可以提高检测效率,采用降低错误熵来进行微调
这里写图片描述
参数通过随机梯度下降来优化。
随机梯度下降是每次使用一个样本迭代,下降速度比梯度下降速度快很多,但有可能陷入局部极小值。

总结

本文提出了一种可切换深度网络来对背景簇和复杂的行人外观进行建模。本SDN通过加入了以SRBM为典型的可切换层改进了cnn。检测结果达到了高水平。

2019-08-09 16:41:17 baishuo8 阅读数 302
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪
2019-03-21 11:16:29 u013006675 阅读数 1759
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

前言

之前写的博客,一直没放出来,今天亮出来晒晒太阳。
深度学习时代的无监督异常行为检测,套路都非常单一,都是用生成式网络(包括自编码器,GAN等)来重构或简单地预测帧,然后通过比较重构误差和阈值来达到判断异常与否的目的。这一篇就是一个典型,不过工作做得蛮充足,效果也不错,值得学习。
本文出自上科大(上海科技大学)高盛华老师团队。code已放,写的很不错:https://github.com/stevenLiuWen/ano_pred_cvpr2018

Motivation

文章总有motivation,如果motivation不清晰,那么本文多半是个水文(狗头,狗头)。本文的Motivation很清晰,就是对于常见的AutoEncoder做异常行为检测,有个严重的潜在问题,就是AutoEncoder往往过完备(overcomplete),容易引起恒等映射,试想,在测试时候,正常样本本成功重构了,异常样本靠着恒等映射,也被成功“重构”(其实是成功复制)了,那还如何能把它们区分开呢?如果做一个很简单的改动,就是将重构当前帧改为预测后一帧或后几帧,是不是就能避免恒等映射的风险?这就是本文的出发点。那既然选择了预测,那GAN自然成了首选,作者为了保证GAN的生成质量,在优化函数上又下了一些功夫,下面来具体看看吧。

方法与网络框架:Future Frame Prediction Based Anomaly Detection Method

网络架构很清晰啦,输入是连续的tt帧(本文t=4t=4),送入一个生成器,生成第t+1t+1帧,为了保证生成质量,这里作者用了三个loss来约束,第一个loss就是简单的L2距离,保证对应像素之间尽可能相似:

第二个loss是梯度约束,就是保证生成图像的梯度和原图像梯度一致:
第三个loss是运动约束,就是保证生成图像能像真实图像一样,能和其前一帧图像之间产生一个正确的光流,这个还挺有新意,如下式,其中f代表光流生成算法,这里使用的是Flownet:

既然是GAN,那该判别器登场了,作者这里使用的是Least Square GAN。套路都差不多,即为了进一步使生成图像更逼真,引入判别器。对于判别器D,这里使用一个patch discriminator,训练D时,固定G参数,优化如下loss function,直白来说就是对真实图像II,让他分类为真,对生成图像I^\hat{I},让他分类为假,即通过训练,增加判别器的真假判别能力:

对于生成器,增加一个对抗loss,即想方设法骗过判别器,这里同样优化一个MSE loss,都没什么可说的:

那最后的loss function就明晰了,即交替训练以下两个loss function:

到这里网络框架的训练部分就介绍完了,下面说下怎么测试。前文也说了,就是比较预测误差,计算预测误差无非是比较生成(预测)的图像和真实图像之间的差别,作者这里采用的是图像处理领域常见的PSNR( Peak Signal to Noise Ratio,峰值信噪比),关于这一点,笔者也没有过多思考在异常行为检测领域究竟用哪个会比较好,如果你有想法,欢迎留言或发邮件交流。PSNR的具体表达式是:

最后,将每一个视频的PSNR归一化为0到1,方便计算整个数据集的AUC。

实验

作者在四个库上做了实验,CUHK Avenue,UCSD Ped1,UCSD Ped1以及ShanghaiTech。评价指标使用帧级别的AUC。

先比较SOTA,效果不错,如下表:

比较生成器部分,这里使用的gap指标指的是正常样本的平均得分(预测误差)和异常样本的平均得分之间的差,自然是越大越好,说明分的越开,如下表所示。

比较运动约束部分的效果,下表比较了有和没有之间的差异:

比较不同loss的效果,如下图所示,说明每个loss都起到了作用:

最后比较了和Autoencoder的效果提升,如下图所示,提升挺大:

最后的最后,呈现两个异常行为视频下的效果,感兴趣的话可以去作者GitHub上贴的那个youtube链接里看视频,这里我只贴图,不过多说明了,大家可以自己看。

总结

其实预测这个套路并不是本文第一个提出的,之前就有人这么做了,比如ACM MM里就有一篇:Spatio-Temporal AutoEncoder for Video Anomaly Detection,但时间间距特别短,作者在文中强调自己是第一篇,可能也是没问题的。但是深度学习下的异常行为检测这两年一直都停留在这种生成模型的套路中,小修小补,非常期待见到新的工作产生。

没有更多推荐了,返回首页