(完整版)深度神经网络及目标检测学习笔记
- 格式:doc
- 大小:560.50 KB
- 文档页数:14
《基于深度学习的显著性目标检测优化方法的研究与应用》篇一一、引言在计算机视觉领域中,显著性目标检测(Saliency Object Detection, SOD)已经成为了一个关键性的研究方向。
此项技术能够在复杂多变的图像环境中精准识别和定位最显著的目标物体,在视频监控、无人驾驶、机器人导航等应用中发挥着重要作用。
近年来,随着深度学习技术的飞速发展,基于深度学习的显著性目标检测方法逐渐成为研究热点。
本文将深入探讨基于深度学习的显著性目标检测的优化方法及其在多个领域的应用。
二、深度学习在显著性目标检测中的应用深度学习技术为显著性目标检测提供了新的思路和方法。
通过构建深度神经网络模型,可以有效地从大量图像数据中学习和提取特征,从而实现对目标的精准检测和定位。
目前,基于深度学习的显著性目标检测方法已经取得了显著的成果,但仍然存在一些挑战和问题,如计算复杂度高、误检率高等。
三、基于深度学习的显著性目标检测的优化方法针对上文所提的挑战和问题,本文提出以下优化方法:首先,针对计算复杂度高的问题,我们可以通过改进网络结构,如采用轻量级的卷积神经网络模型,减少计算量,提高检测速度。
同时,利用多尺度特征融合技术,可以有效地提高目标检测的准确率。
其次,针对误检率高的问题,我们可以通过引入注意力机制和上下文信息来优化模型。
注意力机制可以帮助模型关注到更重要的区域,从而提高目标检测的准确性。
而上下文信息则可以提供更多的背景信息,帮助模型更好地理解图像内容,减少误检。
四、应用经过优化的显著性目标检测方法在多个领域有着广泛的应用前景。
如可以应用于视频监控、无人驾驶、机器人导航等领域,帮助系统更准确地识别和定位目标物体,提高系统的性能和效率。
五、结论本文通过对基于深度学习的显著性目标检测的优化方法进行探讨,为该领域的研究提供了新的思路和方法。
未来我们将继续深入研究,以期在更多领域实现应用。
《基于深度学习的显著性目标检测优化方法的研究与应用》篇二一、引言随着深度学习技术的飞速发展,显著性目标检测在计算机视觉领域中得到了广泛的应用。
人工神经网络学习总结笔记主要侧重点:1.概念清晰2.进行必要的查询时能从书本上找到答案第一章:绪论1.1人工神经网络的概述“认识脑”和“仿脑”:人工智能科学家在了解人脑的工作机理和思维的本质的基础上,探索具有人类智慧的人工智能系统,以模拟延伸和扩展脑功能。
我认为这是人工神经网络研究的前身。
形象思维:不易被模拟人脑思维抽象推理逻辑思维:过程:信息概念最终结果特点:按串行模式人脑与计算机信息处理能力的不同点:方面类型人脑计算机记忆与联想能力可存储大量信息,对信息有筛选、回忆、巩固的联想记忆能力无回忆与联想能力,只可存取信息学习与认知能力具备该能力无该能力信息加工能力具有信息加工能力可认识事物的本质与规律仅限于二值逻辑,有形式逻辑能力,缺乏辩证逻辑能力信息综合能力可以对知识进行归纳类比和概括,是一种对信息进行逻辑加工和非逻辑加工相结合的过程缺乏该能力信息处理速度数值处理等只需串行算法就能解决的应用问题方便,计算机比人脑快,但计算机在处理文字图像、声音等类信息的能力远不如人脑1.1.2人脑与计算机信息处理机制的比较人脑与计算机处理能力的差异最根本的原因就是信息处理机制的不同,主要有四个方面方面类型人脑计算机系统结构有数百亿神经元组成的神经网络由二值逻辑门电路构成的按串行方式工作的逻辑机器信号形式模拟量(特点:具有模糊性。
离散的二进制数和二值逻辑容易被机器模拟的思维方式难以被机器模拟)和脉冲两种形式形式信息储存人脑中的信息分布存储于整个系统,所存储的信息是联想式的有限集中的串行处理机制信息处理机制高度并行的非线性信息处理系统(体现在结构上、信息存储上、信息处理的运行过程中)1.1.3人工神经网络的概念:在对人脑神经网络的基本认识的基础上,用数理方法从信息处理的角度对人脑神经网络进行抽象,并建立某种简化模型,称之为人工神经网络,是对人脑的简化、抽象以及模拟,是一种旨在模仿人脑结构及其功能的信息处理系统。
其他定义:由非常多个非常简单的处理单元彼此按某种方式相互连接而形成的计算系统,外部输入信息之后,系统产生动态响应从而处理信息。
机器学习中的目标检测与卷积神经网络模型参数调优方法及实践应用案例目标检测是机器学习领域中一个重要的任务,它被广泛应用于计算机视觉、图像处理、自动驾驶等众多领域。
而在目标检测的方法中,卷积神经网络(Convolutional Neural Networks,简称CNN)是目前被广泛使用和研究的深度学习模型。
在机器学习中,模型参数调优是十分关键的一步,它决定了模型的性能和泛化能力。
而调优卷积神经网络模型参数,尤其是用于目标检测的模型参数,是一个挑战性的任务。
本文将介绍一些常用的调优方法,并结合一个实践应用案例进行讲解。
在目标检测任务中,常用的卷积神经网络模型有Faster R-CNN、YOLO、SSD 等。
这些模型包含了许多参数,如学习率、批量大小、网络结构等。
在调优这些参数前,首先需要了解模型的性能指标和训练数据。
对于目标检测的性能指标,常见的有精确度(Precision)、召回率(Recall)和F1-score。
精确度是指被检索到的相关样本在所有检索到的样本中的比例,召回率是指被检索到的相关样本占所有相关样本的比例,F1-score是精确度和召回率的调和平均数。
训练数据则需要包含正样本和负样本的标签,用于模型的训练和评估。
针对模型参数调优,一种常用的方法是网格搜索(Grid Search)。
网格搜索将给定参数范围的所有组合都进行尝试,并通过交叉验证选择最佳的参数组合。
这种方法的优点在于简单直观,但其缺点是计算资源消耗大且耗时。
另一种常用的方法是随机搜索(Random Search)。
与网格搜索相比,随机搜索通过设置参数的分布范围,在参数空间中随机选择参数组合进行尝试。
这种方法相对于网格搜索更加高效,而且能够在有限的计算资源下得到较好的结果。
除了这些传统的调优方法,还有一些高级的优化算法也被广泛使用。
其中一种是贝叶斯优化(Bayesian Optimization),它通过构建模型来推断参数的性能,并选择最优的参数组合进行优化。
神经网络基本知识一、内容简述神经网络是机器学习的一个重要分支,是一种模拟生物神经网络结构和功能的计算模型。
它以其强大的学习能力和自适应能力广泛应用于多个领域,如图像识别、语音识别、自然语言处理等。
《神经网络基本知识》这篇文章将带领读者了解神经网络的基本概念、原理和应用。
1. 神经网络概述神经网络是一种模拟生物神经系统结构和功能的计算模型。
它由大量神经元相互连接构成,通过学习和调整神经元之间的连接权重来进行数据处理和模式识别。
神经网络的概念自上世纪五十年代提出以来,经历了漫长的发展历程,逐渐从简单的线性模型演变为复杂的多层非线性结构。
神经网络在人工智能领域发挥着核心作用,广泛应用于计算机视觉、语音识别、自然语言处理等领域。
神经网络的基本构成单元是神经元,每个神经元接收来自其他神经元的输入信号,通过特定的计算方式产生输出信号,并传递给其他神经元。
不同神经元之间的连接强度称为权重,通过训练过程不断调整和优化。
神经网络的训练过程主要是通过反向传播算法来实现的,通过计算输出层误差并反向传播到输入层,不断调整权重以减小误差。
神经网络具有强大的自适应能力和学习能力,能够处理复杂的模式识别和预测任务。
与传统的计算机程序相比,神经网络通过学习大量数据中的规律和特征,自动提取高级特征表示,避免了手动设计和选择特征的繁琐过程。
随着深度学习和大数据技术的不断发展,神经网络的应用前景将更加广阔。
神经网络是一种模拟生物神经系统功能的计算模型,通过学习和调整神经元之间的连接权重来进行数据处理和模式识别。
它在人工智能领域的应用已经取得了巨大的成功,并将在未来继续发挥重要作用。
2. 神经网络的历史背景与发展神经网络的历史可以追溯到上个世纪。
最初的神经网络概念起源于仿生学,模拟生物神经网络的结构和功能。
早期的神经网络研究主要集中在模式识别和机器学习的应用上。
随着计算机科学的快速发展,神经网络逐渐成为一个独立的研究领域。
在20世纪80年代和90年代,随着反向传播算法和卷积神经网络的提出,神经网络的性能得到了显著提升。
神经网络与深度学习知识点整理●神经网络基础●MP神经元模型●可以完成任何数学和逻辑函数的计算●没有找到训练方法,必须提前设计出神经网络的参数以实现特定的功能●Hebb规则●两个神经元同时处于激发状态时,神经元之间的连接强度将得到加强●Hebb学习规则是一种无监督学习方法,算法根据神经元连接的激活水平改变权值,因此又称为相关学习或并联学习。
●●感知机模型●有监督的学习规则●神经元期望输出与实际输出的误差e作为学习信号,调整网络权值●●LMS学习规则是在激活函数为f(x)=x下的感知器学习规则●由于激活函数f的作用,感知器实际是一种二分类器●感知器调整权值步骤●单层感知器不能解决异或问题●BP网络●特点:●同层神经网络无连接●不允许跨层连接●无反馈连接●BP学习算法由正向传播和反向传播组成●BP网络的激活函数必须处处可导——BP权值的调整采用 Gradient Descent 公式ΔW=-η(偏E/偏w),这个公式要求网络期望输出和单次训练差值(误差E)求导。
所以要求输出值处处可导。
s函数正好满足处处可导。
●运算实例(ppt)●Delta( δ )学习规则●误差纠正式学习——神经元的有监督δ学习规则,用于解决输入输出已知情况下神经元权值学习问题●δ学习规则又称误差修正规则,根据E/w负梯度方向调整神经元间的连接权值,能够使误差函数E达到最小值。
●δ学习规则通过输出与期望值的平方误差最小化,实现权值调整●●1●自动微分●BP神经网络原理:看书●超参数的确定,并没有理论方法指导,根据经验来选择●BP算法已提出,已可实现多隐含层的神经网络,但实际只使用单隐层节点的浅层模型●计算能力的限制●梯度弥散问题●自编码器●●自编码器(Auto-Encoder)作为一种无监督学习方法网络●将输入“编码”为一个中间代码●然后从中间表示“译码”出输入●通过重构误差和误差反传算法训练网络参数●编码器不关心输出(只复现输入),只关心中间层的编码————ℎ=σ(WX+b)●编码ℎ已经承载原始数据信息,但以一种不同的形式表达!●1●正则编码器——损失函数中加入正则项,常用的正则化有L1正则和L2正则●稀疏自编码器——在能量函数中增加对隐含神经元激活的稀疏性约束,以使大部分隐含神经元处于非激活状态●去噪自编码器——训练数据加入噪声,自动编码器学习去除噪声获得无噪声污染的输入,迫使编码器学习输入信号更加鲁棒的表达●堆叠自编码器●自编码器训练结束后,输出层即可去掉,网络关心的是x到ℎ的变换●将ℎ作为原始信息,训练新的自编码器,得到新的特征表达.●逐层贪婪预训练●1●深度神经网络初始化●●卷积神经网络●全连接不适合图像任务●参数数量太多●没有利用像素之间的位置信息●全连接很难传递超过三层●卷积神经网络是一种前馈神经网络,其输出神经元可以响应部分区域内的输入信息,适宜处理图像类信息●1●1●Zero Padding:在原始图像周围补0数量●卷积尺寸缩小,边缘像素点在卷积中被计算的次数少,边缘信息容易丢失●●卷积神经网络架构发展●1●深度发展●LeNet●具备卷积、激活、池化和全连接等基本组件●但GPU未出现,CPU的性能又极其低下●LetNet只使用在手写识别等简单场景,未得到重视●LeNet主要有2个卷积层(5*5)、2个下抽样层(池化层)、3个全连接层●通过sigmoid激活●全连接层输出:共有10个节点分别代表数字0到9,采用径向基函数作为分类器●AlexNet●第一次采用了ReLU,dropout,GPU加速等技巧●AlexNet网络共有:卷积层 5个(1111,55,3*3),池化层 3个,全连接层3个●首次采用了双GPU并行计算加速模式●第一卷积模块:96通道的特征图被分配到2个GPU中,每个GPU上48个特征图;2组48通道的特征图分别在对应的GPU中进行ReLU激活●第一层全连接:同时采用了概率为0.5的Dropout策略●VGG●通过反复堆叠3x3卷积和2x2的池化,得到了最大19层的深度●卷积-ReLU-池化的基本结构●串联多个小卷积,相当于一个大卷积的思想●使用两个串联的3x3卷积,达到5x5的效果,但参数量却只有之前的18/25●串联多个小卷积,增加ReLU非线性激活使用概率,从而增加模型的非线性特征●VGG16网络包含了13个卷积层,5个池化层和3个全连接层。
《深入浅出图神经网络:GNN原理解析》阅读随笔目录一、前言 (2)1.1 本书的目的和价值 (3)1.2 图神经网络简介 (3)二、图神经网络基础 (5)2.1 图的基本概念 (6)2.2 神经网络的基本概念 (8)2.3 图神经网络与神经网络的结合 (9)三、图神经网络的分类 (10)3.1 基于消息传递的图神经网络 (12)3.2 基于能量函数的图神经网络 (12)3.3 基于图注意力机制的图神经网络 (14)四、图神经网络的训练方法 (15)4.1 迭代训练法 (16)4.2 随机梯度下降法 (17)4.3 动量法 (19)4.4 自适应学习率方法 (20)五、图神经网络的优化技术 (21)5.1 局部优化算法 (22)5.2 全局优化算法 (24)5.3 混合优化算法 (26)六、图神经网络的评估与可视化 (27)6.1 评估指标 (28)6.2 可视化方法 (29)6.3 实战案例分析 (31)七、图神经网络的未来发展方向与应用前景 (32)7.1 当前研究的热点和挑战 (34)7.2 未来可能的技术创新 (35)7.3 图神经网络在各个领域的应用前景 (37)八、结语 (38)8.1 对本书内容的总结 (39)8.2 对未来图神经网络发展的展望 (40)一、前言在人工智能领域,图神经网络(Graph Neural Networks, GNNs)作为一种强大的深度学习模型,近年来得到了广泛的关注和研究。
它们能够处理非结构化数据,如社交网络、分子结构、知识图谱等,因此在许多应用中具有重要的地位。
尽管GNNs在学术界和工业界都取得了显著的成功,但它们的原理和应用仍然是一个活跃的研究课题。
特别是对于初学者来说,理解和掌握GNN的原理解析及其在实际问题中的应用,是一个不小的挑战。
为了帮助读者更好地理解GNNs,本文将从基础到高级逐步展开,深入剖析GNN的核心概念、模型架构以及最新的研究进展。
结合具体的代码实现和实验结果,我们将展示GNN在实际应用中的强大能力。
深度学习--深度信念网络(Deep Belief Network)概述深度信念网络(Deep Belief Network, DBN) 由Geoffrey Hinton 在2006 年提出。
它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据。
我们不仅可以使用DBN 识别特征、分类数据,还可以用它来生成数据。
下面的图片展示的是用DBN 识别手写数字:图 1 用深度信念网络识别手写数字。
图中右下角是待识别数字的黑白位图,它的上方有三层隐性神经元。
每一个黑色矩形代表一层神经元,白点代表处于开启状态的神经元,黑色代表处于关闭状态的神经元。
注意顶层神经元的左下方即使别结果,与画面左上角的对应表比对,得知这个DBN 正确地识别了该数字。
下面是展示了一个学习了大量英文维基百科文章的DBN 所生成的自然语言段落:In 1974 Northern Denver had been overshadowed by CNL, and several Irish intelligence agencies in the Mediterranean region. However, on the Victoria, Kings Hebrew stated that Charles decided to escape during analliance. The mansion house was completed in 1882, the second in its bridge are omitted, while closing is the proton reticulum composed below it aims, such that it is the blurring of appearing on any well-paid type of box printer.DBN 由多层神经元构成,这些神经元又分为显性神经元和隐性神经元(以下简称显元和隐元)。
《人工智能概论》课程笔记第一章人工智能概述1.1 人工智能的概念人工智能(Artificial Intelligence,简称AI)是指使计算机具有智能行为的技术。
智能行为包括视觉、听觉、语言、学习、推理等多种能力。
人工智能的研究目标是让计算机能够模拟人类智能的某些方面,从而实现自主感知、自主决策和自主行动。
人工智能的研究领域非常广泛,包括机器学习、计算机视觉、自然语言处理、知识表示与推理等。
1.2 人工智能的产生与发展人工智能的概念最早可以追溯到上世纪50 年代。
1950 年,Alan Turing 发表了著名的论文《计算机器与智能》,提出了“图灵测试”来衡量计算机是否具有智能。
1956 年,在达特茅斯会议上,John McCarthy 等人首次提出了“人工智能”这个术语,并确立了人工智能作为一个独立的研究领域。
人工智能的发展可以分为几个阶段:(1)推理期(1956-1969):主要研究基于逻辑的符号操作和自动推理。
代表性成果包括逻辑推理、专家系统等。
(2)知识期(1970-1980):研究重点转向知识表示和知识工程,出现了专家系统。
代表性成果包括产生式系统、框架等。
(3)机器学习期(1980-1990):机器学习成为人工智能的重要分支,研究如何让计算机从数据中学习。
代表性成果包括决策树、神经网络等。
(4)深度学习期(2006-至今):深度学习技术的出现,推动了计算机视觉、自然语言处理等领域的发展。
代表性成果包括卷积神经网络、循环神经网络等。
1.3 人工智能的三大学派人工智能的研究可以分为三大学派:(1)符号主义学派:认为智能行为的基础是符号操作和逻辑推理。
符号主义学派的研究方法包括逻辑推理、知识表示、专家系统等。
(2)连接主义学派:认为智能行为的基础是神经网络和机器学习。
连接主义学派的研究方法包括人工神经网络、深度学习、强化学习等。
(3)行为主义学派:认为智能行为的基础是感知和行动。
行为主义学派的研究方法包括遗传算法、蚁群算法、粒子群算法等。
[鱼书笔记]深度学习⼊门:基于Python的理论与实现个⼈笔记分享为了完成毕设, 最近开始⼊门深度学习.在此和⼤家分享⼀下本⼈阅读鱼书时的笔记,若有遗漏,欢迎斧正!若转载请注明出处!⼀、感知机感知机(perceptron)接收多个输⼊信号,输出⼀个信号。
如图感知机,其接受两个输⼊信号。
其中θ为阈值,超过阈值神经元就会被激活。
感知机的局限性在于,它只能表⽰由⼀条直线分割的空间,即线性空间。
多层感知机可以实现复杂功能。
⼆、神经⽹络神经⽹络由三部分组成:输⼊层、隐藏层、输出层1. 激活函数激活函数将输⼊信号的总和转换为输出信号,相当于对计算结果进⾏简单筛选和处理。
如图所⽰的激活函数为阶跃函数。
1) sigmoid 函数sigmoid函数是常⽤的神经⽹络激活函数。
其公式为:h(x)=11+e−x如图所⽰,其输出值在 0到 1 之间。
2) ReLU 函数ReLU(Rectified Linear Unit)函数是最近常⽤的激活函数。
3) tanh 函数2. 三层神经⽹络的实现该神经⽹络包括:输⼊层、2 个隐藏层和输出层。
def forward(network, x): # x为输⼊数据# 第1个隐藏层的处理,点乘加上偏置后传⾄激活函数a1 = np.dot(x, W1) + b1z1 = sigmoid(a1)# 第2个隐藏层的处理a2 = np.dot(z1, W2) + b2z2 = sigmoid(a2)#输出层处理 identidy_function原模原样输出a3a3 = np.dot(z2, W3) + b3y = identify_function(a3)return y # y为最终结果3. 输出层激活函数⼀般来说,回归问题选择恒等函数,分类问题选择softmax函数。
softmax函数的公式:y k=e a k ∑n i=1e a i假设输出层有n个神经元,计算第k个神经元的输出y k。
深度神经网络及目标检测学习笔记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进行分类。