当前位置:文档之家› (完整版)深度神经网络及目标检测学习笔记

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

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

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

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最大池化的示例如下图。

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

2.3 典型的CNN模型

LeNet,最早用于数字识别的CNN,用5×5卷积核,2×2最大池化,识别输入为28×28的灰度点阵,网络结构是(CONV—POOL—CONV—POOL—CONV—FC)。

AlexNet,2012 ImageNet比赛第一名,准确度超过第二名10%。网络结构如下图。5个CONV、3个POOL、2个LRN、3个FC,卷积核分别是11×11、5×5、3×3,采用ReLU作为激活函数。

VGG,有跟多的卷积层(16~19),使用3×3卷积核。

GoogLeNet,采用Inception来减少参数(用1×1卷积核降维)。

ResNet,很多很多层的网络,从152层到据说上千层。采用残差网络来解决多层网络难以训练的问题。

以上网络的对比如下表。

2.4 训练集

应该可以感受到,人工智能也好,深度学习也好,算法的优劣是一方面,而训练数据集的好坏,对最终的效果影响更大。而训练集又非常难做,需要大量的数据,且标记这些数据需要巨大的工作量(过去的8年ImageNet就在做这个工作)。逐渐,一些数据集就慢慢出了名。很多算法的性能数据都会指明是在哪个数据集上训练的。一些有名的数据集如下。

MNIST:深度学习领域的“Hello World!”,一个手写数字数据库,有60000个训练样本集和10000个测试样本集,每个样本图像的宽高为28*28。数据集以二进制存储,不能直接查看。数据集大小为12M。

ImageNet:MIT李飞飞团队过去几年的成果,目前有1400多万幅图片,涵盖2万多个类别。数据集大小为1T。ImageNet根据WordNet层次(目前只有名词)组织的一个图像数据库,其中每个节点的层次结构是由成千上万的图像描绘。目前,有平均每个节点超过五百的图像。

COCO:Common Objects in Context,是一个新的图像识别、分割、和字幕数据集,由微软赞助,具有上下文识别、语义描述等特点。数据集大小为40G。

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

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

三、物体检测

3.1 检测流程

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

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

IoU:Intersection over Union,Region Proposal与Ground Truth的窗口的交集比并集的比值,如果IoU低于0.5,那么相当于目标还是没有检测到。Ground Truth 就是实际物体真实的区域。

mAP,mean Average Precision,平均精度均值。是对多个验证集求PR曲线的均值。PR曲线是Precision和Recall作为横纵坐标轴的曲线,Precision是准确率,即检测出的样本有多少是正确的,Recall是召回率,即应该被检测出的样本有多少被检测出来。PR曲线越高,说明算法越好,即又多又准。

3.2 典型的算法

从2014年的R-CNN(Region proposal+CNN)开始,出现了一系列目标检测算法,从R-CNN到fast R-CNN和faster R-CNN,以及SPP-NET,R-FCN,还有YOLOv1~v3和SSD、DSSD。

R-CNN:采用selective search方法(一种Region Proposal方法,Region Proposal 的方法有selective search、edge box)进行区域选择,选出2000个左右。将每个区域缩放至227×227,再送入CNN计算特征,最后由SVM(支持向量机)分

类。很明显,R-CNN很慢。

SPP-NET:为了加快R-CNN的速度,采取对一副图像的多个Region Proposal 一次提取特征。这就要求网络必须适应不同尺寸的图像。方法是在全连接层之前加入一个网络层,让它对任意尺寸的输入产生固定的输出(将图像分成16、4、1个块)。SPP-NET训练步骤繁琐,并且仍然不够快。

fast R-CNN:与R-CNN相比,fast R-CNN在最后一个卷积层后加了一个ROI pooling layer,同时损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练,最后用softmax替代SVM进行分类。fast R-CNN 不是真正的端到端训练测试,还是需要selective search来进行Region Proposal,所以还是不够快,不能做实时的检测。

Faster R-CNN:采用RPN(Region Proposal Networks)用Anchor机制和边框回归直接得到多尺度多长宽比的Region Proposal。Fast R-CNN做到了真正的端到端,但可惜的是仍然不能达到实时检测。RPN需要详细了解一下。

R-FCN: Object Detection via Region-based Fully Convolutional Networks,基于区域的全卷积网络物体检测。嫁接ResNet的卷积层,采用RPN获取ROI,针对每个ROI,在POOL之前加入位置信息(通过score map)。R-FCN的score map 计算有点绕,需要慢慢理解。

YOLO:虽然精度不是最好,但确是目前实时性最好的算法,可以在视频中实时检测出很多物体。倒也符合人类视觉的特点,一眼望去先看个大概,要想看细节,那就定格仔细看吧。YOLO系列的算法后面详细总结。

SSD:SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准。

