没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
22页
随着深度学习的迅猛发展,其应用也越来越广泛,特别是在视觉识别、语音识别和自然语言处理等很多领域都表现出色。卷积神经网络(Convolutional Neural Network,CNN)作为深度学习中应用最广泛的网络模型之一,也得到人们了越来越多的关注和研究。事实上,CNN 作为一项经典的机器学习算法,早在 20 世纪 80 年代就已被人们提出并展开一定的研究。但是,在当时硬件运算能力有限、缺乏有效训练数据等因素的影响下,人们难以训练不产生过拟合情形下的高性能深度卷积神经网络模型。所以,当时 CNN 的一个经典应用场景就是识别银行支票上的手写数字,并且已得到实际应用。伴随着计算机硬件和大数据技术的不断进步,人们也尝试开发不同的方法来解决在深度 CNN 训练中所遇到的困难,特别是 Krizhevsky 等专家提出了一种经典的 CNN 架构,论证了深度结构在特征提取问题上的潜力,并在图像识别任务上取得了重大突破,掀起了深度结构研究的浪潮。而 CNN 作为一种已经存在的、有一定应用案例的深度结构,也重新回到人们的视野,得以进一步研究和应用。
资源推荐
资源详情
资源评论
第 29 章 基于深度学习的汽车目标检测
359
基于深度学习的汽车目标检测
29.1 案例背景
随着深度学习的迅猛发展,其应用也越来越广泛,特别是在视觉识别、语音识别和自然语
言处理等很多领域都表现出色。卷积神经网络(Convolutional Neural Network,CNN)作为深度
学习中应用最广泛的网络模型之一,也得到人们了越来越多的关注和研究。事实上,CNN 作为
一项经典的机器学习算法,早在 20 世纪 80 年代就已被人们提出并展开一定的研究。但是,在
当时硬件运算能力有限、缺乏有效训练数据等因素的影响下,人们难以训练不产生过拟合情形
下的高性能深度卷积神经网络模型。所以,当时 CNN 的一个经典应用场景就是识别银行支票
上的手写数字,并且已得到实际应用。伴随着计算机硬件和大数据技术的不断进步,人们也尝
试开发不同的方法来解决在深度 CNN 训练中所遇到的困难,特别是 Krizhevsky 等专家提出了
一种经典的 CNN 架构,论证了深度结构在特征提取问题上的潜力,并在图像识别任务上取得
了重大突破,掀起了深度结构研究的浪潮。而 CNN 作为一种已经存在的、有一定应用案例的
深度结构,也重新回到人们的视野,得以进一步研究和应用。
随着标记数据的积累和 GPU 高性能计算技术的发展,卷积神经网络的研究和应用也不断涌
现出新的成果。本案例使用已标记的小汽车样本数据训练 RCNN(Regions with Convolutional
Neural Networks)得到检测器模型,并采用测试样本对训练好的检测器模型进行准确率评测,
实现汽车目标检测的效果。
计算机视觉与深度学习实战——以 MATLAB、Python 为工具
360
29.2 理论基础
29.2.1 基本架构
如图 29-1 所示,卷积神经网络的基本架构包括特征抽取器和分类器。特征抽取器通常由若
干个卷积层和池化层叠加而成,在卷积和池化过程中不断将特征图缩小,同时会导致特征图数
量的增多。在特征抽取器后面一般连接分类器,通常由一个多层感知机构成。特别地,在最后
一个特征抽取器后面,将所有的特征图展开并排列成一个向量得到特征向量,并作为后层分类
器的输入。
接连全接连全开铺样采降积卷
样采降
积卷
核积卷
层出输
层隐
层入
输NN
2层样
采降
2层
积卷
1层样
采降
核积卷
1层
积卷
图征特
图 29-1 卷积神经网络的结构示意图
29.2.2 卷积层
卷积运算的基本操作是将卷积核与图像的对应区域进行卷积得到一个值,通过在图像上不
断移动卷积核来计算卷积值,进而完成对整幅图像的卷积运算。在卷积神经网络中,卷积层不
仅涉及一般的图像卷积,还涉及深度和步长的概念。深度对应同一个区域的神经元个数,即有
几个卷积核对同一块区域进行卷积运算;步长对应卷积核移动多少个像素,即前后距离的远近
程度。
例如,对一幅 1000×1000 的图像,可以表示为一个长度为 1×10
6
的向量。如果设置隐含层
第 29 章 基于深度学习的汽车目标检测
361
与输入层的数量同时为 10
6
,则输入层到隐含层的参数个数为 10
6
×10
6
=10
12
,这就带来了大量的
参数,基本无法训练。所以,应用卷积神经网络来训练图像数据,必须注意减少参数来保证计
算的速度。一般而言,卷积神经网络减少参数数量的方法一般有局部感知、参数共享和多核卷
积。
29.2.2.1 局部感知
人对外界的认知一般可以归纳为从局部到全局的过程,而图像的像素空间联系也是局部间
的相关性强,远距离的相关性弱。因此,卷积神经网络的每个神经元实际上只需关注图像局部
的感知,对图像全局的感知可通过更高层综合局部信息来获得,这也说明了卷积神经网络部分
连通的思想。类似于生物学中的视觉系统结构,视觉皮层的神经元用于局部接收信息,即这些
神经元只响应某些特定区域的刺激,呈现出部分连通的特点。
如图 29-2 所示,左侧假设每个神经元与全部像素相连,右侧假设每个神经元只与 10×10 个
像素值相连。以 10
6
个神经元计算,则右侧的权值数据为 100×10
6
个参数,相对于左侧的 10
6
×10
6
有了明显减少。
图 29-2 全连接和局部连接示意图
29.2.2.2 参数共享
如图 29-2 所示,在局部感知过程中假设每个神经元都对应 100 个参数,共 10
6
个神经元,
则参数共有 100×10
6
个,依然是一个很大的数字。如果这 10
6
个神经元的 100 个参数相等,那么
参数个数就减少为 100,即每个神经元用同样的卷积核执行卷积操作,这将大大减少运算量。
因此,在这个例子中不论隐层的神经元个数有多少,两层间的连接只有 100 个参数,这也说明
了参数共享的意义。
计算机视觉与深度学习实战——以 MATLAB、Python 为工具
362
29.2.2.3 多核卷积
如图 29-2 所示,如果 10×10 维数的卷积核都相同,那么只能提取图像的一种特征,局限性
很明显。可以考虑通过增加卷积核来增加特征类别,例如选择 16 个不同的卷积核用于学习 16
种特征。其中,将卷积核应用到图像上来执行卷积操作,可得到图像的不同特征,统称为特征
图( Feature Map),所以有 16 个不同的卷积核就有 16 个特征图,可以将其视作图像的不同通道。
此时,卷积层包含 10×10×16=1600 个参数。
29.2.3 池化层
从理论上来看,经卷积层得到的特征集合,可直接用于训练分类器(例如经典的 Softmax 分
类器),但这往往会带来巨大的计算量。例如,对于一个 1000×1000 的图像,卷积层的神经元有
1000×1000 个,采用 16 个卷积核,则卷积特征向量长度为 16×1000×1000=16×10
6
,这是一个千万
级别的特征分类问题,计算困难并且容易出现过拟合现象。在对此类问题的实际处理过程中,可
通过对不同位置的特征进行聚合统计等处理来降低数据规模,提高运行速度。例如,通过计算图
像局部区域上的某特定特征的平均值或最大值等来计算概要统计特征。这些概要统计特征在本质
上是一个采样的过程,相对于经卷积层计算得到的特征图,不仅达到了降维目的,也提高了训练
效率。这种特征聚合的操作叫作池化(Pooling),根据统计方式的不同也可叫作平均池化或最大
池化。
29.3 程序实现
29.3.1 加载数据
本案例用于演示 CNN 如何进行对象识别,所以在原始数据中包含图像的规模较小,共有
295 幅图像,在每幅图像中都标记了 1~2 辆小汽车。在实际应用场景中,将需要更多的训练数
据来提高 CNN 的鲁棒性。数据加载的核心代码如下:
%% 加载数据
% vehicleDataset 是一个 dataset 数据类型,第1列是图像的相对路径,第2列是图像中小汽车的
位置
data = load('fasterRCNNVehicleTrainingData.mat');
% 提取训练集
vehicleDataset = data.vehicleTrainingData;
% 提取图像路径
dataDir = fullfile(toolboxdir('vision'),'visiondata');
剩余21页未读,继续阅读
资源评论
- 我笑君笑我2023-10-28资源有一定的参考价值,与资源描述一致,很实用,能够借鉴的部分挺多的,值得下载。
- 冰糖橙1810162023-06-30发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- m0_742187212024-04-05怎么能有这么好的资源!只能用感激涕零来形容TAT...
- 2301_790948772023-12-12感谢资源主分享的资源解决了我当下的问题,非常有用的资源。
- 2301_768017002023-11-16感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
好知识传播者
- 粉丝: 492
- 资源: 4204
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功