(完整版)深度神经网络及目标检测学习笔记(2)

  • 格式:doc
  • 大小:230.14 KB
  • 文档页数:7

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深度神经网络及目标检测学习笔记

https://youtu.be/MPU2HistivI

上面是一段实时目标识别的演示,计算机在视频流上标注出物体的类别,包括人、汽车、自行车、狗、背包、领带、椅子等。

今天的计算机视觉技术已经可以在图片、视频中识别出大量类别的物体,甚至可以初步理解图片或者视频中的内容,在这方面,人工智能已经达到了3岁儿童的智力水平。这是一个很了不起的成就,毕竟人工智能用了几十年的时间,就走完了人类几十万年的进化之路,并且还在加速发展。

道路总是曲折的,也是有迹可循的。在尝试了其它方法之后,计算机视觉在仿生学里找到了正确的道路(至少目前看是正确的)。通过研究人类的视觉原理,计算机利用深度神经网络(Deep Neural Network,NN)实现了对图片的识别,包

括文字识别、物体分类、图像理解等。在这个过程中,神经元和神经网络模型、大数据技术的发展,以及处理器(尤其是GPU)强大的算力,给人工智能技术

的发展提供了很大的支持。

本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。

一、神经网络

1.1 神经元和神经网络

神经元是生物学概念,用数学描述就是:对多个输入进行加权求和,并经过激活函数进行非线性输出。

由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器),可以进行线性分类。两层神经网络则可以完成复杂一些的工作,比如解决异或问题,而且具有非常好的非线性分类效果。而多层(两层以上)神经网络,就是所谓的深度神经网络。

神经网络的工作原理就是神经元的计算,一层一层的加权求和、激活,最终输出结果。深度神经网络中的参数太多(可达亿级),必须靠大量数据的训练来“这是苹在父母一遍遍的重复中学习训练的过程就好像是刚出生的婴儿,设置。.果”、“那是汽车”。有人说,人工智能很傻嘛,到现在还不如三岁小孩。其实可以换个角度想:刚出生婴儿就好像是一个裸机,这是经过几十万年的进化才形成的,然后经过几年的学习,就会认识图片和文字了;而深度学习这个“裸机”用了几十年就被设计出来,并且经过几个小时的“学习”,就可以达到这个水平了。

1.2 BP算法

神经网络的训练就是它的参数不断变化收敛的过程。像父母教婴儿识图认字一样,给神经网络看一张图并告诉它这是苹果,它就把所有参数做一些调整,使得它的计算结果比之前更接近“苹果”这个结果。经过上百万张图片的训练,它就可以达到和人差不多的识别能力,可以认出一定种类的物体。这个过程是通过反向传播(Back Propagation,BP)算法来实现的。

建议仔细看一下BP算法的计算原理,以及跟踪一个简单的神经网络来体会训练的过程。

1.3 小结

人工神经网络就是根据人的神经元模型而构建的一个感知算法,利用大量的神经元组合对人的认知行为进行拟合。目前我们仍然无法精确的知道它为什么能工作、如何工作,如同我们仍然无法精确知道人的大脑是如何工作一样。

在摸索过程中,我们好像应该更多地思考人类自己是怎么去“看”的,这会更有助于设计更好的算法。比如本文开头的视频识别算法,它很快,但是不够精确,而有些可以“看清”细节的算法,就会非常慢。就像我们人类自己,走马观花只能看到概貌,驻足观赏才能看清细节。

我们越了解自己,就越能做得更好。

二、卷积神经网络

2.1 简介

卷积神经网络(Convocational Neural Network,CNN)是一个特殊的深层神经网络,目前在计算机视觉领域广泛使用,可以认为它是一个二维向量(图片就是一个二维向量)的感知器。.

CNN算法的核心是对图像(二维向量)进行矩阵卷积运算,这就相当于是对图

像进行加权求和。为了减小计算量,CNN采用了局部感知和权值共享的方法。

局部感知,就是用一个N×N(如N=3)的矩阵(称为卷积核)去滑动扫描图像,进行卷积运算。权值共享,就是扫描图片的滑动矩阵的权值是共享的(相同的)。在实际运算中,这个卷积核相当于一个特征提取的过滤器(filter)。举例来说,