一般后续出现的算法都会与之前的算法做性能对比,SSD和YOLOv1比,YOLOv2、v3又和SSD比,在不同的训练集上也有不同的mAP,看起来真是眼花缭乱。因为机缘巧合,我先接触到YOLO系列算法,在自己的电脑上运行DEMO,也仔细看了YOLO的发展,于是给一个稍微详细的总结。

3.3 YOLO系列算法

YOLO算法主要是针对以往物体检测算法速度较慢的弊端,利用一个单独的

端到端网络,将原始图像输入,直接输出物体位置和类别。YOLO没有显式的求取Region Proposal的过程(R-CNN和Fast R-CNN采用selective search获取,Faster R-CNN和R-FCN则采用了RPN)。YOLO的名字也来自于其核心特征:You Only Look Once,只看一次。

从2015年到2018年3月,YOLO一共出了三个版本v1、v2(YOLO9000)、v3,性能逐渐提高,mAP与其它算法持平或略胜一筹。

3.3.1 YOLOv1

YOLO将对象检测框架化为空间分离边界框和相关类别概率的回归问题。单个神经网络在一次评估中直接从完整图像预测边界框和类概率。由于整个检测流水线是单个网络,因此可以直接针对检测性能端到端地进行优化,使得统一架构非常快。

基础YOLO模型以45帧/秒的速度实时处理图像。较小版本的网络Fast YOLO每秒处理可达155帧,同时实现其他实时检测器的mAP的两倍。与最先进的检测系统相比,YOLO产生更多的定位误差,但不太可能预测背景上的误报。最后,YOLO表现出对目标识别很好的通用性。

YOLO检测网络有24个卷积层,其次是2个完全连接的层。交替的1×1卷积层减少了来自前面层的特征空间。在分辨率的一半(224 * 224输入图像)上预分割ImageNet分类任务上的卷积图层,然后将分辨率加倍以进行检测。

YOLO将输入图像分成S×S个格子,若某个物体Ground truth的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。

每个边界框由5个预测组成:x,y,w,h和置信度。(x, y)坐标表示相对

于网格单元边界的框的中心。宽度和高度是相对于整个图像预测的。最后,置信度预测表示预测框与任何ground truth框之间的IOU。

每个网格单元还预测C条件类概率Pr(Classi|Object)。这些概率取决于包含对象的网格单元。仅预测每个网格单元的一组类概率,而不管箱B的数量。在测试时间,将条件类概率和单个盒子置信度预测相乘,

这给出了每个盒子的类别特定置信度评分。这些分数编码该类出现在盒子中的概率以及预测盒子如何适合该对象。YOLO的输出维度为S×S×(B×5+C)。检测中采用了S=7,B=2,C=20。

YOLO对占比较小的目标检测效果一般。虽然每个格子可以预测B个bounding box,但是最终只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只能预测出一个物体。当物体占画面比例较小,如图像中包含鸟群时,每个格子包含多个物体,但却只能检测出其中一个。

YOLO训练时的Loss函数如下

其中λcoord=5,λnoobj=0.5,是权重系数。公式包括三部分,分别是坐标误差、IOU误差和分类误差。

3.3.2 YOLO9000

YOLOv2对之前的版本做了改进。取消了dropout,在卷积层全部使用Batch Normalization;采用448×448的分辨率训练检测网络;借鉴Faster R-CNN的思想预测bbox的偏移,移除了全连接层,并且删掉了一个POOL层使特征的分辨率更大。

网络结构图如下:

YOLOv2的性能比v1有了提升,具体数据在v3部分进行对比。

3.3.3 YOLOv3

YOLOv3是2018年3月25号发布的,里面对当前各种物体检测算法做了性能对比。

在320 * 320分辨率下,YOLOv3达到28.2 mAP、22 ms,与SSD一样精确,但速度提高了三倍。对旧的0.5 IOU mAP检测指标YOLOv3表现不俗。在Titan X上,它达到了51 ms、57.9 AP50,而RetinaNet则是198 ms、57.5 AP50,性能相似,但是快了3.8倍。

YOLOv3主要在多尺度预测、基础分类网络及分类器上做了改进。

采用多尺度预测,每种尺度预测3个box(类似FPN)。anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3中尺度。尺度1:在基础网络之后添加一些卷积层再输出box信息。尺度2:从尺度1中的倒数第二层的卷积层上采样(×2)再与最后一个16×16大小的特征图相加,再次通过多个卷积后输出box信息。相比尺度1变大两倍。尺度3:与尺度2类似,使用了32×32大小的特征图。

基础网络采用了Darknet-53,这个新网络比v2的Darknet-19强大得多,但仍比ResNet-101或ResNet-152更高效。

边框预测采用之前的logistic。

YOLO的优点很明显,就是速度快、简单,背景误检率低,通用性强。对于非自然图像物体的检测率远远高于DPM和RCNN系列检测方法。

但相比RCNN系列物体检测方法,YOLO的缺点是物体位置精准性较差,且召回率低。

