深度神经网络及目标检测学习笔记
使用深度学习进行目标检测的步骤
使用深度学习进行目标检测的步骤深度学习是一种应用于机器学习的方法,利用多层神经网络模型来进行模式识别和目标检测。
它通过学习大量数据来提取特征,并训练模型以自动识别和定位图像中的目标物体。
在目标检测任务中,深度学习已经成为一种非常有效的方法,具有识别准确性和泛化能力强的优点。
在本文中,我将分享使用深度学习进行目标检测的步骤,希望能够对您有所帮助。
1. 数据收集和准备:在开始之前,我们需要准备一个用于训练和测试的数据集。
这个数据集应该包含目标物体的图像以及相应的标签或边界框信息。
为了提高模型的性能,数据集的多样性和数量都非常重要。
您可以使用开源数据集,也可以自己手动标注数据。
2. 构建深度学习模型:目前,应用深度学习进行目标检测的最流行模型是卷积神经网络(CNN)。
您可以选择许多不同的CNN结构,如Faster R-CNN、YOLO、SSD等。
这些模型都有自己的优势和特点,根据应用需求选择适合的模型。
3. 数据预处理和增强:在训练模型之前,我们需要对数据进行预处理和增强。
预处理步骤可能包括图像缩放、裁剪和标准化等。
而增强技术,如图像翻转、旋转、平移和亮度调整等,可以增加数据集的多样性,提高模型的鲁棒性。
4. 模型训练:模型训练是深度学习目标检测的关键步骤。
您可以使用已标记的数据集来训练模型,通常采用迭代的方式进行。
在训练期间,模型会根据其预测和真实标签之间的差异进行调整和优化。
为了获得更好的结果,您可以尝试不同的优化算法、学习率调度和损失函数。
5. 模型评估和调优:在模型训练完成后,我们需要对模型进行评估和调优。
这可以通过在测试集上运行模型,并量化其性能来实现。
常用的评估指标包括准确率、召回率、精确率和F1分数等。
如果模型达不到预期的性能,您可以尝试调整网络结构、调整超参数或增加更多的训练数据。
6. 预测和部署:一旦模型训练和调优完成,就可以将其用于实际场景中的目标检测。
您可以将模型应用于新的图像,以检测和定位目标物体。
深度学习基础知识
深度学习基础知识深度学习(Depth Learning)是机器学习的一个重要分支,旨在模仿人类大脑的工作方式,通过神经网络的构建和训练实现智能化的数据分析与决策。
在深度学习的背后,有一些基础知识需要我们掌握,才能更好地理解和应用深度学习技术。
一、神经网络的基本结构神经网络是深度学习的核心,它由多个神经元组成,每个神经元都有激活函数,能接收来自其他神经元的输入,并产生输出。
神经网络通常包括输入层、隐藏层和输出层,其中隐藏层可以有多个。
输入层接受外部数据输入,隐藏层负责对数据进行特征提取和转换,输出层产生最终的结果。
二、梯度下降算法梯度下降算法是深度学习中最基础且最常用的优化算法,用于调整神经网络中各个神经元之间的连接权重,以最小化损失函数。
在训练过程中,通过计算损失函数对权重的偏导数,不断地更新权重值,使得损失函数逐渐减小,模型的性能逐渐提升。
三、反向传播算法反向传播算法是神经网络中用于训练的关键算法,通过将误差从输出层倒推到隐藏层,逐层计算每个神经元的误差贡献,然后根据误差贡献来更新权重值。
反向传播算法的核心思想是链式法则,即将神经网络的输出误差按照权重逆向传播并进行计算。
四、卷积神经网络(CNN)卷积神经网络是一种主要用于图像处理和识别的深度学习模型。
它通过共享权重和局部感受野的方式,有效地提取图像中的特征。
卷积神经网络通常包括卷积层、池化层和全连接层。
其中卷积层用于提取图像中的局部特征,池化层用于降低特征的维度,全连接层用于输出最终的分类结果。
五、循环神经网络(RNN)循环神经网络是一种主要用于序列数据处理的深度学习模型。
它通过引入时间维度,并在每个时间步上传递隐藏状态,实现对序列数据的建模。
循环神经网络可以解决序列数据中的时序依赖问题,适用于音频识别、语言模型等任务。
六、生成对抗网络(GAN)生成对抗网络是一种通过让生成器和判别器相互博弈的方式,实现模型训练和生成样本的深度学习模型。
生成器负责生成与真实样本相似的假样本,判别器负责对真假样本进行分类。
人工神经网络学习总结笔记
人工神经网络学习总结笔记主要侧重点:1.概念清晰2.进行必要的查询时能从书本上找到答案第一章:绪论1.1人工神经网络的概述“认识脑”和“仿脑”:人工智能科学家在了解人脑的工作机理和思维的本质的基础上,探索具有人类智慧的人工智能系统,以模拟延伸和扩展脑功能。
我认为这是人工神经网络研究的前身。
形象思维:不易被模拟人脑思维抽象推理逻辑思维:过程:信息概念最终结果特点:按串行模式人脑与计算机信息处理能力的不同点:方面类型人脑计算机记忆与联想能力可存储大量信息,对信息有筛选、回忆、巩固的联想记忆能力无回忆与联想能力,只可存取信息学习与认知能力具备该能力无该能力信息加工能力具有信息加工能力可认识事物的本质与规律仅限于二值逻辑,有形式逻辑能力,缺乏辩证逻辑能力信息综合能力可以对知识进行归纳类比和概括,是一种对信息进行逻辑加工和非逻辑加工相结合的过程缺乏该能力信息处理速度数值处理等只需串行算法就能解决的应用问题方便,计算机比人脑快,但计算机在处理文字图像、声音等类信息的能力远不如人脑1.1.2人脑与计算机信息处理机制的比较人脑与计算机处理能力的差异最根本的原因就是信息处理机制的不同,主要有四个方面方面类型人脑计算机系统结构有数百亿神经元组成的神经网络由二值逻辑门电路构成的按串行方式工作的逻辑机器信号形式模拟量(特点:具有模糊性。
离散的二进制数和二值逻辑容易被机器模拟的思维方式难以被机器模拟)和脉冲两种形式形式信息储存人脑中的信息分布存储于整个系统,所存储的信息是联想式的有限集中的串行处理机制信息处理机制高度并行的非线性信息处理系统(体现在结构上、信息存储上、信息处理的运行过程中)1.1.3人工神经网络的概念:在对人脑神经网络的基本认识的基础上,用数理方法从信息处理的角度对人脑神经网络进行抽象,并建立某种简化模型,称之为人工神经网络,是对人脑的简化、抽象以及模拟,是一种旨在模仿人脑结构及其功能的信息处理系统。
其他定义:由非常多个非常简单的处理单元彼此按某种方式相互连接而形成的计算系统,外部输入信息之后,系统产生动态响应从而处理信息。
深度学习与目标检测:工具、原理与算法
谢谢观看
8.4.1候选框提取网络 8.4.2 RPN和Fast R-CNN共享特征的方法
8.5.1代码整体结构 8.5.2数据加载 8.5.3构建主干网络 8.5.4候选框提取网络 8.5.5对候选框进行分类和位置校正 8.5.6算法模型架构图
9.2焦点损失函数
9.1特征金字塔
9.3本章小结
9.1.1特征金字塔结构 9.1.2 FPN代码解析
深度学习与目标检测:工具、原理与 算法
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
本书关键字分析思维导图
算法
目标
算法
读者
数据
视觉
网络
目标
目标
技术 小结
模型
深度
检测
工业
算法
方法
第章
卷积
内容摘要
随着深度学习技术的发展、计算能力的提升和视觉数据的增加,计算机视觉技术在图像搜索、智能相册、人 脸闸机、城市智能交通管理、智慧医疗等诸多领域都取得了令人瞩目的成绩。越来越多的人开始**这个领域。计 算机视觉包含多个分支,其中图像分类、目标检测、图像分割、目标跟踪等是计算机视觉领域最重要的几个研究 课题。本书介绍的目标检测技术,本质上就是通过计算机运行特定的算法,检测图像中一些受**的目标。当今时 代,我们很容易在互联网上找到目标检测算法的开源代码,运行代码并不是什么难事,但理解其中的原理却有一 定的难度。我们编写本书的目的就是由浅入深地向读者讲解目标检测技术,用相对通俗的语言来介绍算法的背景 和原理,在读者“似懂非懂”时给出实战案例。实战案例的代码已全部通过线下验证,代码并不复杂,可以很好 地帮助读者理解算法细节,希望读者在学习理论之后可以亲自动手实践。目标检测的理论和实践是相辅相成的, 希望本书可以带领读者走进目标检测的世界。
神经网络与深度学习知识点整理
神经网络与深度学习知识点整理●神经网络基础●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原理解析》随笔
《深入浅出图神经网络: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在实际应用中的强大能力。
基于深度卷积神经网络的光学遥感目标检测技术
ResNet
ResNet通过引入残差连接,解决 了深度神经网络中的梯度消失问题 ,可以构建非常深的网络模型。
Inception
Inception网络通过使用并行卷积和 池化操作来提高网络的速度和准确 率,同时保持模型的较小大小。
深度学习模型的优化方法
正则化
通过在损失函数中添加正则项, 对模型的复杂度进行约束,以避 免过拟合。常见的正则化方法包
05
本研究与已有研究相比的独特 之处及优势
模型结构与性能上的改进
采用了更先进的卷积神经网络结构,如残差网络(ResNet)或DenseNet等,提高 了网络的学习能力和特征提取能力。
引入了注意力机制,使模型能够更好地聚焦于目标区域,降低背景干扰和噪声的影 响。
采用了多尺度特征融合技术,使模型能够同时获取不同尺度的目标信息,提高检测 精度和鲁棒性。
在CNN中,卷积核的参数在整个图像上是 共享的,这大大减少了模型的参数数量, 提高了模型的泛化能力。
多尺度特征
池化层
通过多尺度的卷积核,CNN可以同时提取 图像的多尺度特征。
池化层用于降低特征图的分辨率,从而减 少计算量和避免过拟合。
常见的深度卷积神经网络模型
VGGNet
VGGNet是一种经典的深度卷积 神经网络,通过连续使用小的卷 积核来模拟较大的感受野,具有
采用了先进的损失函数和优化算 法,如交叉熵损失、Dice损失、 Adam优化算法等,提高了模型
的收敛速度和性能。
引入了上下文信息,使模型能够 更好地理解目标和背景之间的关
系,提高检测精度和鲁棒性。
采用了后处理技术,如非极大值 抑制(NMS)、边界框回归等, 进一步优化了检测结果,提高了
传统目标检测算法与目标检测深度学习算法的对比分析
传统目标检测算法与目标检测深度学习算法的对比分析目标检测是计算机视觉中一个重要的问题。
传统的目标检测算法主要包括基于特征的方法和基于分类器的方法两种类型,而目标检测深度学习算法则主要通过卷积神经网络(CNN)实现目标检测。
本文将分析两种算法的优缺点,并探索它们之间的不同。
一、传统目标检测算法1.基于特征的目标检测算法基于特征的算法是通过特定的特征来检测目标。
其中,HOG (Histogram of Oriented Gradient)算法是一种常用的基于特征的方法。
HOG算法提取图像中的梯度方向特征,然后使用SVM分类器来检测目标。
此外,SIFT(Scale-Invariant Feature Transform)和SURF (Speeded Up Robust Features)也是常用的基于特征的算法。
优点:-简单易懂:基于特征的算法的实现很简单,易于理解和实现。
-可处理低分辨率图像:由于该算法使用图像的全局特征,因此可处理低分辨率图像。
缺点:-不适合复杂场景:当存在多个目标时,基于特征的算法很难区分它们。
-鲁棒性差:由于基于特征的算法对光照、旋转等误差敏感,因此鲁棒性差。
2.基于分类器的目标检测算法基于分类器的目标检测算法是将目标检测看作二分类问题。
此类算法主要分为目标候选区域生成方法和强分类器方法。
其中,Haar-like特征和Adaboost分类器是最常用的方法之一。
优点:-鲁棒性强:由于该算法使用复杂的分类器,因此鲁棒性很强,可以处理各种复杂场景。
-相对准确:该算法的准确度相对较高。
缺点:-外部参数过多:基于分类器的算法需要预先定义很多外部参数,这使得该算法的实现相对较为复杂。
-可扩展性差:由于其依赖于复杂分类器的训练数据,因此样本数量很大。
随着训练数据的增加,该算法的实现成本将会更高。
二、目标检测深度学习算法1.卷积神经网络目标检测深度学习算法采用卷积神经网络(CNN)来实现。
CNN的优势在于它能够自动提取图像中的特征,无需人工干预。
神经网络中的目标检测技术详解
神经网络中的目标检测技术详解随着人工智能的快速发展,神经网络在目标检测领域扮演着重要的角色。
目标检测是计算机视觉领域的一个重要任务,它的目标是从图像或视频中准确地识别和定位出感兴趣的目标物体。
本文将详细介绍神经网络中的目标检测技术。
一、传统目标检测方法的挑战在深入讨论神经网络中的目标检测技术之前,我们先来了解一下传统的目标检测方法面临的挑战。
传统的目标检测方法通常基于手工设计的特征和分类器,这种方法的性能受限于特征的表达能力和分类器的泛化能力。
此外,传统方法在处理复杂场景、目标尺度变化和遮挡等问题时效果较差。
二、基于深度学习的目标检测方法近年来,基于深度学习的目标检测方法取得了显著的突破。
这些方法通过神经网络自动学习图像中的特征表示,从而克服了传统方法的局限性。
下面我们将介绍几种常见的基于深度学习的目标检测方法。
1. R-CNN(Region-based Convolutional Neural Networks)R-CNN是一种经典的目标检测方法,它通过候选区域提取、特征提取和目标分类三个步骤来完成目标检测任务。
首先,R-CNN使用选择性搜索等算法生成一系列候选区域。
然后,每个候选区域通过卷积神经网络提取特征表示。
最后,特征表示通过支持向量机(SVM)进行目标分类。
2. Fast R-CNNFast R-CNN是对R-CNN的改进,它通过引入RoI池化层来提高目标检测的速度和准确性。
RoI池化层可以将不同尺寸的候选区域映射为固定尺寸的特征图,从而避免了R-CNN中每个候选区域都需要独立进行特征提取的问题。
3. Faster R-CNNFaster R-CNN是目前最先进的目标检测方法之一,它进一步提高了目标检测的速度和准确性。
Faster R-CNN引入了区域生成网络(RPN),用于自动生成候选区域。
RPN通过滑动窗口的方式在特征图上生成一系列候选区域,并计算每个候选区域是目标的概率。
然后,候选区域通过RoI池化层和全连接层进行特征提取和目标分类。
深度学习 目标检测
深度学习目标检测深度学习是一种通过模拟人脑神经网络原理来进行模式识别和学习的机器学习方法。
目标检测是深度学习在计算机视觉领域中的重要应用之一,旨在从图像或视频中准确地定位和识别出感兴趣的目标物体。
在传统的计算机视觉方法中,目标检测通常是通过手工设计特征和使用分类器来实现的。
但是,这种方法存在着很多局限性,如特征的选择和设计需要专业知识和经验,无法适应不同场景和目标的变化等。
而深度学习通过自动学习特征和目标的表示,可以克服传统方法的这些限制,并在目标检测任务中取得了巨大的成功。
深度学习目标检测主要分为两个阶段:候选区域生成和目标分类。
首先,通过使用深度神经网络模型,如卷积神经网络(CNN),在图像中生成一系列候选区域。
这些候选区域通常是由滑动窗口或选择性搜索等方法生成的,其中每个区域都被认为可能包含目标物体。
然后,通过再次使用深度神经网络对这些候选区域进行目标分类和定位。
对于目标分类,常用的方法是使用卷积神经网络中的全连接层,将候选区域的特征与不同的目标类别进行匹配,并输出一个概率分布。
一般来说,分类器会利用softmax函数对这些概率进行标准化,最终确定每个候选区域所属的目标类别。
在目标定位方面,常用的方法是使用回归模型来预测目标的位置和大小。
具体来说,回归模型会输出一个包含目标边界框的四个坐标值的向量,用来精确定位目标的位置。
目标检测的深度学习模型通常需要大量的标注数据进行训练,以及大量的计算资源进行模型优化和推理。
近年来,随着深度学习的快速发展,许多重要的目标检测算法被提出,如R-CNN、Fast R-CNN、Faster R-CNN、YOLO和SSD等。
总的来说,深度学习在目标检测任务中取得了很大的成功,其准确性和速度已经超越了传统方法。
尽管深度学习目标检测仍然面临一些挑战,如处理遮挡、尺度变化和大规模场景等问题,但随着技术的不断发展,相信深度学习目标检测技术将在未来的应用中发挥越来越重要的作用。
yolo系列知识笔记
yolo系列知识笔记YOLO(YouOnlyLookOnce)是一种基于深度学习的目标检测算法,由Joseph Redmon等人于2015年提出。
相较于传统的目标检测算法,YOLO能够实现实时目标检测,且准确率较高。
在此笔记中,我们将介绍YOLO系列算法的基本原理及其变种。
一、YOLO v1YOLO v1是YOLO系列的第一代算法,其主要思想是将目标检测问题转化为一个回归问题。
具体而言,YOLO将图像分成S×S个网格(grid),每个网格负责检测该网格中是否存在目标,并预测目标的位置和类别。
每个网格中预测B个边界框(bounding box),每个边界框预测5个参数:中心坐标x、y、宽度w、高度h以及目标得分。
目标得分代表该边界框中存在目标的概率,是一个0到1之间的值。
类别预测则是一个C维向量,表示目标属于C个类别中的哪一类。
因此,每个网格的预测结果可以表示为:$P_i$($object$) × $confidence$ × $P_j$($class$) ×$B_{i,j}$其中,$P_i$($object$)是一个二值变量,表示该网格中是否存在目标;$confidence$是该边界框的目标得分;$P_j$($class$)是一个C维向量,表示目标属于C个类别中的哪一类;$B_{i,j}$是一个长度为4的向量,表示该边界框的中心坐标和宽度、高度。
YOLO v1的损失函数包括两部分:定位误差和分类误差。
定位误差是指预测框与实际框之间的误差,可以用均方差(MSE)来度量。
分类误差是指目标类别的误差,可以用交叉熵(Cross-Entropy)来度量。
YOLO v1的总损失函数为:$L=sum_{i=0}^{S^2}sum_{j=0}^{B}[P_i(object)×(B_{i,j}^{coord}widehat{B}_{i,j}^{coord})^2 + P_i(object)×(1B_{i,j}^{object})×(Cwidehat{B}_{i,j}^{object})^2 +P_i(object)×B_{i,j}^{object}×sum_{c=1}^{C}(P_i(class=c)widehat{P}_i(class=c))^2]$ 其中,$B_{i,j}^{coord}$和$widehat{B}_{i,j}^{coord}$分别表示实际框和预测框的中心坐标和宽度、高度;$B_{i,j}^{object}$和$widehat{B}_{i,j}^{object}$分别表示实际框和预测框是否存在目标;$widehat{P}_i(class=c)$表示预测框属于第c类的概率。
基于神经网络的目标检测与识别研究
基于神经网络的目标检测与识别研究随着人工智能技术的不断发展,基于神经网络的目标检测与识别技术也得到了迅速提升。
人工智能技术已经逐渐走出科幻小说,成为现实中的一种重要应用技术。
下面我们将从神经网络的架构、目标检测和识别的原理、应用场景等几个方面来深入探讨基于神经网络的目标检测与识别技术。
一、神经网络的架构神经网络的架构是神经网络算法中的重要部分,它主要由三个部分组成:输入层、隐含层和输出层。
其中,输入层用于输入数据,隐含层是神经网络中最为重要的层,它通过多层非线性变换将输入数据转化为更加抽象化的特征,输出层用于输出最终的结果。
目前,神经网络的架构有很多种,比较流行的有全连接神经网络、卷积神经网络和循环神经网络等。
其中,卷积神经网络是应用最为广泛的一种神经网络模型,它在图像处理、目标检测和识别等领域具有较高的应用价值。
二、目标检测和识别的原理目标检测和识别技术是基于神经网络的应用之一,主要是通过对输入数据进行特征提取和降维,从而实现对目标的自动识别和分类。
在目标检测和识别的过程中,首先需要对输入图像进行预处理,包括去除图像的噪声、图像增强等操作。
然后,对预处理后的图像进行特征提取和降维,可以采用图像处理技术、卷积神经网络等方式,将图像转化为特征向量。
接着,通过分类器对特征向量进行分类,得到目标的识别结果。
目标检测和识别的原理主要是基于机器学习算法实现的,在实际应用中需要根据不同的场景和任务选择不同的算法模型和参数,以达到最优的检测和识别效果。
三、应用场景目标检测和识别技术在现实生活中有着广泛的应用场景。
下面列举几个比较典型的应用场景。
1、智能交通系统。
目标检测和识别技术可以通过对交通监控视频图像的分析和处理,实现交通信号灯控制、路况监测、车辆检测和追踪等功能。
2、安防监控系统。
目标检测和识别技术可以通过对视频图像的处理,实现人脸识别、区域入侵检测、异常行为检测等功能。
3、医疗诊断系统。
目标检测和识别技术可以通过对医学图像的处理,实现疾病诊断、病变分析和手术导航等功能。
深度学习神经网络原理与应用分析
深度学习神经网络原理与应用分析深度学习神经网络是当今最热门的领域之一,其在人工智能、计算机视觉、语音识别和自然语言处理等方面都有广泛的应用。
深度学习的基础是神经网络,本文将对深度学习神经网络的原理与应用进行分析。
一、神经网络的基本结构与原理神经网络是由多个神经元组合而成的网络结构,每个神经元都具有多个输入和一个输出。
神经元接收到多个输入,并将这些输入送入激活函数中进行处理,最终输出一个结果。
多个神经元组成的网络就可以实现更加复杂的功能。
神经网络通常由输入层、中间层和输出层组成。
输入层是神经网络的接口,将外部信息输入到神经网络中;中间层是神经网络的核心,通过多个中间层的组合,可以实现非常复杂的功能;输出层是神经网络的输出接口,将神经网络的输出结果输出到外部。
神经网络的训练过程通常采用反向传播算法,该算法是求解网络的最优权值的一种方法。
在训练过程中,首先对神经网络进行正向传播,得到神经网络的输出结果;然后,将输出结果与期望输出结果进行比较,计算误差;最后,将误差通过反向传播算法传回网络,调整神经元之间的权值,使得误差最小化。
二、深度学习神经网络的应用1.计算机视觉深度学习在计算机视觉领域有着广泛的应用,如图像分类、目标识别和人脸识别等。
目前,卷积神经网络(CNN)已成为计算机视觉领域最常用的深度学习模型。
CNN的特点是可以自动提取图像的特征,并可以逐层提取信息,逐渐深入到图像的各个层次。
通过CNN,可以实现图像分类、目标检测、图像分割等多种计算机视觉任务。
2.语音识别深度学习在语音识别领域的应用也非常广泛。
传统的语音识别方法通常是通过Gaussian混合模型(GMM)和隐马尔可夫模型(HMM)来实现的。
然而,这些方法需要手动提取语音的特征,容易受到噪声和变化的影响。
深度学习神经网络可以自动提取语音的特征,并且对于噪声和变化具有很好的鲁棒性。
目前,深度学习神经网络已经成为语音识别领域最常用的模型之一。
神经网络的基本知识点总结
神经网络的基本知识点总结一、神经元神经元是组成神经网络的最基本单元,它模拟了生物神经元的功能。
神经元接收来自其他神经元的输入信号,并进行加权求和,然后通过激活函数处理得到输出。
神经元的输入可以来自其他神经元或外部输入,它通过一个权重与输入信号相乘并求和,在加上偏置项后,经过激活函数处理得到输出。
二、神经网络结构神经网络可以分为多层,一般包括输入层、隐藏层和输出层。
输入层负责接收外部输入的信息,隐藏层负责提取特征,输出层负责输出最终的结果。
每一层都由多个神经元组成,神经元之间的连接由权重表示,每个神经元都有一个对应的偏置项。
通过调整权重和偏置项,神经网络可以学习并适应不同的模式和规律。
三、神经网络训练神经网络的训练通常是指通过反向传播算法来调整网络中每个神经元的权重和偏置项,使得网络的输出尽可能接近真实值。
神经网络的训练过程可以分为前向传播和反向传播两个阶段。
在前向传播过程中,输入数据通过神经网络的每一层,并得到最终的输出。
在反向传播过程中,通过计算损失函数的梯度,然后根据梯度下降算法调整网络中的权重和偏置项,最小化损失函数。
四、常见的激活函数激活函数负责对神经元的输出进行非线性变换,常见的激活函数有Sigmoid函数、Tanh函数、ReLU函数和Leaky ReLU函数等。
Sigmoid函数将输入限制在[0,1]之间,Tanh函数将输入限制在[-1,1]之间,ReLU函数在输入大于0时输出等于输入,小于0时输出为0,Leaky ReLU函数在输入小于0时有一个小的斜率。
选择合适的激活函数可以使神经网络更快地收敛,并且提高网络的非线性拟合能力。
五、常见的优化器优化器负责更新神经网络中每个神经元的权重和偏置项,常见的优化器有梯度下降法、随机梯度下降法、Mini-batch梯度下降法、动量法、Adam优化器等。
这些优化器通过不同的方式更新参数,以最小化损失函数并提高神经网络的性能。
六、常见的神经网络模型1、全连接神经网络(Fully Connected Neural Network):每个神经元与下一层的每个神经元都有连接,是最基础的神经网络结构。
深度学习笔记(3)神经网络,学习率,激活函数,损失函数
深度学习笔记(3)神经⽹络,学习率,激活函数,损失函数神经⽹络(NN)的复杂度空间复杂度:计算神经⽹络的层数时只统计有运算能⼒的层,输⼊层仅仅起到将数据传输进来的作⽤,没有涉及到运算,所以统计神经⽹络层数时不算输⼊层输⼊层和输出层之间所有层都叫做隐藏层层数 = 隐藏层的层数 + 1个输出层总参数个数 = 总w个数 + 总b个数时间复杂度:乘加运算次数学习率以及参数的更新:w t+1=w t−lr∗∂loss ∂w t指数衰减学习率的选择及设置可以先⽤较⼤的学习率,快速得到较优解,然后逐步减⼩学习率,使模型在训练后期稳定。
指数衰减学习率 = 初始学习率 * 学习率衰减率(当前轮数 / 多少轮衰减⼀次)指数衰减学习率=初始学习率∗学习率衰减率当前轮数多少轮衰减⼀次#学习率衰减import tensorflow as tfw = tf.Variable(tf.constant(5, dtype=tf.float32))epoch = 40LR_BASE = 0.2LR_DECAY = 0.99LR_STEP = 1for epoch in range(epoch):lr = LR_BASE * LR_DECAY**(epoch / LR_STEP)with tf.GradientTape() as tape:loss = tf.square(w + 1)grads = tape.gradient(loss, w)w.assign_sub(lr * grads)print("After %2s epoch,\tw is %f,\tloss is %f\tlr is %f" % (epoch, w.numpy(), loss,lr)) After 0 epoch, w is 2.600000, loss is 36.000000 lr is 0.200000After 1 epoch, w is 1.174400, loss is 12.959999 lr is 0.198000After 2 epoch, w is 0.321948, loss is 4.728015 lr is 0.196020After 3 epoch, w is -0.191126, loss is 1.747547 lr is 0.194060After 4 epoch, w is -0.501926, loss is 0.654277 lr is 0.192119After 5 epoch, w is -0.691392, loss is 0.248077 lr is 0.190198After 6 epoch, w is -0.807611, loss is 0.095239 lr is 0.188296After 7 epoch, w is -0.879339, loss is 0.037014 lr is 0.186413After 8 epoch, w is -0.923874, loss is 0.014559 lr is 0.184549After 9 epoch, w is -0.951691, loss is 0.005795 lr is 0.182703After 10 epoch, w is -0.969167, loss is 0.002334 lr is 0.180876After 11 epoch, w is -0.980209, loss is 0.000951 lr is 0.179068After 12 epoch, w is -0.987226, loss is 0.000392 lr is 0.177277After 13 epoch, w is -0.991710, loss is 0.000163 lr is 0.175504After 14 epoch, w is -0.994591, loss is 0.000069 lr is 0.173749After 15 epoch, w is -0.996452, loss is 0.000029 lr is 0.172012After 16 epoch, w is -0.997660, loss is 0.000013 lr is 0.170292After 17 epoch, w is -0.998449, loss is 0.000005 lr is 0.168589After 19 epoch, w is -0.999308, loss is 0.000001 lr is 0.165234After 20 epoch, w is -0.999535, loss is 0.000000 lr is 0.163581After 21 epoch, w is -0.999685, loss is 0.000000 lr is 0.161946After 22 epoch, w is -0.999786, loss is 0.000000 lr is 0.160326After 23 epoch, w is -0.999854, loss is 0.000000 lr is 0.158723After 24 epoch, w is -0.999900, loss is 0.000000 lr is 0.157136After 25 epoch, w is -0.999931, loss is 0.000000 lr is 0.155564After 26 epoch, w is -0.999952, loss is 0.000000 lr is 0.154009After 27 epoch, w is -0.999967, loss is 0.000000 lr is 0.152469After 28 epoch, w is -0.999977, loss is 0.000000 lr is 0.150944After 29 epoch, w is -0.999984, loss is 0.000000 lr is 0.149434After 30 epoch, w is -0.999989, loss is 0.000000 lr is 0.147940After 31 epoch, w is -0.999992, loss is 0.000000 lr is 0.146461After 32 epoch, w is -0.999994, loss is 0.000000 lr is 0.144996After 33 epoch, w is -0.999996, loss is 0.000000 lr is 0.143546After 34 epoch, w is -0.999997, loss is 0.000000 lr is 0.142111After 35 epoch, w is -0.999998, loss is 0.000000 lr is 0.140690After 36 epoch, w is -0.999999, loss is 0.000000 lr is 0.139283After 37 epoch, w is -0.999999, loss is 0.000000 lr is 0.137890After 38 epoch, w is -0.999999, loss is 0.000000 lr is 0.136511After 39 epoch, w is -0.999999, loss is 0.000000 lr is 0.135146激活函数sigmoid 函数tf.nn. sigmoid(x)f (x )=11+e−x图像:相当于对输⼊进⾏了归⼀化多层神经⽹络更新参数时,需要从输出层往输⼊层⽅向逐层进⾏链式求导,⽽sigmoid 函数的导数输出是0到0.25之间的⼩数,链式求导时,多层导数连续相乘会出现多个0到0.25之间的值连续相乘,结果将趋近于0,产⽣梯度消失,使得参数⽆法继续更新且sigmoid 函数存在幂运算,计算⽐较复杂tanh 函数tf.math. tanh(x)f (x )=1−e −2x1+e−2x图像:和上⾯提到的sigmoid 函数⼀样,同样存在梯度消失和幂运算复杂的缺点Relu 函数tf.nn.relu(x)f (x )=max (x ,0)=0(x <0)时或者x (x >=0)时图像:Relu 函数在正区间内解决了梯度消失的问题,使⽤时只需要判断输⼊是否⼤于0,计算速度快训练参数时的收敛速度要快于sigmoid 函数和tanh 函数输出⾮0均值,收敛慢Dead RelU 问题:送⼊激活函数的输⼊特征是负数时,激活函数输出是0,反向传播得到的梯度是0,致使参数⽆法更新,某些神经元可能永远不会被激活。
(完整版)DeepLearning(深度学习)学习笔记整理系列
Deep Learning(深度学习)学习笔记整理系列目录:一、概述二、背景三、人脑视觉机理四、关于特征4.1、特征表示的粒度4.2、初级(浅层)特征表示4.3、结构性特征表示4.4、需要有多少个特征?五、Deep Learning的基本思想六、浅层学习(Shallow Learning)和深度学习(Deep Learning)七、Deep learning与Neural Network八、Deep learning训练过程8.1、传统神经网络的训练方法8.2、deep learning训练过程九、Deep Learning的常用模型或者方法9.1、AutoEncoder自动编码器9.2、Sparse Coding稀疏编码9.3、Restricted Boltzmann Machine(RBM)限制波尔兹曼机9.4、Deep BeliefNetworks深信度网络9.5、Convolutional Neural Networks卷积神经网络十、总结与展望十一、参考文献和Deep Learning学习资源接上注:下面的两个Deep Learning方法说明需要完善,但为了保证文章的连续性和完整性,先贴一些上来,后面再修改好了。
9.3、Restricted Boltzmann Machine (RBM)限制波尔兹曼机假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann 分布,我们称这个模型是Restricted BoltzmannMachine (RBM)。
下面我们来看看为什么它是Deep Learning方法。
首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连接),即p(h|v)=p(h1|v)…p(h n|v)。
深度学习下的分类,目标检测、语义分割这三个方向具体的概念及其应用场景是什么?
深度学习下的分类,目标检测、语义分割这三个方向具体的概念及其应用场景是什么?随着Halcon新版本的更新,截止2019年5月1号。
Halcon的最新版本为halcon18.11.这次新版本最大的更新在于完整的加入了深度学习在视觉应用的三个重要部分,即目标分类分类、目标检测、语义分割这三个内容。
与此同时超人视觉即将向大家简介Halcon软件这三个方向的应用示例,帮助大家进一步认识到机器视觉的魅力与当前的机器视觉技术的应用前沿。
在开始内容前我们先明确一下前面提到的三个重要概念即深度学习下的分类,目标检测、语义分割这三个方向具体的概念及其应用场景是什么?帮助大家理解其技术的产生背景以及形成自己的理解。
1图像分类图像分类这一类问题常用与区分不同的物品,图像分类,顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。
它是视觉方向的其中一个核心,实际应用广泛。
许多同学在学习计算机视觉中有一个练习题是练习如何区分猫狗如图1所示:我们观察一下这些图片的特点,这些图片各种各样,分辨率也各不相同。
图片中的猫和狗形状、所处位置、体表颜色各不一样。
它们的姿态不同,有的在坐着而有的则不是,它们的情绪可能是开心的也可能是伤心的,猫可能在睡觉,而狗可能在汪汪地叫着。
照片可能以任一焦距从任意角度拍下。
总而言之这些图片有着无限种可能,对于我们人类来说在一系列不同种类的照片中识别出一个场景中的宠物自然是毫不费力的事情,然而这对于一台机器来说可不是一件小事。
实际上,如果要机器实现自动分类,那么我们需要知道如何强有力地描绘出猫和狗的特征,也就是说为什么我们认为这张图片中的是猫,而那张图片中的却是狗。
这个需要描绘每个动物的内在特征。
深度学习目标检测
深度学习目标检测目标检测是深度学习中的一个重要任务,旨在从图像或视频中准确地确定和定位出感兴趣的物体,并为其分配相应的类别标签。
深度学习目标检测方法通过深度神经网络模型的训练和优化,能够在大规模数据集上准确地识别出各种不同类别的目标物体。
深度学习目标检测的主要目标是解决以下几个挑战:1.准确性:目标检测算法需要在各种不同的场景下实现高准确率。
这意味着算法需要能够在复杂背景、低光照、模糊图像等各种挑战性条件下正确地检测目标物体。
2.实时性:目标检测算法需要在实时应用中实现高帧率,以满足实时视频监控、自动驾驶、机器人导航等应用的需求。
实时性要求算法能够快速地对图像进行处理,并在短时间内输出目标的位置和类别信息。
3.多目标检测:目标检测算法需要能够同时检测出图像中的多个目标物体,而不仅仅是单个物体。
多目标检测算法能够准确地确定每个目标的位置和类别,并将它们分配给不同的标签。
为了实现高准确率和实时性的目标检测,研究者们提出了一系列基于深度学习的目标检测方法。
其中最常用的方法包括基于卷积神经网络(CNN)的方法和基于循环神经网络(RNN)的方法。
这些方法通过前向传播和反向传播的过程,优化网络模型的参数,使其能够更好地适应目标检测任务。
在目标检测领域,一些经典的模型包括Faster R-CNN、YOLO、SSD等。
这些模型通过引入一些新的技术和思想,如区域建议网络、多尺度特征融合、目标和背景样本的采样策略等,使得目标检测算法在准确性和实时性方面都有了明显的提升。
此外,最近还出现了一些基于深度学习的目标检测算法扩展,如目标实例分割、人体姿态估计等。
这些算法不仅可以检测目标物体的位置和类别,还能够提供更详细的信息,如目标的边界框、分割掩码和关节位置。
综上所述,深度学习目标检测在计算机视觉领域具有广阔的应用前景。
随着深度学习技术的不断发展和优化,目标检测算法的准确性和实时性都将进一步提升,为各种场景下的目标检测任务提供更好的解决方案。
利用神经网络进行目标检测的方法与技巧
利用神经网络进行目标检测的方法与技巧神经网络目标检测是计算机视觉领域的一个重要研究方向,它的目标是通过训练一个神经网络模型,使其能够自动地从图像或视频中检测出特定的目标物体。
在过去的几十年里,神经网络目标检测已经取得了长足的进步,并在许多实际应用中取得了显著的成果。
本文将介绍一些常用的方法和技巧,帮助读者了解神经网络目标检测的基本原理和实践技巧。
首先,神经网络目标检测的基本原理是将图像输入到一个深度神经网络模型中,通过网络的前向传播过程,得到图像中各个位置的目标物体的类别和位置信息。
常用的神经网络模型包括卷积神经网络(Convolutional Neural Network,简称CNN)和循环神经网络(Recurrent Neural Network,简称RNN)。
其中,CNN主要用于提取图像的特征,而RNN则用于对这些特征进行分类和定位。
在神经网络目标检测中,有几个重要的技巧需要注意。
首先是数据集的准备。
一个好的数据集对于训练一个准确的目标检测模型至关重要。
数据集应包含足够的样本,并且要覆盖到所有可能的目标物体类别和场景。
此外,数据集中的图像应该经过预处理,例如调整大小、裁剪和归一化等,以提高模型的训练效果。
其次是网络模型的选择。
目前,常用的神经网络模型包括Faster R-CNN、YOLO(You Only Look Once)和SSD(Single Shot MultiBox Detector)等。
这些模型在目标检测任务中都取得了不错的性能,但各自有着不同的特点和适用范围。
因此,在实际应用中,需要根据具体的需求选择合适的模型。
另外,网络模型的训练也是一个重要的环节。
在训练过程中,需要选择合适的损失函数和优化算法。
常用的损失函数包括交叉熵损失函数和均方误差损失函数等,而常用的优化算法包括随机梯度下降(Stochastic Gradient Descent,简称SGD)和Adam等。
此外,在训练过程中,还需要设置合适的学习率和迭代次数,以及进行适当的正则化和批量归一化等操作,以提高模型的泛化能力和鲁棒性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深度神经网络及目标检测学习笔记https://youtu.be/MPU2HistivI上面是一段实时目标识别的演示,计算机在视频流上标注出物体的类别,包括人、汽车、自行车、狗、背包、领带、椅子等。
今天的计算机视觉技术已经可以在图片、视频中识别出大量类别的物体,甚至可以初步理解图片或者视频中的内容,在这方面,人工智能已经达到了3岁儿童的智力水平。
这是一个很了不起的成就,毕竟人工智能用了几十年的时间,就走完了人类几十万年的进化之路,并且还在加速发展。
道路总是曲折的,也是有迹可循的。
在尝试了其它方法之后,计算机视觉在仿生学里找到了正确的道路(至少目前看是正确的)。
通过研究人类的视觉原理,计算机利用深度神经网络(DeepNeural Network,NN)实现了对图片的识别,包括文字识别、物体分类、图像理解等。
在这个过程中,神经元和神经网络模型、大数据技术的发展,以及处理器(尤其是GPU)强大的算力,给人工智能技术的发展提供了很大的支持。
本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。
一、神经网络1.1 神经元和神经网络神经元是生物学概念,用数学描述就是:对多个输入进行加权求和,并经过激活函数进行非线性输出。
由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器),可以进行线性分类。
两层神经网络则可以完成复杂一些的工作,比如解决异或问题,而且具有非常好的非线性分类效果。
而多层(两层以上)神经网络,就是所谓的深度神经网络。
神经网络的工作原理就是神经元的计算,一层一层的加权求和、激活,最终输出结果。
深度神经网络中的参数太多(可达亿级),必须靠大量数据的训练来设置。
训练的过程就好像是刚出生的婴儿,在父母一遍遍的重复中学习“这是苹果”、“那是汽车”。
有人说,人工智能很傻嘛,到现在还不如三岁小孩。
其实可以换个角度想:刚出生婴儿就好像是一个裸机,这是经过几十万年的进化才形成的,然后经过几年的学习,就会认识图片和文字了;而深度学习这个“裸机”用了几十年就被设计出来,并且经过几个小时的“学习”,就可以达到这个水平了。
1.2BP算法神经网络的训练就是它的参数不断变化收敛的过程。
像父母教婴儿识图认字一样,给神经网络看一张图并告诉它这是苹果,它就把所有参数做一些调整,使得它的计算结果比之前更接近“苹果”这个结果。
经过上百万张图片的训练,它就可以达到和人差不多的识别能力,可以认出一定种类的物体。
这个过程是通过反向传播(BackPropagation,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)和平均池化(AveragePool ing)。
一个2×2最大池化的示例如下图。
最后是全连接层,它将前面卷积层提取的特征映射到样本标记空间,它输出一个分类的概率,也就是最终的结果。
2.3典型的CNN模型LeNet,最早用于数字识别的CNN,用5×5卷积核,2×2最大池化,识别输入为28×28的灰度点阵,网络结构是(CONV—POOL—CONV—POOL—CONV—FC)。
AlexNet,2012ImageNet比赛第一名,准确度超过第二名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。
PASCALVOC:图片集包括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,meanAverage Precision,平均精度均值。
是对多个验证集求PR曲线的均值。
PR曲线是Precision和Recall作为横纵坐标轴的曲线,Precision是准确率,即检测出的样本有多少是正确的,Recall是召回率,即应该被检测出的样本有多少被检测出来。
PR曲线越高,说明算法越好,即又多又准。
3.2典型的算法从2014年的R-CNN(Region proposal+CNN)开始,出现了一系列目标检测算法,从R-CNN到fast R-CNN和fasterR-CNN,以及SPP-NET,R-FCN,还有YOLOv1~v3和SSD、DSSD。
R-CNN:采用selectivesearch方法(一种RegionProposal方法,Region Proposal的方法有selective search、edge box)进行区域选择,选出2000个左右。
将每个区域缩放至227×227,再送入CNN计算特征,最后由SVM(支持向量机)分类。
很明显,R-CNN很慢。
SPP-NET:为了加快R-CNN的速度,采取对一副图像的多个RegionProposal一次提取特征。
这就要求网络必须适应不同尺寸的图像。
方法是在全连接层之前加入一个网络层,让它对任意尺寸的输入产生固定的输出(将图像分成16、4、1个块)。
SPP-NET训练步骤繁琐,并且仍然不够快。
fastR-CNN:与R-CNN相比,fast R-CNN在最后一个卷积层后加了一个ROI pooling layer,同时损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练,最后用softmax替代SVM进行分类。