假设一个10×10的图像,用一个3×3的卷积核以步长1做一次卷积运算,那么会得到一个8×8的特征图(feature map)。为了使得到的feature map和原图等大小,一般给原图进行扩充为12×12,这样卷积一次以后,得到的仍然是10×10大小的图像。在这个例子中,如果不采用权值共享,则一共需要100个权值参数,权值共享后,只需要3×3=9个权值参数。

在实际中,一个RGB图像是三个通道,而卷积核也可能有多个。这样计算起来会比上面的例子复杂些,但基本原理是一样的。

2.2 CNN计算流程

一个典型的CNN算法的流程大概是这样的:首先是输入,然后是n个卷积和池化的组合,最后全连接层感知分类。

在这个流程里,卷积运算主要是用来提取特征。一个典型的卷积计算如下图所示。<卷积计算示意图>

图中input是同一个图像的三个通道,周边有填充0;有两个卷积核Filter W0和Filter W1,一个filter滑动到一个位置后计算三个通道的卷积,求和,加bias,

得到这个filter在该位置的最终结果;每个filter的输出是各个通道的汇总;输出的个数与filter个数相同。在这里还要加上激活函数,对计算结果进行非线性变换。常用的激活函数有tanh、ReLU、sigmoid等。激活函数的作用好像可以解释为:过滤掉一些可以忽略的不重要因素,以避免其对决策产生过度影响。

池化是为了降维,有最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化的示例如下图。2×2一个

它输出它将前面卷积层提取的特征映射到样本标记空间,最后是全连接层,一个分类的概率,也就是最终的结果。模型典型的CNN2.3

最大池化,识别×2×55卷积核,2LeNet,最早用于数字识别的CNN,用—POOLCONVPOOL——28输入为×28的灰度点阵,网络结构是(CONV—。—FC)CONV。网络结构如10%2012 ImageNet比赛第一名,准确度超过第二名AlexNet,511、,卷积核分别是3个FC11×、个、个、个下图。5CONV3POOL2LRN 作为激活函数。ReLU,采用3×3、5×.

卷积核。3×3,使用VGG,有跟多的卷积层(16~19)。1来减少参数(用1×卷积核降维)InceptionGoogLeNet,采用层到据说上千层。采用残差网络来解决,很多很多层的网络,从152ResNet 多层网络难以训练的问题。以上网络的对比如下表。.

2.4 训练集应该可以感受到,人工智能也好,深度学习也好,算法的优劣是一

方面,而需要大量的对最终的效果影响更大。而训练集又非常难做,训练数据集的好坏,就在做这个工年ImageNet数据,且标记这些数据需要巨大的工作量(过去的8。逐渐,一些数据集就慢慢出了名。很多算法的性能数据都会指明是在哪个作)数据集上训练的。一些有名的数据集如下。60000,一个手写数字数据库,有:深度学习领域的“Hello World!”MNIST。数据集以28*2810000个测试样本集,每个样本图像的宽高为个训练样本集和12M。二进制存储,不能直接查看。数据集大小为多万幅图片,涵李飞飞团队过去几年的成果,目前有1400ImageNet:MIT层次(目前只有名根据ImageNetWordNet万多个类别。数据集大小为盖21T。其中每个节点的层次结构是由成千上万的图像描绘。词)组织的一个图像数据库,目前,有平均每个节点超过五百的图像。,是一个新的图像识别、分割、和字幕数:Common Objects in ContextCOCO 。40G据集,由微软赞助,具有上下文识别、语义描述等特点。数据集大小为

PASCAL VOC:图片集包括20个目录,数据集图像质量好,标注完备,非常适合用来测试算法性能。数据集大小为2G。

由于数据集生成有一定难度且工作量巨大,两年来GAN(Generative Adversarial Nets,生成对抗网络)快速发展,并在很多应用场景的训练集生成产生了巨大作用,比如车牌识别。

三、物体检测

3.1 检测流程

在实际场景中,我们需要在一副图像中找出有哪些物体,这是一个多对多的映射(所谓的回归)。按照已有的CNN方法,常规的检测流程就是:先找到哪些区域有物体,然后再用CNN来对其分类。

区域选择最原始的办法就是用不同大小的滑动窗口对整幅图像进行扫描。这样不但计算量大,也容易造成误判。一个改进的方法是所谓Region Proposal,即预先找出物体可能在的位置。这里需要提到以下几个概念。

IoU:Intersection over Union,Region Proposal与Ground Truth的窗口的交集比并