YOLO系列算法可以在Ubuntu上运行,我自己在Windows 10上也跑起来了,硬件:Nvidia Geforce MX150,软件:Visual Studio 2015+CUDA9.1+OpenCV3.0。

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

深度神经网络及目标检测学习笔记 https://youtu.be/MPU2HistivI 上面是一段实时目标识别的演示,计算机在视频流上标注出物体的类别,包括人、汽车、自行车、狗、背包、领带、椅子等。 今天的计算机视觉技术已经可以在图片、视频中识别出大量类别的物体,甚至可以初步理解图片或者视频中的内容,在这方面,人工智能已经达到了3岁儿童的智力水平。这是一个很了不起的成就,毕竟人工智能用了几十年的时间,就走完了人类几十万年的进化之路,并且还在加速发展。 道路总是曲折的,也是有迹可循的。在尝试了其它方法之后,计算机视觉在仿生学里找到了正确的道路(至少目前看是正确的)。通过研究人类的视觉原理,计算机利用深度神经网络(Deep Neural Network,NN)实现了对图片的识别,包 括文字识别、物体分类、图像理解等。在这个过程中,神经元和神经网络模型、大数据技术的发展,以及处理器(尤其是GPU)强大的算力,给人工智能技术 的发展提供了很大的支持。 本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。 一、神经网络 1.1 神经元和神经网络 神经元是生物学概念,用数学描述就是:对多个输入进行加权求和,并经过激活函数进行非线性输出。 由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器),可以进行线性分类。两层神经网络则可以完成复杂一些的工作,比如解决异或问题,而且具有非常好的非线性分类效果。而多层(两层以上)神经网络,就是所谓的深度神经网络。 神经网络的工作原理就是神经元的计算,一层一层的加权求和、激活,最终输出结果。深度神经网络中的参数太多(可达亿级),必须靠大量数据的训练来“这是苹在父母一遍遍的重复中学习训练的过程就好像是刚出生的婴儿,设置。.果”、“那是汽车”。有人说,人工智能很傻嘛,到现在还不如三岁小孩。其实可以换个角度想:刚出生婴儿就好像是一个裸机,这是经过几十万年的进化才形成的,然后经过几年的学习,就会认识图片和文字了;而深度学习这个“裸机”用了几十年就被设计出来,并且经过几个小时的“学习”,就可以达到这个水平了。 1.2 BP算法 神经网络的训练就是它的参数不断变化收敛的过程。像父母教婴儿识图认字一样,给神经网络看一张图并告诉它这是苹果,它就把所有参数做一些调整,使得它的计算结果比之前更接近“苹果”这个结果。经过上百万张图片的训练,它就可以达到和人差不多的识别能力,可以认出一定种类的物体。这个过程是通过反向传播(Back Propagation,BP)算法来实现的。 建议仔细看一下BP算法的计算原理,以及跟踪一个简单的神经网络来体会训练的过程。

深度学习系列(7):神经网络的优化方法

机器?学习中,梯度下降法常?用来对相应的算法进?行行训练。常?用的梯度下降法包含三种不不同的形式,分别是BGD 、SGD 和MBGD ,它们的不不同之处在于我们在对?目标函数进?行行梯度更更新时所使?用的样本量量的多少。 以线性回归算法来对三种梯度下降法进?行行?比较。 ?一般线性回归函数的假设函数为: (即有n 个特征)对应的损失函数为下图即为?一个?二维参数和组对应的损失函数可视化图像:批量量梯度下降法(Batch Gradient Descent ,简称BGD )是梯度下降法最原始的形式,它的具体思路路是在更更新每?一参数时都使?用所有的样本来进?行行更更新,其数学形式如下: 深度学习系列列(7):神经?网络的优化?方法?一、Gradient Descent [Robbins and Monro, 1951,Kiefer et al., 1952] = h θ∑j =0n θj x j L (θ)=12m ∑i =1 m (h ()?)x i y i 2θ0θ11.1 BGD (Batch Gradient Descent )

还是以上?面?小球的例例?子来看,momentum ?方式下?小球完全是盲?目被动的?方式滚下的。这样有个缺 三、NAG (Nesterov accelerated gradient )[Nesterov, 1983]

点就是在邻近最优点附近是控制不不住速度的。我们希望?小球可以预判后?面的“地形”,要是后?面地形还是很陡峭,那就继续坚定不不移地?大胆?走下去,不不然的话就减缓速度。 当然,?小球?自?己也不不知道真正要?走到哪?里里,这?里里以 作为下?一个位置的近似,将动量量的公式更更改为: 相?比于动量量?方式考虑的是上?一时刻的动能和当前点的梯度,?而NAG 考虑的是上?一时刻的梯度和近似下?一点的梯度,这使得它可以先往前探探路路,然后慎重前进。 Hinton 的slides 是这样给出的: 其中两个blue vectors 分别理理解为梯度和动能,两个向量量和即为momentum ?方式的作?用结果。?而靠左边的brown vector 是动能,可以看出它那条blue vector 是平?行行的,但它预测了了下?一阶段的梯度是red vector ,因此向量量和就是green vector ,即NAG ?方式的作?用结果。 momentum 项和nesterov 项都是为了了使梯度更更新更更加灵活,对不不同情况有针对性。但是,?人?工设置?一些学习率总还是有些?生硬,接下来介绍?几种?自适应学习率的?方法 训练深度?网络的时候,可以让学习率随着时间退?火。因为如果学习率很?高,系统的动能就过?大,参数向量量就会?无规律律地变动,?无法稳定到损失函数更更深更更窄的部分去。对学习率衰减的时机把握很有技巧:如果慢慢减?小,可能在很?长时间内只能浪费计算资源然后看着它混沌地跳动,实际进展很少;但如果快速地减少,系统可能过快地失去能量量,不不能到达原本可以到达的最好位置。通常,实现学习率退?火有三种?方式: θ?γv t ?1 =γ+ηJ (θ?γ) v t v t ?1?θv t ?1θ=θ?v t 四、学习率退?火

(完整版)深度神经网络全面概述

深度神经网络全面概述从基本概念到实际模型和硬件基础 深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由IEEE Fellow Joel Emer 领导的一个团队发布了一篇题为《深度神经网络的有效处理:教程和调研(Efficient Processing of Deep Neural Networks: A Tutorial and Survey)》的综述论文,从算法、模型、硬件和架构等多个角度对深度神经网络进行了较为全面的梳理和总结。鉴于该论文的篇幅较长,机器之心在此文中提炼了原论文的主干和部分重要内容。 目前,包括计算机视觉、语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(deep neural networks,DNN)。DNN 在很多人工智能任务之中表现出了当前最佳的准确度,但同时也存在着计算复杂度高的问题。因此,那些能帮助DNN 高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加硬件成本的技术是在人工智能系统之中广泛部署DNN 的关键。 论文地址:https://https://www.doczj.com/doc/413603949.html,/pdf/1703.09039.pdf 本文旨在提供一个关于实现DNN 的有效处理(efficient processing)的目标的最新进展的全面性教程和调查。特别地,本文还给出了一个DNN 综述——讨论了支持DNN 的多种平台和架构,并强调了最新的有效处理的技术的关键趋势,这些技术或者只是通过改善硬件设计或者同时改善硬件设计和网络算法以降低DNN 计算成本。本文也会对帮助研究者和从业者快速上手DNN 设计的开发资源做一个总结,并凸显重要的基准指标和设计考量以评估数量快速增长的DNN 硬件设计,还包括学界和产业界共同推荐的算法联合设计。 读者将从本文中了解到以下概念:理解DNN 的关键设计考量;通过基准和对比指标评估不同的DNN 硬件实现;理解不同架构和平台之间的权衡;评估不同DNN 有效处理技术的设计有效性;理解最新的实现趋势和机遇。 一、导语 深度神经网络(DNN)目前是许多人工智能应用的基础[1]。由于DNN 在语音识别[2] 和图像识别[3] 上的突破性应用,使用DNN 的应用量有了爆炸性的增长。这些DNN 被部署到了从自动驾驶汽车[4]、癌症检测[5] 到复杂游戏[6] 等各种应用中。在这许多领域中,DNN 能够超越人类的准确率。而DNN 的出众表现源于它能使用统计学习方法从原始感官数据中提取高层特征,在大量的数据中获得输入空间的有效表征。这与之前使用手动提取特征或专家设计规则的方法不同。 然而DNN 获得出众准确率的代价是高计算复杂性成本。虽然通用计算引擎(尤其是GPU),已经成为许多DNN 处理的砥柱,但提供对DNN 计算更专门化的加速方法也越来越热门。本文的目标是提供对DNN、理解DNN 行为的各种工具、有效加速计算的各项技术的概述。 该论文的结构如下:

神经网络及深度学习

可用于自动驾驶的神经网络及深度学习 高级辅助驾驶系统(ADAS)可提供解决方案,用以满足驾乘人员对道路安全及出行体验的更高要求。诸如车道偏离警告、自动刹车及泊车辅助等系统广泛应用于当前的车型,甚至是功能更为强大的车道保持、塞车辅助及自适应巡航控制等系统的配套使用也让未来的全自动驾驶车辆成为现实。 作者:来源:电子产品世界|2017-02-27 13:55 收藏 分享 高级辅助驾驶系统(ADAS)可提供解决方案,用以满足驾乘人员对道路安全及出行体验的更高要求。诸如车道偏离警告、自动刹车及泊车辅助等系统广泛应用于当前的车型,甚至是功能更为强大的车道保持、塞车辅助及自适应巡航控制等系统的配套使用也让未来的全自动驾驶车辆成为现实。 如今,车辆的很多系统使用的都是机器视觉。机器视觉采用传统信号处理技术来检测识别物体。对于正热衷于进一步提高拓展ADAS功能的汽车制造业而言,深度学习神经网络开辟了令人兴奋的研究途径。为了实现从诸如高速公路全程自动驾驶仪的短时辅助模式到专职无人驾驶旅行的自动驾驶,汽车制造业一直在寻求让响应速度更快、识别准确度更高的方法,而深度学习技术无疑为其指明了道路。 以知名品牌为首的汽车制造业正在深度学习神经网络技术上进行投资,并向先进的计算企业、硅谷等技术引擎及学术界看齐。在中国,百度一直在此技术上保持领先。百度计划在2019 年将全自动汽车投入商用,并加大全自动汽车的批量生产力度,使其在2021 年可广泛投入使用。汽车制造业及技术领军者之间的密切合作是嵌入式系统神经网络发展的催化剂。这类神经网络需要满足汽车应用环境对系统大小、成本及功耗的要求。 1轻型嵌入式神经网络 卷积式神经网络(CNN)的应用可分为三个阶段:训练、转化及CNN在生产就绪解决方案中的执行。要想获得一个高性价比、针对大规模车辆应用的高效结果,必须在每阶段使用最为有利的系统。 训练往往在线下通过基于CPU的系统、图形处理器(GPU)或现场可编程门阵列(FPGA)来完成。由于计算功能强大且设计人员对其很熟悉,这些是用于神经网络训练的最为理想的系统。 在训练阶段,开发商利用诸如Caffe(Convolution Architecture For Feature Extraction,卷积神经网络架构)等的框架对CNN 进行训练及优化。参考图像数据库用于确定网络中神经元的最佳权重参数。训练结束即可采用传统方法在CPU、GPU 或FPGA上生成网络及原型,尤其是执行浮点运算以确保最高的精确度。 作为一种车载使用解决方案,这种方法有一些明显的缺点。运算效率低及成本高使其无法在大批量量产系统中使用。 CEVA已经推出了另一种解决方案。这种解决方案可降低浮点运算的工作负荷,并在汽车应用可接受的功耗水平上获得实时的处理性能表现。随着全自动驾驶所需的计算技术的进一步发展,对关键功能进行加速的策略才能保证这些系统得到广泛应用。 利用被称为CDNN的框架对网络生成策略进行改进。经过改进的策略采用在高功耗浮点计算平台上(利用诸如Caffe的传统网络生成器)开发的受训网络结构和权重,并将其转化为基于定点运算,结构紧凑的轻型的定制网络模型。接下来,此模型会在一个基于专门优化的成像和视觉DSP芯片的低功耗嵌入式平台上运行。图1显示了轻型嵌入式神经网络的生成

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

深度神经网络及目标检测学习笔记 https://youtu.be/MPU2HistivI 上面是一段实时目标识别的演示,计算机在视频流上标注出物体的类别,包括人、汽车、自行车、狗、背包、领带、椅子等。 今天的计算机视觉技术已经可以在图片、视频中识别出大量类别的物体,甚至可以初步理解图片或者视频中的内容,在这方面,人工智能已经达到了3岁儿童的智力水平。这是一个很了不起的成就,毕竟人工智能用了几十年的时间,就走完了人类几十万年的进化之路,并且还在加速发展。 道路总是曲折的,也是有迹可循的。在尝试了其它方法之后,计算机视觉在仿生学里找到了正确的道路(至少目前看是正确的)。通过研究人类的视觉原理,计算机利用深度神经网络(DeepNeural Network,NN)实现了对图片的识别,包括文字识别、物体分类、图像理解等。在这个过程中,神经元和神经网络模型、大数据技术的发展,以及处理器(尤其是GPU)强大的算力,给人工智能技术的发展提供了很大的支持。 本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。 一、神经网络 1.1 神经元和神经网络 神经元是生物学概念,用数学描述就是:对多个输入进行加权求和,并经过激活函数进行非线性输出。 由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器),可以进行线性分类。两层神经网络则可以完成复杂一些的工作,比如解决异或问题,而且具有非常好的非线性分类效果。而多层(两层以上)神经网络,就是所谓的深度神经网络。 神经网络的工作原理就是神经元的计算,一层一层的加权求和、激活,最终输出结果。深度神经网络中的参数太多(可达亿级),必须靠大量数据的训练来设置。训练的过程就好像是刚出生的婴儿,在父母一遍遍的重复中学习“这是苹

深度神经网络语音识别系统快速稀疏矩阵算法

深度神经网络语音识别系统快速稀疏矩阵算法 一. 背景 1.1语音识别、深度神经网络与稀疏矩阵运算 深度神经网络(DNN)已经广泛应用在当代语音识别系统中,并带来识别率的极大提高。一个典型的深度神经网络如图1所示,其中包含一个输入层,多个隐藏层,一个输出层,每层有若干个结点,每个结点的输入由前一层的结点的输出经过线性叠加得到,并通过一个线性或非线性的激励函数,形成该结点的输出。 图1 DNN结构 在进行语音识别系统模型训练和识别时,语音数据被分成短时语音帧,这些语音帧经过信号处理之后形成一系列语音特征向量,输入到DNN的输入层,经过神经网络的各个隐藏层,最后进入输出层,形成识别器可用的概率值。 可见,在进行DNN操作时,主要计算为输入向量在整个神经网络的前向传导。这些传导运算可以抽象为矩阵运算。具体而言,将第t层结点的所有结点输出表示成一个向量OU t ,将第t层到第t+1层之间的网络联接系数表示成A t, 则第t+1层结点的输入IN t+1可以表示成IN t+1 = A t x OU t 其输出表示为OU t+1 = f (IN t), 其中f为激励函数。 当前语音识别系统中所用的神经网络一般为5-10层,每层结点数为1000到10000,这意味着网络矩阵A t 相当庞大,带来巨大的计算压力。如何快速进行矩阵运算,是一个急需解决的问题。 稀疏矩阵为减小计算量提供了可能。通过将矩阵中绝大部分元素置零,一方面可以节约随储空间,同时可以极大减小计算总量。然则,稀疏矩阵本身的存储和数据索取都需要相应的空间和时间,简单对矩阵依其元素值的大小进行稀疏化并不会提高计算效率。本发明提出一种通过改变稀疏矩阵的拓朴结构对稀疏矩阵进行快速计算的方法。 在下文中的背景知中,我们将简单的介绍一下稀疏矩阵的存储方式和对拓朴结构进行修正过程中需要用到的遗传算法。

神经网络11大常见陷阱及应对方法

深度学习的这些坑你都遇到过吗?神 经网络11 大常见陷阱及应对方法【新智元导读】如果你的神经网络不工作,该怎么办?本文作者列举了搭建神经网络时可能遇到的11个常见问题,包括预处理数据、正则化、学习率、激活函数、网络权重设置等,并提供解决方法和原因解释,是深度学习实践的有用资料。 如果你的神经网络不工作,该怎么办?作者在这里列出了建神经网络时所有可能做错的事情,以及他自己的解决经验。 1.忘记规范化数据 2.忘记检查结果 3.忘记预处理数据 4.忘记使用正则化 5.使用的batch太大 6.使用了不正确的学习率 7.在最后层使用了错误的激活函数 8.你的网络包含了Bad Gradients 9.初始化网络权重不正确 10.你使用的网络太深了 11.使用隐藏单元的数量不对 忘记规范化数据了

问题描述 在使用神经网络时,思考如何正确地规范化数据是非常重要的。这是一个无法改变的步骤——假如这一步骤没有小心、正确地做,你的网络就几乎不可能工作。由于这个步骤非常重要,在深度学习社区中也是众所周知的,所以它很少在论文中被提及,因此初学者常常在这一步出错。 怎样解决? 一般来说,规范化(normalization)的意思是:将数据减去均值,再除以其方差。通常这是对每个输入和输出特征单独做的,但你可能经常会希望对特征组做或特别主翼处理某些特征的规范化。 为什么? 我们需要对数据进行规范化的主要原因是大部分的神经网络流程假设输入和输出数据都以一个约是1的标准差和约是0的均值分布。这些假设在深度学习文献中到处都是,从权重初始化、激活函数到训练网络的优化算法。 还需要注意 未训练的神经网络通常会输出约在-1到1范围之间的值。如果你希望输出其他范围的值(例如RBG图像以0-255范围的字节存储)会出现一些问题。在开始训练时,网络会非常不稳定,因为比如说预期值是255,网络产生的值是-1或1——这会被大多数用于训练神经网络的优化算法认为是严重的错误。这会产生过大的梯度,可能导致梯度爆炸。如果不爆炸,那么训练的前几个阶段就是浪费的,因为网络首先学习的是将输出值缩小到大致是预期的范围。如果规范化了数据(在这种情况下,你可以简单地将数值除以128再减去1),就不会发生这些问题。 一般来说,神经网络中特征的规模也决定了其重要性。如果输出中的有一个特征规模很大,那么与其他特征相比它会产生更大的错误。类似地,输入中的大规模特征将主导网络并导致下游发生更大的变化。因此,使用神经网络库的自动规范化往往是不够的,这些神经网络库会在每个特征的基础上盲目地减去平均值并除以方差。你可能有一个输入特征,通常范围在0.0到0.001之间——这个特征的范围如此之小,因为它是一个不重要的特征(在这种情况下,你可能不想重新scale),或者因为与其他特征相比它有一些小的单元(在这种情

大数据分析的深度神经网络方法

章毅 四川大学计算机学院2016.03.25 重庆

提纲 大数据简介 大脑新皮层的神经网络结构 大脑新皮层神经网络的记忆 大数据分析GPU深度神经网络计算平台

大数据商业应用诞生 全世界兴起大数据分布式存储与并行计Google Brain 计划,激起大规模神经网络在深度神经网络在语音大数据、图像大数据领域接连取得巨大突破 G. E. Hinton 教授在《Science 》发表文章,基于深度神经网络的大数据分析方法在学术界和工工信部白皮书指出:大数据分析是大数据研究的重要环节,其中大数据分“大数据” 一词诞生 2000 1997 2004 2006 2011 2012 2014 2015 我国大数据产业兴起 2013 美国奥巴马政府发布了大数据计划,将大数据战略上升为美国国家意志 国务院发布大数据发展行动纲要,大数据正式上升为我国国家意志

体量浩大Volume 多源异构Variety 生成快速Velocity 价值稀疏Value 大数据的基本特点大数据的目标实现大数 据转换为 价值 大数据的概念 问题:怎样实现大数据的目标?

大数据 关键技术 价值 大数据分析是大数据转化为价值的桥梁 问题:怎样设计大数据分析方法? 展示平台 ?大数据知识展示 ?大数据产品 数据平台 ?大数据采集,标记 ?大数据存储,管理 大数据分析是大数据转 换为价值的最重要的环 节,否则,大数据仅仅 是一堆数据而已。

?每秒信息传递和交换1000亿次,PB 级数据 ?同步处理声音、温度、气味、图像等数据 ?50亿本书的存储容量 ?每秒人眼数据量140.34GB ? 在识别、判断、预测等智能行为方面展现出十分强大的能力 ?优秀的大数据处理器 人类大脑是天然的大数据处理器! 进入大脑的信息被编码为某种数据,进而由大脑神经网络处理

【CN109977794A】一种用深度神经网络进行人脸识别的方法【专利】

(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910164908.9 (22)申请日 2019.03.05 (71)申请人 北京超维度计算科技有限公司 地址 100142 北京市海淀区西四环北路160 号9层一区907 (72)发明人 张心宇 张颢 向志宏 杨延辉  (74)专利代理机构 北京亿腾知识产权代理事务 所(普通合伙) 11309 代理人 陈霁 (51)Int.Cl. G06K 9/00(2006.01) G06N 3/04(2006.01) G06N 3/08(2006.01) (54)发明名称 一种用深度神经网络进行人脸识别的方法 (57)摘要 本发明涉及一种用深度神经网络进行人脸 识别的方法,其特征在于,包括以下步骤:通过第 一相机采集人脸区域的2D RGB图片,以及通过第 二相机实时采集人脸区域的3D点云;对于采集的 2D RGB图片进行脸部区域的截取和缩放,减少距 离的影响;对于采集的3D点云,投影到二维平面, 用灰度信息代替深度信息,形成二维深度图;并 进行脸部区域的截取;将截取过的D2D RGB图片 输入到2D特征提取网络,以及将截取过的脸部区 域二维深度图输入3D特征提取网络,进行特征向 量提取;根据提取的特征向量,结合环境信息进 行人脸识别。本发明结合2D和3D人脸识别技术, 既保证了正常使用情况(正脸无遮挡)下的正确 率,又提高了系统应对恶劣使用条件下的鲁棒性 和系统的安全性。权利要求书1页 说明书4页 附图2页CN 109977794 A 2019.07.05 C N 109977794 A

深度神经网络的关键技术及其在自动驾驶领域的应用

ISSN 1674-8484 CN 11-5904/U 汽车安全与节能学报, 第10卷第2期, 2019年 J Automotive Safety and Energy, Vol. 10 No. 2, 2019 1/13 119—145 深度神经网络的关键技术及其在自动驾驶领域的应用 李升波1,关?阳1,侯?廉1,高洪波1,段京良2,梁?爽3,汪?玉3,成?波1, 李克强1,任?伟4,李?骏1 (1. 清华大学车辆与运载学院,北京100084,中国;2. 加州大学伯克利分校机械系,加州 94720,美国; 3. 清华大学电子工程系,北京100084,中国; 4. 加州大学河滨分校电子计算机系,加州92521,美国) 摘?要:?智能化是汽车的三大变革技术之一,深度学习具有拟合能力优、表征能力强和适用范围广的 特点,是进一步提升汽车智能性的重要途径。该文系统性总结了用于自动驾驶汽车的深度神经网络(DNN)技术,包括发展历史、主流算法以及感知、决策与控制技术应用。回顾了神经网络的历史及现状, 总结DNN的“神经元-层-网络”3级结构,重点介绍卷积网络和循环网络的特点以及代表性模型; 阐述了以反向传播(BP)为核心的深度网络训练算法,列举用于深度学习的常用数据集与开源框架,概 括了网络计算平台和模型优化设计技术;讨论DNN在自动驾驶汽车的环境感知、自主决策和运动控 制3大方向的应用现状及其优缺点,具体包括物体检测和语义分割、分层式和端到端决策、汽车纵 横向运动控制等;针对用于自动驾驶汽车的DNN技术,指明了不同问题的适用方法以及关键问题的 未来发展方向。 关键词:?智能汽车;自动驾驶;深度神经网络(DNN);深度学习;环境感知;自主决策;运动控制 中图分类号:?TP 18;U 463.6 文献标志码:?A DOI:?10.3969/j.issn.1674-8484.2019.02.001 Key technique of deep neural network and its applications in autonomous driving LI Shengbo1, GUAN Yang1, HOU Lian1, GAO Hongbo1, DUAN Jingliang2, LIANG Shuang3, WANG Yu3, CHENG Bo1, LI Keqiang1, REN Wei4, LI Jun1 (1. School of Vehicle and Mobility, Tsinghua University, Beijing 100084, China; 2. Mechanical Engineering, University of California Berkeley, Berkeley, CA 94720, USA; 3. Electronic Engineering, Tsinghua University, Beijing 100084, China; 4. Electrical and Computer Engineering, University of California Riverside, Riverside, CA 92521, USA) Abstract: Autonomous driving is one of the three major innovations in automotive industry. Deep learning is a crucial method to improve automotive intelligence due to its outstanding abilities of data fitting, feature representation and model generalization. This paper reviewed the technologies of deep neural network (DNN) 收稿日期?/?Received?:?2019-01-19。 基金项目?/?Supported?by?: “十三五”国家重点研发计划(2016YFB0100906);国家自然科学基金面上项目(51575293);国家自然科学基金优秀青年科学基金项目(U1664263);国家自然科学基金重点项目(51622504);北京市自然科学基金杰出青 年科学基金项目(JQ18010);汽车安全与节能国家重点实验室开放基金课题(KF1828)。 第一作者?/?First?author?:?李升波(1982—),男(汉),山东,副教授。E-mail: lishbo@https://www.doczj.com/doc/413603949.html,。

基于SVD裁剪的深度神经网络压缩技术研究与实现

基于SVD裁剪的深度神经网络压缩技术研究与实现近年来,深度学习算法在解决抽象认知问题上展现了强大的建模 能力,并在音频事件检测与音频场景分类任务中显著的提高了性能。 因此深度学习算法受到了学术界的广泛青睐。深度学习算法强大的建模能力得益于较深的网络结构,较多的神经元和层数。因此,一些神经网络的参数量达到数百万甚至数十亿。利用处理器计算大规模神经网络需要消耗很大的计算资源,对处理器的计算能力提出了严苛的要求。本文为了减少深度神经网络参数量,研究基于SVD裁剪的深度神经网 络压缩方法,以达到压缩深度神经网络的目的。本文首先提出基于SVD 的全连接神经网络的裁剪方法。矩阵相乘是全连接神经网络最主要的计算方式,网络中参数主要集中在权重矩阵中。对于全连接神经网络 裁剪,本文利用SVD分解将一个大权重矩阵裁剪为两个小矩阵的乘积,并利用两个小矩阵重构原始的网络结构,减少网络中的参数量以达到 简化全连接神经网络的目的。在基于全连接神经网络的DCASE2016稀有音频事件检测任务上,该方法可以保留4.35%参数量时,而网络的精度仅仅下降了3%。对于卷积神经网络,本文提出了基于SVD分解的卷积层通道的裁剪方法,利用矩阵分解减少卷积层中特征图的数量,以 达到减少卷积神经网络中的参数量的目的。利用矩阵分解的方法分别压缩原卷积层的输入通道和输出通道,并重构新的卷积层,将原始卷 积层分解为三个小卷积层,使得组合之后的卷积层比原始卷积层具有 更少的参数。应用在基于GCRNN的DCASE2018声学场景分类任务上, 该方法可以保留原卷积层10.76%参数量,而网络的精度仅仅下降了

0.34%。对于循环神经网络的压缩,本文主要研究了GRU的SVD裁剪方法,主要思想是将GRU的更新门和重置门中的各个权重矩阵进行分解,从而减少网络整体的参数量。在矩阵分解之后,本文利用权重共享方法减少裁剪之后的更新门与重置门中的权重矩阵,从而进一步减少GRU中的参数量。利用裁剪之后的权重矩阵以及共享矩阵重构新的GRU网络。应用在基于GCGRU的声学场景分类任务上,该方法可以保留GRU层23.00%参数量,而网络的精度仅仅下降了0.55%。为了分析SVD能有效裁剪神经网络的原因,本文定义了权重活跃度,即如果权重参数的绝对值大于设定阈值所占的比例。通过分析SVD裁剪全连接神经网络、卷积神经网络和循环神经网络,本文发现SVD裁剪是通过增加神经网络权重活跃度来保持模型的性能。

相关主题
文本预览
相关文档 最新文档